SlideShare uma empresa Scribd logo
Apache Kafka
Natã Melo
Renato Almeida
Objetivos
● Modelo publish-subscribe
● Apache Kafka
● Exemplo de uso
Publish-subscribe
Motivação
● Dados de atividades e dados operacionais
○ Requisito importante para aplicações Web
○ Resolvido normalmente com logging
○ Escalável para aplicações pequenas
Motivação
● Problema: tempo real
○ Fluxo de dados muito alto (vazão alta)
○ Logging tradicional:
■ Latência torna inviável a utilização
■ Pode prejudicar o comportamento do sistema
● Objetivo:
○ Baixa latência para grandes volumes de dados
Apache Kafka
● Desenvolvida no LinkedIn
● Sistema de mensagens persistentes
● Baseada no modelo Publish-Subscribe
● Linguagem Scala
● Quem utiliza?
Apache Kafka
● Características
○ Distribuído
■ Consumidores e produtores espalhados pela
rede
○ Escalável
■ Vazão alta
■ Baixa latência
○ Simples
■ Característica do modelo
■ Desacoplamento
Arquitetura
● Topic-based
● Visão geral
mensagens, brokers, tópicos, partições, produtores, consumidores
Eficiência
● Don't fear the filesystem!
○ Sem cache em memória (a nível de processo)
■ Overhead mínimo com garbage collecting
■ Cache a nível de sistema de arquivos
○ Estruturas de dados eficientes para acesso
● Armazenamento simples
○ Cada partição de tópico é um "log" lógico
■ Conjuntos de arquivos de tamanho fixo
○ Espera um tempo por mais mensagens antes de
gravar no disco
■ Só ficam visíveis para consumo após gravadas
Eficiência
● Transferência eficiente
○ Mensagens podem ser enviadas em "lotes"
■ Leitura é "sequencial"
● Stateless
○ Estado de consumo (mensagens consumidas) é
mantido no consumidor e não nos brokers
○ Mensagens são removidas automaticamente após
certo período
■ Tipicamente, 7 dias
Coordenação distribuída
● Grupo de consumidores (um ou mais)
● Mensagens de uma partição são consumidas por um
único consumidor
○ Diminuir overhead de coordenação
● Consumidores coordenam entre eles próprios de forma
descentralizada
○ Consensus Zookeeper
Coordenação distribuída
● Uso do Zookeeper auxilia na coordenação
○ Armazenam informações em registros
■ Consumidores
■ Brokers
■ Partições
● Mudanças no conjunto de brokers ou no grupo de
consumidores são notificadas por watchers
Entrega e confiabilidade
● Garante "pelo menos" uma entrega
○ Entregas duplicadas devem ser tratadas na
aplicação
● Ordenação
○ Mensagens de mesma partição são entregues em
ordem
○ Não há garantia para partições diferentes
● Integridade
○ Mensagens entregues possuem CRC
○ Remove mensagens corrompidas
Tolerância a faltas
● O que acontece se um broker falhar?
○ Suas partições são removidas do registro
○ Mensagens não consumidas ficam indisponíveis
○ Se o sistema de armazenamento for permanentemente
danificado, suas mensagens estão perdidas
■ Não há replicação
● O que acontece se um consumidor falhar?
○ Sua entrada e suas partições de consumo são removidas
dos registros
● Após a falha, os consumidores são notificados e inicia um
balanceamento
Estudo de Caso: LinkedIn
LinkedIn: Resultados Experimentais
● Experimento comparativo
● Configurações do ambiente
○ 2 máquinas Linux, 8 cores de 2GHz, 16GB de
memória, 6 discos (RAID 10)
○ Link de 1GB
● Um produtor, um consumidor, 100 tópicos
LinkedIn: Resultados Experimentais
● Teste para produtor
○ 10 milhões de mensagens (200B) produzidas
● Muito menos overhead de armazenamento
○ ActiveQM - 70% mais de espaço (em 10 milhões mensagens)
● Vantagens
○ Não espera por confirmação dos brokers
■ Aumento da vazão do publisher
○ Formato de mensagem mais eficiente (batch size: 50)
● Desvantagens
○ Não existe garantia que o broker recebeu a mensagem
LinkedIn: Resultados Experimentais
● Teste para consumidor
○ Um consumidor para recuperar um total de 10
milhões de mensagens (200B)
● Consumiu quatro vezes mais que os demais
● Vantagens
○ Redução do overhead de transmissão
■ API Send File
○ Não há atividades de escrita no disco
LinkedIn: Comparação
LinkedIn: Vazão x Latência
Testes de Desempenho
● Usando simulador do Kafka
● Cenários remotos com mesmos nós
○ Broker em Virgínia/EUA
○ 2 consumidores em São Paulo/SP
○ 2 produtores em São Paulo/SP
● Variando parâmetros:
○ Tamanho do lote (produtor)
■ Em número de mensagens
○ Tamanho da mensagem (produtor)
■ Em KB
● N° de mensagens produzidas fixo
○ 20.000
Teste de desempenho (Produtor)
Teste de desempenho (Produtor)
Teste de desempenho (Consumidor)
Exemplo de Uso (Implementação)
● Consumidor / produtor simples
● Informações básicas de configuração:
○ Arquivos .properties ou diretamente no código
○ Dois modos de conexão
■ Zookeeper (recomendado)
■ Conexão direta ao(s) broker(s)
● Produtor
Exemplo de Uso
Exemplo de Uso
● Consumidor
Considerações Finais
● Trabalhos futuros / em andamento
○ Replicação
○ Hierarquia de tópicos
○ Clientes em outras linguagens
● Dificuldade na configuração
○ Material da página só fornece exemplo 'local'
■ server.properties
● hostname => recomenda-se definir
Sistemas Distribuídos - Publish-Subscribe - Kafka
Referências
● Kafka: a Distributed Messaging System for Log
Processing. (Jay Kreps, Neha Narkhede, Jun Rao)
● Building LinkedIn’s Real-time Activity Data Pipeline.
(LinkedIn team)
● Disponível em: http://incubator.apache.
org/kafka/projects.html. Acesso em: 9 de novembro de
2012.
● Disponível em: https://cwiki.apache.
org/confluence/display/KAFKA/Index. Acesso em: 9 de
novembro de 2012.

Mais conteúdo relacionado

PDF
Real time replication using Kafka Connect
PPTX
Motherboard
PDF
Advanced messaging with Apache ActiveMQ
PPT
Testes em uma arquitetura com messageria/streaming (Kafka)
PPTX
Aula 13 - Algoritmos de Escalonamento
PPT
design patterns - introdução
PPTX
Princípios SOLID
PDF
Servidores de E-mail: Qmail, Sendmail e Postfix
Real time replication using Kafka Connect
Motherboard
Advanced messaging with Apache ActiveMQ
Testes em uma arquitetura com messageria/streaming (Kafka)
Aula 13 - Algoritmos de Escalonamento
design patterns - introdução
Princípios SOLID
Servidores de E-mail: Qmail, Sendmail e Postfix

Mais procurados (20)

PDF
Ebook ITIL Na Prática
PDF
Aula 2 - Modelos de processos
PPTX
What is suid, sgid and sticky bit
PPT
Motherboard
PDF
Arquitetura orientada a eventos
PPTX
SO de computadores pessoais
PDF
Computação em nuvem
PDF
Sistemas Operacionais - Aula 04 - Prática 1 - (SOSim)
ODP
Aula - Arquiteturas de aplicações móveis
PPT
PPT
Visão Geral: Estruturas do Sistema Operacional
PPTX
Introdução a Sistemas Operacionais
PDF
Ferramenta de apoio a gerência de configuração de software
PDF
Aula 3 - Lógica de Programação
PPTX
O que é programação?
PDF
Manual ftgate pro
PPTX
Sistemas operacionais
PDF
Trunk based development for Beginners
PPT
Codership's galera cluster installation and quickstart webinar march 2016
Ebook ITIL Na Prática
Aula 2 - Modelos de processos
What is suid, sgid and sticky bit
Motherboard
Arquitetura orientada a eventos
SO de computadores pessoais
Computação em nuvem
Sistemas Operacionais - Aula 04 - Prática 1 - (SOSim)
Aula - Arquiteturas de aplicações móveis
Visão Geral: Estruturas do Sistema Operacional
Introdução a Sistemas Operacionais
Ferramenta de apoio a gerência de configuração de software
Aula 3 - Lógica de Programação
O que é programação?
Manual ftgate pro
Sistemas operacionais
Trunk based development for Beginners
Codership's galera cluster installation and quickstart webinar march 2016
Anúncio

Destaque (18)

PDF
Biografia de Bill Gates - Parte 4
PDF
Biografia de Bill Gates - Parte 3
PPTX
Bill gates powerpoint:)
PPS
Bill gates e a vida real
PDF
Biografia de Bill Gates - Parte 2
PDF
[Android] Publish on Google Play & Google Analytics
PDF
Animated transitions across UI views
PDF
Minicurso grails
PDF
Java Style Grading
PDF
MATRACA: Ferramenta open source para auxílio a deficientes visuais no uso do ...
PDF
Motores de busca em redes sociais
PDF
Listas em Prolog
PDF
[Android] Google Service Play & Google Maps
PDF
Educação a Distância
PDF
Introducing MDSD
PDF
Biografia de Bill Gates - Parte 1
PDF
Bill Gates
PDF
MDA - Model Driven Architecture
Biografia de Bill Gates - Parte 4
Biografia de Bill Gates - Parte 3
Bill gates powerpoint:)
Bill gates e a vida real
Biografia de Bill Gates - Parte 2
[Android] Publish on Google Play & Google Analytics
Animated transitions across UI views
Minicurso grails
Java Style Grading
MATRACA: Ferramenta open source para auxílio a deficientes visuais no uso do ...
Motores de busca em redes sociais
Listas em Prolog
[Android] Google Service Play & Google Maps
Educação a Distância
Introducing MDSD
Biografia de Bill Gates - Parte 1
Bill Gates
MDA - Model Driven Architecture
Anúncio

Semelhante a Sistemas Distribuídos - Publish-Subscribe - Kafka (20)

PDF
Apache kafka
PDF
Apache Kafka: Comunicando microsserviços com performance
PPTX
Kafka: Uma introdução para Desenvolvedores e Arquitetos
PPTX
Mulesoft Meetup Latam Summit Brazil
PDF
Descomplicando Apache Kafka
PPTX
Conhecendo Apache Kafka
PDF
Messaging Pattern
PDF
7.Troca de mensagem (Message Parsing).pdf
PPTX
Message Broker & .Net Core - Introdução ao RabbitMQ
PPTX
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
PDF
Akka programação concorrente
PPTX
Meetup Mule SP: Kafka (Edgar)
PDF
Como perder mensagens utilizando RabbitMQ
PDF
Microservices reativos e a experiência do iFood
PDF
Devcamp 2017 Microservices Reativos
PDF
QCon SP 2017 - Reactive Microservices e a experiência do iFood
PDF
DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...
PDF
QCon 2015 - DevOps, Chef, Puppet e Ansible e como vender milhões na Black Fri...
PDF
Template_Faculdade_Apache Kafka.pdf
PPTX
Serverless com python
Apache kafka
Apache Kafka: Comunicando microsserviços com performance
Kafka: Uma introdução para Desenvolvedores e Arquitetos
Mulesoft Meetup Latam Summit Brazil
Descomplicando Apache Kafka
Conhecendo Apache Kafka
Messaging Pattern
7.Troca de mensagem (Message Parsing).pdf
Message Broker & .Net Core - Introdução ao RabbitMQ
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
Akka programação concorrente
Meetup Mule SP: Kafka (Edgar)
Como perder mensagens utilizando RabbitMQ
Microservices reativos e a experiência do iFood
Devcamp 2017 Microservices Reativos
QCon SP 2017 - Reactive Microservices e a experiência do iFood
DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...
QCon 2015 - DevOps, Chef, Puppet e Ansible e como vender milhões na Black Fri...
Template_Faculdade_Apache Kafka.pdf
Serverless com python

Mais de Natã Melo (14)

PDF
Copas do Mundo de Futebol
PDF
Linguagem Python
PDF
Sistemas Recomendação em Redes Sociais
PDF
Sistema de Recomendação - Amigos DINS
PDF
Terremotos
PDF
Regresão Múltipla
PDF
Linguagem Go
PDF
Teste Dirigido por Modelos
PDF
Demonstração ApTest Manager
PDF
MetaCG
PDF
Redes Sociais - Utilizando-as de forma inteligente
PDF
Apresentação JavaCG MetaCG
PDF
Python aula 1
PDF
Python aula 2
Copas do Mundo de Futebol
Linguagem Python
Sistemas Recomendação em Redes Sociais
Sistema de Recomendação - Amigos DINS
Terremotos
Regresão Múltipla
Linguagem Go
Teste Dirigido por Modelos
Demonstração ApTest Manager
MetaCG
Redes Sociais - Utilizando-as de forma inteligente
Apresentação JavaCG MetaCG
Python aula 1
Python aula 2

Último (11)

PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PPT
Conceitos básicos de Redes Neurais Artificiais
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Utilizando code blockes por andre backes
PDF
Jira Software projetos completos com scrum
PPTX
Eng. Software - pontos essenciais para o início
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PPTX
Tipos de servidor em redes de computador.pptx
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Conceitos básicos de Redes Neurais Artificiais
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Utilizando code blockes por andre backes
Jira Software projetos completos com scrum
Eng. Software - pontos essenciais para o início
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Viasol Energia Solar -Soluções para geração e economia de energia
Tipos de servidor em redes de computador.pptx
Manejo integrado de pragas na cultura do algodão
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...

Sistemas Distribuídos - Publish-Subscribe - Kafka

  • 2. Objetivos ● Modelo publish-subscribe ● Apache Kafka ● Exemplo de uso
  • 4. Motivação ● Dados de atividades e dados operacionais ○ Requisito importante para aplicações Web ○ Resolvido normalmente com logging ○ Escalável para aplicações pequenas
  • 5. Motivação ● Problema: tempo real ○ Fluxo de dados muito alto (vazão alta) ○ Logging tradicional: ■ Latência torna inviável a utilização ■ Pode prejudicar o comportamento do sistema ● Objetivo: ○ Baixa latência para grandes volumes de dados
  • 6. Apache Kafka ● Desenvolvida no LinkedIn ● Sistema de mensagens persistentes ● Baseada no modelo Publish-Subscribe ● Linguagem Scala ● Quem utiliza?
  • 7. Apache Kafka ● Características ○ Distribuído ■ Consumidores e produtores espalhados pela rede ○ Escalável ■ Vazão alta ■ Baixa latência ○ Simples ■ Característica do modelo ■ Desacoplamento
  • 8. Arquitetura ● Topic-based ● Visão geral mensagens, brokers, tópicos, partições, produtores, consumidores
  • 9. Eficiência ● Don't fear the filesystem! ○ Sem cache em memória (a nível de processo) ■ Overhead mínimo com garbage collecting ■ Cache a nível de sistema de arquivos ○ Estruturas de dados eficientes para acesso ● Armazenamento simples ○ Cada partição de tópico é um "log" lógico ■ Conjuntos de arquivos de tamanho fixo ○ Espera um tempo por mais mensagens antes de gravar no disco ■ Só ficam visíveis para consumo após gravadas
  • 10. Eficiência ● Transferência eficiente ○ Mensagens podem ser enviadas em "lotes" ■ Leitura é "sequencial" ● Stateless ○ Estado de consumo (mensagens consumidas) é mantido no consumidor e não nos brokers ○ Mensagens são removidas automaticamente após certo período ■ Tipicamente, 7 dias
  • 11. Coordenação distribuída ● Grupo de consumidores (um ou mais) ● Mensagens de uma partição são consumidas por um único consumidor ○ Diminuir overhead de coordenação ● Consumidores coordenam entre eles próprios de forma descentralizada ○ Consensus Zookeeper
  • 12. Coordenação distribuída ● Uso do Zookeeper auxilia na coordenação ○ Armazenam informações em registros ■ Consumidores ■ Brokers ■ Partições ● Mudanças no conjunto de brokers ou no grupo de consumidores são notificadas por watchers
  • 13. Entrega e confiabilidade ● Garante "pelo menos" uma entrega ○ Entregas duplicadas devem ser tratadas na aplicação ● Ordenação ○ Mensagens de mesma partição são entregues em ordem ○ Não há garantia para partições diferentes ● Integridade ○ Mensagens entregues possuem CRC ○ Remove mensagens corrompidas
  • 14. Tolerância a faltas ● O que acontece se um broker falhar? ○ Suas partições são removidas do registro ○ Mensagens não consumidas ficam indisponíveis ○ Se o sistema de armazenamento for permanentemente danificado, suas mensagens estão perdidas ■ Não há replicação ● O que acontece se um consumidor falhar? ○ Sua entrada e suas partições de consumo são removidas dos registros ● Após a falha, os consumidores são notificados e inicia um balanceamento
  • 15. Estudo de Caso: LinkedIn
  • 16. LinkedIn: Resultados Experimentais ● Experimento comparativo ● Configurações do ambiente ○ 2 máquinas Linux, 8 cores de 2GHz, 16GB de memória, 6 discos (RAID 10) ○ Link de 1GB ● Um produtor, um consumidor, 100 tópicos
  • 17. LinkedIn: Resultados Experimentais ● Teste para produtor ○ 10 milhões de mensagens (200B) produzidas ● Muito menos overhead de armazenamento ○ ActiveQM - 70% mais de espaço (em 10 milhões mensagens) ● Vantagens ○ Não espera por confirmação dos brokers ■ Aumento da vazão do publisher ○ Formato de mensagem mais eficiente (batch size: 50) ● Desvantagens ○ Não existe garantia que o broker recebeu a mensagem
  • 18. LinkedIn: Resultados Experimentais ● Teste para consumidor ○ Um consumidor para recuperar um total de 10 milhões de mensagens (200B) ● Consumiu quatro vezes mais que os demais ● Vantagens ○ Redução do overhead de transmissão ■ API Send File ○ Não há atividades de escrita no disco
  • 20. LinkedIn: Vazão x Latência
  • 21. Testes de Desempenho ● Usando simulador do Kafka ● Cenários remotos com mesmos nós ○ Broker em Virgínia/EUA ○ 2 consumidores em São Paulo/SP ○ 2 produtores em São Paulo/SP ● Variando parâmetros: ○ Tamanho do lote (produtor) ■ Em número de mensagens ○ Tamanho da mensagem (produtor) ■ Em KB ● N° de mensagens produzidas fixo ○ 20.000
  • 22. Teste de desempenho (Produtor)
  • 23. Teste de desempenho (Produtor)
  • 24. Teste de desempenho (Consumidor)
  • 25. Exemplo de Uso (Implementação) ● Consumidor / produtor simples ● Informações básicas de configuração: ○ Arquivos .properties ou diretamente no código ○ Dois modos de conexão ■ Zookeeper (recomendado) ■ Conexão direta ao(s) broker(s)
  • 27. Exemplo de Uso ● Consumidor
  • 28. Considerações Finais ● Trabalhos futuros / em andamento ○ Replicação ○ Hierarquia de tópicos ○ Clientes em outras linguagens ● Dificuldade na configuração ○ Material da página só fornece exemplo 'local' ■ server.properties ● hostname => recomenda-se definir
  • 30. Referências ● Kafka: a Distributed Messaging System for Log Processing. (Jay Kreps, Neha Narkhede, Jun Rao) ● Building LinkedIn’s Real-time Activity Data Pipeline. (LinkedIn team) ● Disponível em: http://incubator.apache. org/kafka/projects.html. Acesso em: 9 de novembro de 2012. ● Disponível em: https://cwiki.apache. org/confluence/display/KAFKA/Index. Acesso em: 9 de novembro de 2012.