SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
@waldyrfelix
@waldyrfelix
@waldyrfelix
dev.to/wfelix
Head de Arquitetura de Software no
LinkApi, mais de 13 anos
desenvolvendo produtos escaláveis,
eterno estudante, professor e
palestrante.
Volume
● 1.4 trilhões de mensagens por dia
● 175 terabytes trafegados por dia
● picos de 13 milhões de msg/s
● aproximadamente 2,75 GB/s
Sem o Kafka o LinkedIn não seria capaz de
suportar o próprio crescimento
1. Kafka foi desenhado para mover
dados em alta performance
2. Distribuído nativamente e por padrão,
garantindo recuperação de falhas
3. Tem sido utilizado como
“single source of truth”
1. Flexível para publish/subscribe
2. Baixo acoplamento
3. Escalável horizontalmente
4. Alta vazão de dados (throughput)
5. Reliable & Durable
6. Usa tópicos ao invés de filas
Aplicações mais comuns:
● Message broker
● Storage system
● Streams processor
API Producer permite que aplicações
possam enviar streams para os tópicos
do Kafka.
Já as aplicações que lêem dados do
Kafka usam a API Consumer.
Para realizar operações com input e output
de dados sem tirar as mensagens do Kafka
usa-se a API de Streams.
A extração de dados de sistemas ou banco
de dados existentes pode ser feita usando
API Connectors.
Um topic é um stream que atua como
um banco de dados;
Possui armazenamento persistente;
Um tópico tem diversas partições, cada
uma definida por um número;
A quantidade de partições é definida na
criação do tópico.
As partições são independentes;
Ordenadas e a sequência dos registros
são imutáveis;
O offset é posição de um registro na
partição, ID sequencial e único do dado.
Os producers adicionam registros ao
stream sempre na cauda da partição;
Os consumers controlam o offset que
desejam ler;
Os consumers podem ler e reler as
mensagens sem “perdê-las”;
É possível criar consumer groups.
Se todos os consumers estiverem dentro
do mesmo consumer group, as mensagens
são entregues separadamente como um
load balancer.
Mas se os consumers estiverem em
consumer groups diferentes, as mensagens
são entregues para todos como um
broadcast.
Cada partição é replicada em diversos
brokers, de acordo o replication-factor;
Isto garante que um dado nunca seja
perdido;
Cluster possui a estratégia de
controllers, leaders e followers.
Implementando
um Pub/Sub
com Kafka
Criar conta no
https://confluent.cloud
npm install node-rdkafka --save
github.com/waldyrfelix/rocketseat-kafka
file: .env
KAFKA_URI = <host>
KAFKA_KEY = <key>
KAFKA_SECRET = <secret>
KAFKA_TOPIC = <topic>
KAFKA_CONSUMER_GROUP = <consumer-group>
Obrigado :)
dev.to/wfelix
insta / twitter / linkedin
@waldyrfelix

Weitere ähnliche Inhalte

Was ist angesagt?

Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache KafkaJeff Holoman
 
Troubleshooting Kafka's socket server: from incident to resolution
Troubleshooting Kafka's socket server: from incident to resolutionTroubleshooting Kafka's socket server: from incident to resolution
Troubleshooting Kafka's socket server: from incident to resolutionJoel Koshy
 
Log analysis using Logstash,ElasticSearch and Kibana
Log analysis using Logstash,ElasticSearch and KibanaLog analysis using Logstash,ElasticSearch and Kibana
Log analysis using Logstash,ElasticSearch and KibanaAvinash Ramineni
 
Stream processing using Kafka
Stream processing using KafkaStream processing using Kafka
Stream processing using KafkaKnoldus Inc.
 
No data loss pipeline with apache kafka
No data loss pipeline with apache kafkaNo data loss pipeline with apache kafka
No data loss pipeline with apache kafkaJiangjie Qin
 
Getting Started with Confluent Schema Registry
Getting Started with Confluent Schema RegistryGetting Started with Confluent Schema Registry
Getting Started with Confluent Schema Registryconfluent
 
Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...
Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...
Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...confluent
 
Criação de uma base de dados para gestão de uma biblioteca
Criação de uma base de dados para gestão de uma bibliotecaCriação de uma base de dados para gestão de uma biblioteca
Criação de uma base de dados para gestão de uma bibliotecaDavid Canjamba 2D
 
TypeScript - Olhe teu tipo, script slides
TypeScript - Olhe teu tipo, script slidesTypeScript - Olhe teu tipo, script slides
TypeScript - Olhe teu tipo, script slidesSuissa
 
Kafka: All an engineer needs to know
Kafka: All an engineer needs to knowKafka: All an engineer needs to know
Kafka: All an engineer needs to knowThao Huynh Quang
 
Common issues with Apache Kafka® Producer
Common issues with Apache Kafka® ProducerCommon issues with Apache Kafka® Producer
Common issues with Apache Kafka® Producerconfluent
 
Apache Kafka - Martin Podval
Apache Kafka - Martin PodvalApache Kafka - Martin Podval
Apache Kafka - Martin PodvalMartin Podval
 
Multi cluster, multitenant and hierarchical kafka messaging service slideshare
Multi cluster, multitenant and hierarchical kafka messaging service   slideshareMulti cluster, multitenant and hierarchical kafka messaging service   slideshare
Multi cluster, multitenant and hierarchical kafka messaging service slideshareAllen (Xiaozhong) Wang
 
Exactly-once Semantics in Apache Kafka
Exactly-once Semantics in Apache KafkaExactly-once Semantics in Apache Kafka
Exactly-once Semantics in Apache Kafkaconfluent
 
Rabbitmq & Kafka Presentation
Rabbitmq & Kafka PresentationRabbitmq & Kafka Presentation
Rabbitmq & Kafka PresentationEmre Gündoğdu
 
Stream Processing with Apache Kafka and .NET
Stream Processing with Apache Kafka and .NETStream Processing with Apache Kafka and .NET
Stream Processing with Apache Kafka and .NETconfluent
 
The RabbitMQ Message Broker
The RabbitMQ Message BrokerThe RabbitMQ Message Broker
The RabbitMQ Message BrokerMartin Toshev
 

Was ist angesagt? (20)

Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
 
Troubleshooting Kafka's socket server: from incident to resolution
Troubleshooting Kafka's socket server: from incident to resolutionTroubleshooting Kafka's socket server: from incident to resolution
Troubleshooting Kafka's socket server: from incident to resolution
 
Log analysis using Logstash,ElasticSearch and Kibana
Log analysis using Logstash,ElasticSearch and KibanaLog analysis using Logstash,ElasticSearch and Kibana
Log analysis using Logstash,ElasticSearch and Kibana
 
Stream processing using Kafka
Stream processing using KafkaStream processing using Kafka
Stream processing using Kafka
 
No data loss pipeline with apache kafka
No data loss pipeline with apache kafkaNo data loss pipeline with apache kafka
No data loss pipeline with apache kafka
 
Getting Started with Confluent Schema Registry
Getting Started with Confluent Schema RegistryGetting Started with Confluent Schema Registry
Getting Started with Confluent Schema Registry
 
Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...
Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...
Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...
 
Criação de uma base de dados para gestão de uma biblioteca
Criação de uma base de dados para gestão de uma bibliotecaCriação de uma base de dados para gestão de uma biblioteca
Criação de uma base de dados para gestão de uma biblioteca
 
TypeScript - Olhe teu tipo, script slides
TypeScript - Olhe teu tipo, script slidesTypeScript - Olhe teu tipo, script slides
TypeScript - Olhe teu tipo, script slides
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
 
Kafka: All an engineer needs to know
Kafka: All an engineer needs to knowKafka: All an engineer needs to know
Kafka: All an engineer needs to know
 
Common issues with Apache Kafka® Producer
Common issues with Apache Kafka® ProducerCommon issues with Apache Kafka® Producer
Common issues with Apache Kafka® Producer
 
Apache Kafka - Martin Podval
Apache Kafka - Martin PodvalApache Kafka - Martin Podval
Apache Kafka - Martin Podval
 
Multi cluster, multitenant and hierarchical kafka messaging service slideshare
Multi cluster, multitenant and hierarchical kafka messaging service   slideshareMulti cluster, multitenant and hierarchical kafka messaging service   slideshare
Multi cluster, multitenant and hierarchical kafka messaging service slideshare
 
Exactly-once Semantics in Apache Kafka
Exactly-once Semantics in Apache KafkaExactly-once Semantics in Apache Kafka
Exactly-once Semantics in Apache Kafka
 
QCon London.pdf
QCon London.pdfQCon London.pdf
QCon London.pdf
 
Rabbitmq & Kafka Presentation
Rabbitmq & Kafka PresentationRabbitmq & Kafka Presentation
Rabbitmq & Kafka Presentation
 
Kafka at scale facebook israel
Kafka at scale   facebook israelKafka at scale   facebook israel
Kafka at scale facebook israel
 
Stream Processing with Apache Kafka and .NET
Stream Processing with Apache Kafka and .NETStream Processing with Apache Kafka and .NET
Stream Processing with Apache Kafka and .NET
 
The RabbitMQ Message Broker
The RabbitMQ Message BrokerThe RabbitMQ Message Broker
The RabbitMQ Message Broker
 

Ähnlich wie Apache Kafka: Comunicando microsserviços com performance

Descomplicando Apache Kafka
Descomplicando Apache KafkaDescomplicando Apache Kafka
Descomplicando Apache KafkaFelipe Lopes
 
Kafka: Uma introdução para Desenvolvedores e Arquitetos
 Kafka: Uma introdução para Desenvolvedores e Arquitetos Kafka: Uma introdução para Desenvolvedores e Arquitetos
Kafka: Uma introdução para Desenvolvedores e ArquitetosVictor Osorio
 
Aplicações Distribuídas com .NET e Apache Kafka
Aplicações Distribuídas com .NET e Apache KafkaAplicações Distribuídas com .NET e Apache Kafka
Aplicações Distribuídas com .NET e Apache KafkaGustavo Bellini Bigardi
 
Scale out database apps através de galera cluster e maria db
Scale out database apps através de galera cluster e maria dbScale out database apps através de galera cluster e maria db
Scale out database apps através de galera cluster e maria dbFrancisco Gonçalves
 
7.Troca de mensagem (Message Parsing).pdf
7.Troca de mensagem (Message Parsing).pdf7.Troca de mensagem (Message Parsing).pdf
7.Troca de mensagem (Message Parsing).pdfManoel Ribeiro
 
Sistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando ProgramasSistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando ProgramasLuiz Arthur
 
Controle de versão
Controle de versãoControle de versão
Controle de versãoZé Pereira
 
Web Training Aula 04: Introduction to Git
Web Training Aula 04: Introduction to GitWeb Training Aula 04: Introduction to Git
Web Training Aula 04: Introduction to GitMozDevz
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.Filipe Morelli
 
Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)
Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)
Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)Aryel Tupinambá
 
Programação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaProgramação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaRosicleia Frasson
 
Congresso iii unifacsv3
Congresso iii unifacsv3Congresso iii unifacsv3
Congresso iii unifacsv3IP10
 
Congresso iv
Congresso ivCongresso iv
Congresso ivIP10
 
Bancodedadosesgbds 140326151327-phpapp01
Bancodedadosesgbds 140326151327-phpapp01Bancodedadosesgbds 140326151327-phpapp01
Bancodedadosesgbds 140326151327-phpapp01Sugizo Akino
 
Overview de Drupal pela Just Digital
Overview de Drupal pela Just DigitalOverview de Drupal pela Just Digital
Overview de Drupal pela Just DigitalJust Digital
 

Ähnlich wie Apache Kafka: Comunicando microsserviços com performance (20)

Descomplicando Apache Kafka
Descomplicando Apache KafkaDescomplicando Apache Kafka
Descomplicando Apache Kafka
 
Kafka: Uma introdução para Desenvolvedores e Arquitetos
 Kafka: Uma introdução para Desenvolvedores e Arquitetos Kafka: Uma introdução para Desenvolvedores e Arquitetos
Kafka: Uma introdução para Desenvolvedores e Arquitetos
 
Aplicações Distribuídas com .NET e Apache Kafka
Aplicações Distribuídas com .NET e Apache KafkaAplicações Distribuídas com .NET e Apache Kafka
Aplicações Distribuídas com .NET e Apache Kafka
 
Scale out database apps através de galera cluster e maria db
Scale out database apps através de galera cluster e maria dbScale out database apps através de galera cluster e maria db
Scale out database apps através de galera cluster e maria db
 
Kafka streams
Kafka streamsKafka streams
Kafka streams
 
7.Troca de mensagem (Message Parsing).pdf
7.Troca de mensagem (Message Parsing).pdf7.Troca de mensagem (Message Parsing).pdf
7.Troca de mensagem (Message Parsing).pdf
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Sistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando ProgramasSistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando Programas
 
Controle de versão
Controle de versãoControle de versão
Controle de versão
 
Git hub and Laravel
Git hub and Laravel Git hub and Laravel
Git hub and Laravel
 
Web Training Aula 04: Introduction to Git
Web Training Aula 04: Introduction to GitWeb Training Aula 04: Introduction to Git
Web Training Aula 04: Introduction to Git
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.
 
Material Seminário NoSQL
Material Seminário NoSQLMaterial Seminário NoSQL
Material Seminário NoSQL
 
Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)
Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)
Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)
 
Programação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaProgramação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com Java
 
Documento SpagoBI
Documento SpagoBIDocumento SpagoBI
Documento SpagoBI
 
Congresso iii unifacsv3
Congresso iii unifacsv3Congresso iii unifacsv3
Congresso iii unifacsv3
 
Congresso iv
Congresso ivCongresso iv
Congresso iv
 
Bancodedadosesgbds 140326151327-phpapp01
Bancodedadosesgbds 140326151327-phpapp01Bancodedadosesgbds 140326151327-phpapp01
Bancodedadosesgbds 140326151327-phpapp01
 
Overview de Drupal pela Just Digital
Overview de Drupal pela Just DigitalOverview de Drupal pela Just Digital
Overview de Drupal pela Just Digital
 

Mehr von Waldyr Felix

Kubernetes: Escalando containers do Docker
Kubernetes: Escalando containers do DockerKubernetes: Escalando containers do Docker
Kubernetes: Escalando containers do DockerWaldyr Felix
 
A história do LinkApi, como chegamos numa arquitetura para suportar 1 milhão ...
A história do LinkApi, como chegamos numa arquitetura para suportar 1 milhão ...A história do LinkApi, como chegamos numa arquitetura para suportar 1 milhão ...
A história do LinkApi, como chegamos numa arquitetura para suportar 1 milhão ...Waldyr Felix
 
HTTP/2. O que você precisa saber a nova versão do HTTP.
HTTP/2. O que você precisa saber a nova versão do HTTP.HTTP/2. O que você precisa saber a nova versão do HTTP.
HTTP/2. O que você precisa saber a nova versão do HTTP.Waldyr Felix
 
ECMAScript 6 / ECMAScript 2015 no Node.js
ECMAScript 6 / ECMAScript 2015 no Node.jsECMAScript 6 / ECMAScript 2015 no Node.js
ECMAScript 6 / ECMAScript 2015 no Node.jsWaldyr Felix
 
Performance do ASP.NET Core, um comparativo com Node.js
Performance do ASP.NET Core, um comparativo com Node.jsPerformance do ASP.NET Core, um comparativo com Node.js
Performance do ASP.NET Core, um comparativo com Node.jsWaldyr Felix
 
Ionic + Cordova para Desenvolvimento Mobile
Ionic + Cordova para Desenvolvimento MobileIonic + Cordova para Desenvolvimento Mobile
Ionic + Cordova para Desenvolvimento MobileWaldyr Felix
 
Microservices com ASP.NET 5
Microservices com ASP.NET 5Microservices com ASP.NET 5
Microservices com ASP.NET 5Waldyr Felix
 
ASP.NET SignalR + SPA com AngularJS
ASP.NET SignalR + SPA com AngularJSASP.NET SignalR + SPA com AngularJS
ASP.NET SignalR + SPA com AngularJSWaldyr Felix
 
Escalando Aplicações com Redis
Escalando Aplicações com RedisEscalando Aplicações com Redis
Escalando Aplicações com RedisWaldyr Felix
 
Sistema de Notificações com SignalR TDC 2014
Sistema de Notificações com SignalR TDC 2014Sistema de Notificações com SignalR TDC 2014
Sistema de Notificações com SignalR TDC 2014Waldyr Felix
 
ASP.NET MVC & Entity Framework
ASP.NET MVC & Entity FrameworkASP.NET MVC & Entity Framework
ASP.NET MVC & Entity FrameworkWaldyr Felix
 
Produtividade na criação de websites com ASP.NET MVC
Produtividade na criação de websites com ASP.NET MVCProdutividade na criação de websites com ASP.NET MVC
Produtividade na criação de websites com ASP.NET MVCWaldyr Felix
 
Trilha .NET - REST na plataforma Microsoft com ASP.NET Web API
Trilha .NET - REST na plataforma Microsoft com ASP.NET Web APITrilha .NET - REST na plataforma Microsoft com ASP.NET Web API
Trilha .NET - REST na plataforma Microsoft com ASP.NET Web APIWaldyr Felix
 
Explorando Microsoft Fakes
Explorando Microsoft FakesExplorando Microsoft Fakes
Explorando Microsoft FakesWaldyr Felix
 
Usando Scrum com Team Foundation Server 2012
Usando Scrum com Team Foundation Server 2012Usando Scrum com Team Foundation Server 2012
Usando Scrum com Team Foundation Server 2012Waldyr Felix
 
ASP.NET WebAPI HTTP Basic Auth
ASP.NET WebAPI HTTP Basic AuthASP.NET WebAPI HTTP Basic Auth
ASP.NET WebAPI HTTP Basic AuthWaldyr Felix
 

Mehr von Waldyr Felix (20)

Kubernetes: Escalando containers do Docker
Kubernetes: Escalando containers do DockerKubernetes: Escalando containers do Docker
Kubernetes: Escalando containers do Docker
 
A história do LinkApi, como chegamos numa arquitetura para suportar 1 milhão ...
A história do LinkApi, como chegamos numa arquitetura para suportar 1 milhão ...A história do LinkApi, como chegamos numa arquitetura para suportar 1 milhão ...
A história do LinkApi, como chegamos numa arquitetura para suportar 1 milhão ...
 
HTTP/2. O que você precisa saber a nova versão do HTTP.
HTTP/2. O que você precisa saber a nova versão do HTTP.HTTP/2. O que você precisa saber a nova versão do HTTP.
HTTP/2. O que você precisa saber a nova versão do HTTP.
 
ECMAScript 6 / ECMAScript 2015 no Node.js
ECMAScript 6 / ECMAScript 2015 no Node.jsECMAScript 6 / ECMAScript 2015 no Node.js
ECMAScript 6 / ECMAScript 2015 no Node.js
 
Performance do ASP.NET Core, um comparativo com Node.js
Performance do ASP.NET Core, um comparativo com Node.jsPerformance do ASP.NET Core, um comparativo com Node.js
Performance do ASP.NET Core, um comparativo com Node.js
 
Ionic + Cordova para Desenvolvimento Mobile
Ionic + Cordova para Desenvolvimento MobileIonic + Cordova para Desenvolvimento Mobile
Ionic + Cordova para Desenvolvimento Mobile
 
Microservices com ASP.NET 5
Microservices com ASP.NET 5Microservices com ASP.NET 5
Microservices com ASP.NET 5
 
ASP.NET SignalR + SPA com AngularJS
ASP.NET SignalR + SPA com AngularJSASP.NET SignalR + SPA com AngularJS
ASP.NET SignalR + SPA com AngularJS
 
Escalando Aplicações com Redis
Escalando Aplicações com RedisEscalando Aplicações com Redis
Escalando Aplicações com Redis
 
Sistema de Notificações com SignalR TDC 2014
Sistema de Notificações com SignalR TDC 2014Sistema de Notificações com SignalR TDC 2014
Sistema de Notificações com SignalR TDC 2014
 
ASP.NET MVC 5.x
ASP.NET MVC 5.xASP.NET MVC 5.x
ASP.NET MVC 5.x
 
ASP.NET MVC & Entity Framework
ASP.NET MVC & Entity FrameworkASP.NET MVC & Entity Framework
ASP.NET MVC & Entity Framework
 
ASP.NET WEB API
ASP.NET WEB APIASP.NET WEB API
ASP.NET WEB API
 
Produtividade na criação de websites com ASP.NET MVC
Produtividade na criação de websites com ASP.NET MVCProdutividade na criação de websites com ASP.NET MVC
Produtividade na criação de websites com ASP.NET MVC
 
Trilha .NET - REST na plataforma Microsoft com ASP.NET Web API
Trilha .NET - REST na plataforma Microsoft com ASP.NET Web APITrilha .NET - REST na plataforma Microsoft com ASP.NET Web API
Trilha .NET - REST na plataforma Microsoft com ASP.NET Web API
 
Asp.net web api
Asp.net web apiAsp.net web api
Asp.net web api
 
Explorando Microsoft Fakes
Explorando Microsoft FakesExplorando Microsoft Fakes
Explorando Microsoft Fakes
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web API
 
Usando Scrum com Team Foundation Server 2012
Usando Scrum com Team Foundation Server 2012Usando Scrum com Team Foundation Server 2012
Usando Scrum com Team Foundation Server 2012
 
ASP.NET WebAPI HTTP Basic Auth
ASP.NET WebAPI HTTP Basic AuthASP.NET WebAPI HTTP Basic Auth
ASP.NET WebAPI HTTP Basic Auth
 

Apache Kafka: Comunicando microsserviços com performance

  • 1.
  • 2. @waldyrfelix @waldyrfelix @waldyrfelix dev.to/wfelix Head de Arquitetura de Software no LinkApi, mais de 13 anos desenvolvendo produtos escaláveis, eterno estudante, professor e palestrante.
  • 3. Volume ● 1.4 trilhões de mensagens por dia ● 175 terabytes trafegados por dia ● picos de 13 milhões de msg/s ● aproximadamente 2,75 GB/s
  • 4. Sem o Kafka o LinkedIn não seria capaz de suportar o próprio crescimento
  • 5.
  • 6. 1. Kafka foi desenhado para mover dados em alta performance 2. Distribuído nativamente e por padrão, garantindo recuperação de falhas 3. Tem sido utilizado como “single source of truth”
  • 7. 1. Flexível para publish/subscribe 2. Baixo acoplamento 3. Escalável horizontalmente 4. Alta vazão de dados (throughput) 5. Reliable & Durable 6. Usa tópicos ao invés de filas
  • 8. Aplicações mais comuns: ● Message broker ● Storage system ● Streams processor
  • 9.
  • 10. API Producer permite que aplicações possam enviar streams para os tópicos do Kafka. Já as aplicações que lêem dados do Kafka usam a API Consumer.
  • 11. Para realizar operações com input e output de dados sem tirar as mensagens do Kafka usa-se a API de Streams. A extração de dados de sistemas ou banco de dados existentes pode ser feita usando API Connectors.
  • 12.
  • 13. Um topic é um stream que atua como um banco de dados; Possui armazenamento persistente; Um tópico tem diversas partições, cada uma definida por um número; A quantidade de partições é definida na criação do tópico.
  • 14. As partições são independentes; Ordenadas e a sequência dos registros são imutáveis; O offset é posição de um registro na partição, ID sequencial e único do dado.
  • 15.
  • 16. Os producers adicionam registros ao stream sempre na cauda da partição; Os consumers controlam o offset que desejam ler; Os consumers podem ler e reler as mensagens sem “perdê-las”; É possível criar consumer groups.
  • 17. Se todos os consumers estiverem dentro do mesmo consumer group, as mensagens são entregues separadamente como um load balancer.
  • 18. Mas se os consumers estiverem em consumer groups diferentes, as mensagens são entregues para todos como um broadcast.
  • 19.
  • 20. Cada partição é replicada em diversos brokers, de acordo o replication-factor; Isto garante que um dado nunca seja perdido; Cluster possui a estratégia de controllers, leaders e followers.
  • 25. file: .env KAFKA_URI = <host> KAFKA_KEY = <key> KAFKA_SECRET = <secret> KAFKA_TOPIC = <topic> KAFKA_CONSUMER_GROUP = <consumer-group>
  • 26. Obrigado :) dev.to/wfelix insta / twitter / linkedin @waldyrfelix