You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+7-19Lines changed: 7 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,9 +11,10 @@ básicamente é um serviço de notificações totalmente criado com Node e o Fra
11
11
Fala Dev!
12
12
13
13
Que evento incrível 🚀🚀
14
+
14
15
Mais uma vez queria agradecer a Rocketseat por sempre estar se superando e melhorando para trazer conteúdos relevantes e atualizados, e também queria agradecer o Diego pela sua metodologia incrível!!
15
16
16
-
Depois das 3 aulas tivemos a live After Ignite Lab qua faz o encerramento do evento e implementa o Kafka.
17
+
Depois das aulas tivemos a live que faz o encerramento do evento e implementa o Kafka.
17
18
18
19
Mas o que é o Kafka?
19
20
@@ -23,11 +24,7 @@ Mas por que utilizar o Kafka?
23
24
24
25
Pense na seguinte situação:
25
26
26
-
Nós temos 2 microsserviços, um para receber as compras do usuário e esse serviço vai ter um banco de dados próprio que vai armazenar os dados de compra e imaginem que temos um outro microsserviço para emissão de nota fiscal eletrônica.
27
-
28
-
No Frontend da aplicação, quando a pessoa vai realizar uma compra não faz sentido
29
-
o Front ter que fazer a requisição para os dois serviços, porque principalmente a emissão da nota fiscal eletrônica não pode ser feita antes da compra ser efetuada, pois no serviço de compra: a compra vai ser processada, vai validar os dados de pagamento e depois de tudo isso vai emitir a nota fiscal eletrônica, ou seja, a nota fiscal é uma consequência da compra. A ideia que temos dentro de microsserviços é que eles se intercomunicam.
30
-
Então quando o usuário faz a compra, depois que a compra foi processada, o serviço de compras avisa o serviço de nota fiscal que houve uma nova compra, o serviço de nota fiscal gera a nota fiscal(PDF por exemplo) e envia isso por email para o usuário.
27
+
Nós temos 2 microsserviços, um para receber as compras do usuário e esse serviço vai ter um banco de dados próprio que vai armazenar os dados de compra e imaginem que temos um outro microsserviço para emissão de nota fiscal eletrônica. Então quando o usuário faz a compra, depois que a compra foi processada, o serviço de compras avisa o serviço de nota fiscal que houve uma nova compra, o serviço de nota fiscal gera a nota fiscal e envia isso por email para o usuário.
31
28
32
29
Os serviços são totalmente independentes, ou seja, um não depende do outro para funcionar se por algum motivo o serviço de nota fiscal estiver fora do ar, o serviço de compras não vai ser afetado.
33
30
@@ -37,25 +34,15 @@ Mas o que aconteceria se o serviço de nota fiscal estiver fora do ar?
37
34
38
35
Producers(Produtores): é todo mundo que envia eventos, ou seja, pegando o exemplo acima o producer vai ser o serviço de compras.
39
36
40
-
Consumers(Consumidores): é todo mundo que recebe(consome) eventos, ou seja, pegando o exemplo acima o consumer vai ser o serviço de nota fiscal eletrônica.
37
+
Consumers(Consumidores): é todo mundo que consome eventos, ou seja, pegando o exemplo acima o consumer vai ser o serviço de nota fiscal eletrônica.
41
38
42
39
Topics: os tópicos são os tipos de mensagem que podemos transitar entre os dois lados(producers e consumers).
43
40
44
-
Toda vez que o serviço de compras for enviar uma mensagem para o serviço de nota fiscal eletrônica, ele precisa dizer qual o tópico que está sendo enviado, nesse caso temos apenas um único tópico, um único evento que é o de compra, ou seja, toda vez que ouver uma compra o serviço de compras vai enviar um evento para o tópico chamado compra e o tópico no Kafka funciona como um banco de dados, cada tópico no Kafka é como se fosse uma tabela.
45
-
46
-
Quando o serviço de compras chama o tópico de compra, envia um evento informando a nova compra, ele vai enviar junto todas as informações daquela compra e o kafka armazena essas informações dentro de um banco de dados próprio, onde cada tabela é como se fosse um tópico.
47
-
48
-
A ideia dos consumers como o próprio nome já diz é ao invés do kafka avisar que houve uma nova compra para os consumers, como o nome deles já diz, eles são consumidores, ou seja, o caminho é inverso cada consumer busca em tempo real do kafka as novas mensagens.
41
+
Toda vez que o serviço de compras for enviar uma mensagem para o serviço de nota fiscal eletrônica, ele precisa dizer qual o tópico que está sendo enviado, nesse caso temos apenas um único tópico, que é o de compra, ou seja, toda vez que ouver uma compra o serviço de compras vai enviar um evento para o tópico chamado compra informando a nova compra, ele vai enviar junto todas as informações daquela compra e o tópico no Kafka funciona como um banco de dados, cada tópico no Kafka é como se fosse uma tabela.
49
42
50
43
Mas o que ganhamos com isso?
51
44
52
-
Se por algum motivo quando houve uma nova compra o serviço de nota fiscal estiver fora do ar, no modelo onde o kafka avisaria esse serviço ele teria um erro, quando temos o comportamento de pulling, ou seja, o consumer buscar a informação ao invés de push onde a informação é enviada para o consumer, nos ganhamos muito mais tolerância a falha, porque se o serviço de nota fiscal estiver fora do ar os outros serviços(consumers) vão conseguir tranquilamente buscar dados da compra, e quando o serviço de nota fiscal eletrônica voltar ao ar ele vai buscar todas as mensagens que ele não consumiu ainda.
53
-
54
-
Mas como o serviço sabe quais as mensagens que ele não consumiu ainda?
55
-
56
-
Quando criamos o consumer nos colocamos um ID, cada um dos consumers tem um ID e no Kafka fica salvo esses ID, basicamenta funcioanria assim:
57
-
58
-
O ID do consumer de nota fiscal consumiu apenas até a mensagem 3, já algum outro consumer consumiu até a mensagem 5, quando o serviço de nota fiscal voltar ao ar ele vai no Kafka e o Kafka vai verificar quantas mensagens ele consumiu e se ele não consumiu alguma o Kafka vai devolver as mensagens não consumidas(nesse caso seria 2).
45
+
Se por algum motivo quando houve uma nova compra o serviço de nota fiscal estiver fora do ar, no modelo onde o kafka avisaria esse serviço ele teria um erro, quando temos o comportamento de pulling, ou seja, o consumer buscar a informação ao invés de push onde a informação é enviada para o consumer, nos ganhamos muito mais tolerância a falha, porque se o serviço de nota fiscal estiver fora do ar os outros serviços(consumers) vão conseguir tranquilamente buscar dados da compra, e quando o serviço de nota fiscal voltar ao ar ele vai buscar todas as mensagens que ele não consumiu ainda.
59
46
60
47
Existem vários outros conceitos quando falamos sobre escala com Kafka mas o core é isso.
61
48
</LINKEDIN>
@@ -67,6 +54,7 @@ Existem vários outros conceitos quando falamos sobre escala com Kafka mas o cor
0 commit comments