SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
Apache Kafka
Gabriel Passos
O que é
● “Plataforma de streaming distribuído”
● O que não é:
○ Mensageria
■ RabbitMQ
■ JMS
■ Amazon SQS
Antes
● Banco de dados
parrudos
● Processamento batch
● Monolitos
● DW
Depois
● Banco de dados para
persistir o estado
● “Real time”
● Microsserviços
● Streaming
○ Eventos
○ Reatividade
Kafka
● Criado no Linkedln
● Liberado projeto “open-source” em 2011
● Principais mantenedores: confluent
● https://www.confluent.io/
Casos de Uso
● Pública e consome fluxo de dados
● Persiste um fluxo de dados
● Processa um fluxo de dados
● Construir um sistema confiável para se obter informações
de sistemas ou aplicações em tempo real
● Construir aplicações que transformam ou reagem a um fluxo
de dados
Básico
● Kafka executa como cluster, em um ou mais servers.
● Kafka armazena o fluxo de dados (registros) em tópicos
● Cada registro consiste de:
○ Chave
○ Valor
○ Timestamp
Tópico
● Onde os registros são publicados
● Sempre são multi consumíveis
○ 0 ou mais consumidores
● São constituídos de partições
○ ordenadas
○ sequência imutável(novos registros são “apendados”)
○ dentro das partições registros são identificados por um id (offset)
● Todos os registros são persistidos, consumidos ou não
○ Com um prazo de vida configurável
● Metadado que é durável é o offset
○ Consumer controla leitura e progressão
Replicação
● Cada partição é
replicada (x vezes) em
um server do cluster
● Cada partição tem um
líder e 0 ou mais
seguidores
○ Líder é o responsável
pela leitura e escrita
○ Seguidores replicam o
líder
○ Se o líder cai um dos
seguidores irá
tornar-se o novo líder
Produtores
● Pública os dados para o tópico escolhido
● Informando chave, pode garantir ordem para consumo.
Consumidores
● Possuem um consumer group name
○ Todo registro em um tópico é direcionado para uma instância de
consumidor dentro do grupo
○ Se todas as instâncias pertencem a um único grupo apenas um
consumidor receberá o registro
○ Se todas as instâncias pertencem a grupos diferentes será feito o
envio para cada consumidor
Atribuição de Consumidores
● Através de configuração
○ “partition.assignment.strategy”
○ PartitionAssignor
● 2 modos
○ Range
○ Round Robin
Range
Round Robin
Entrega de Mensagens
● At most once
○ Lê mensagem → Salva novo offset → Processa Mensagem
○ Em caso de erro, não irá processar novamente a mensagem
○ “mensagem pode ser perdida mas nunca reenviada”
● At least once
○ Lê mensagem → Processa Mensagem → Salva novo offset
○ Em caso de erro, irá reprocessar mensagem
○ “mensagem é nunca perdida mas pode ser reenviada”
● Exactly onde
○ “mensagem é enviada somente uma vez”
○ Dependência consumidor e kafka
Referências
● https://kafka.apache.org/
● https://www.oreilly.com/library/view/kafka-the-definitive/9781491936153/ch04.html
● http://cloudurable.com/blog/kafka-architecture-topics/index.html
● https://github.com/gabrielSpassos/kafka-basics
● https://speakerdeck.com/bdwsp/redescobrindo-o-papel-do-apache-kafka-r-em-arquiteturas-de-dados-modernas

Mais conteúdo relacionado

Semelhante a Apache kafka

Apache Kafka: Comunicando microsserviços com performance
Apache Kafka: Comunicando microsserviços com performanceApache Kafka: Comunicando microsserviços com performance
Apache Kafka: Comunicando microsserviços com performanceWaldyr Felix
 
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]Tiago Hillebrandt
 
Elasticsearch shards, index, filters and queries
Elasticsearch shards, index, filters and queriesElasticsearch shards, index, filters and queries
Elasticsearch shards, index, filters and queriesWaldemar Neto
 
Message Broker & .Net Core - Introdução ao RabbitMQ
Message Broker & .Net Core - Introdução ao RabbitMQMessage Broker & .Net Core - Introdução ao RabbitMQ
Message Broker & .Net Core - Introdução ao RabbitMQLuiz Carlos Faria
 
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Ambiente Livre
 
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Tiago Hillebrandt
 
Como arquiteturas de dados quebram
Como arquiteturas de dados quebramComo arquiteturas de dados quebram
Como arquiteturas de dados quebramGleicon Moraes
 
TDC2018SP | Trilha Go - Entendendo alocacao de memoria no Go
TDC2018SP | Trilha Go - Entendendo alocacao de memoria no GoTDC2018SP | Trilha Go - Entendendo alocacao de memoria no Go
TDC2018SP | Trilha Go - Entendendo alocacao de memoria no Gotdc-globalcode
 
Distribuição de Dados em Escala Global com Cassandra
Distribuição de Dados em Escala Global com CassandraDistribuição de Dados em Escala Global com Cassandra
Distribuição de Dados em Escala Global com CassandraMário Marroquim
 
Tuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresTuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresDouglas V. Pasqua
 
Cap-6-Multiplrocessadores.pdf
Cap-6-Multiplrocessadores.pdfCap-6-Multiplrocessadores.pdf
Cap-6-Multiplrocessadores.pdfHurgelNeto
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Marcelo Dieder
 

Semelhante a Apache kafka (18)

Gfs slides
Gfs slidesGfs slides
Gfs slides
 
Google File System
Google File SystemGoogle File System
Google File System
 
Apache Kafka: Comunicando microsserviços com performance
Apache Kafka: Comunicando microsserviços com performanceApache Kafka: Comunicando microsserviços com performance
Apache Kafka: Comunicando microsserviços com performance
 
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
 
Kafka ppt
Kafka pptKafka ppt
Kafka ppt
 
Kafka ppt
Kafka pptKafka ppt
Kafka ppt
 
Elasticsearch shards, index, filters and queries
Elasticsearch shards, index, filters and queriesElasticsearch shards, index, filters and queries
Elasticsearch shards, index, filters and queries
 
Message Broker & .Net Core - Introdução ao RabbitMQ
Message Broker & .Net Core - Introdução ao RabbitMQMessage Broker & .Net Core - Introdução ao RabbitMQ
Message Broker & .Net Core - Introdução ao RabbitMQ
 
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
 
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
 
Como arquiteturas de dados quebram
Como arquiteturas de dados quebramComo arquiteturas de dados quebram
Como arquiteturas de dados quebram
 
TDC2018SP | Trilha Go - Entendendo alocacao de memoria no Go
TDC2018SP | Trilha Go - Entendendo alocacao de memoria no GoTDC2018SP | Trilha Go - Entendendo alocacao de memoria no Go
TDC2018SP | Trilha Go - Entendendo alocacao de memoria no Go
 
Distribuição de Dados em Escala Global com Cassandra
Distribuição de Dados em Escala Global com CassandraDistribuição de Dados em Escala Global com Cassandra
Distribuição de Dados em Escala Global com Cassandra
 
Tuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresTuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedores
 
Cap-6-Multiplrocessadores.pdf
Cap-6-Multiplrocessadores.pdfCap-6-Multiplrocessadores.pdf
Cap-6-Multiplrocessadores.pdf
 
Como perder mensagens utilizando RabbitMQ
Como perder mensagens utilizando RabbitMQComo perder mensagens utilizando RabbitMQ
Como perder mensagens utilizando RabbitMQ
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?
 
Gerencia de Memória Opensolaris
Gerencia de Memória OpensolarisGerencia de Memória Opensolaris
Gerencia de Memória Opensolaris
 

Mais de Gabriel Passos

Mais de Gabriel Passos (6)

Load shedding, backpressure, cdc, hypervisor, docker
Load shedding, backpressure, cdc, hypervisor, dockerLoad shedding, backpressure, cdc, hypervisor, docker
Load shedding, backpressure, cdc, hypervisor, docker
 
Aws glue
Aws glueAws glue
Aws glue
 
Hot and cold observables, overlay
Hot and cold observables, overlayHot and cold observables, overlay
Hot and cold observables, overlay
 
Ec2
Ec2Ec2
Ec2
 
Event sourcing
Event  sourcingEvent  sourcing
Event sourcing
 
Versioning rest api's
Versioning rest api'sVersioning rest api's
Versioning rest api's
 

Apache kafka

  • 2. O que é ● “Plataforma de streaming distribuído” ● O que não é: ○ Mensageria ■ RabbitMQ ■ JMS ■ Amazon SQS
  • 3. Antes ● Banco de dados parrudos ● Processamento batch ● Monolitos ● DW Depois ● Banco de dados para persistir o estado ● “Real time” ● Microsserviços ● Streaming ○ Eventos ○ Reatividade
  • 4. Kafka ● Criado no Linkedln ● Liberado projeto “open-source” em 2011 ● Principais mantenedores: confluent ● https://www.confluent.io/
  • 5. Casos de Uso ● Pública e consome fluxo de dados ● Persiste um fluxo de dados ● Processa um fluxo de dados ● Construir um sistema confiável para se obter informações de sistemas ou aplicações em tempo real ● Construir aplicações que transformam ou reagem a um fluxo de dados
  • 6. Básico ● Kafka executa como cluster, em um ou mais servers. ● Kafka armazena o fluxo de dados (registros) em tópicos ● Cada registro consiste de: ○ Chave ○ Valor ○ Timestamp
  • 7. Tópico ● Onde os registros são publicados ● Sempre são multi consumíveis ○ 0 ou mais consumidores ● São constituídos de partições ○ ordenadas ○ sequência imutável(novos registros são “apendados”) ○ dentro das partições registros são identificados por um id (offset) ● Todos os registros são persistidos, consumidos ou não ○ Com um prazo de vida configurável ● Metadado que é durável é o offset ○ Consumer controla leitura e progressão
  • 8. Replicação ● Cada partição é replicada (x vezes) em um server do cluster ● Cada partição tem um líder e 0 ou mais seguidores ○ Líder é o responsável pela leitura e escrita ○ Seguidores replicam o líder ○ Se o líder cai um dos seguidores irá tornar-se o novo líder
  • 9. Produtores ● Pública os dados para o tópico escolhido ● Informando chave, pode garantir ordem para consumo.
  • 10. Consumidores ● Possuem um consumer group name ○ Todo registro em um tópico é direcionado para uma instância de consumidor dentro do grupo ○ Se todas as instâncias pertencem a um único grupo apenas um consumidor receberá o registro ○ Se todas as instâncias pertencem a grupos diferentes será feito o envio para cada consumidor
  • 11. Atribuição de Consumidores ● Através de configuração ○ “partition.assignment.strategy” ○ PartitionAssignor ● 2 modos ○ Range ○ Round Robin
  • 12. Range
  • 14. Entrega de Mensagens ● At most once ○ Lê mensagem → Salva novo offset → Processa Mensagem ○ Em caso de erro, não irá processar novamente a mensagem ○ “mensagem pode ser perdida mas nunca reenviada” ● At least once ○ Lê mensagem → Processa Mensagem → Salva novo offset ○ Em caso de erro, irá reprocessar mensagem ○ “mensagem é nunca perdida mas pode ser reenviada” ● Exactly onde ○ “mensagem é enviada somente uma vez” ○ Dependência consumidor e kafka
  • 15. Referências ● https://kafka.apache.org/ ● https://www.oreilly.com/library/view/kafka-the-definitive/9781491936153/ch04.html ● http://cloudurable.com/blog/kafka-architecture-topics/index.html ● https://github.com/gabrielSpassos/kafka-basics ● https://speakerdeck.com/bdwsp/redescobrindo-o-papel-do-apache-kafka-r-em-arquiteturas-de-dados-modernas