SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
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
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

Mais procurados

Apache Kafka as Event Streaming Platform for Microservice Architectures
Apache Kafka as Event Streaming Platform for Microservice ArchitecturesApache Kafka as Event Streaming Platform for Microservice Architectures
Apache Kafka as Event Streaming Platform for Microservice ArchitecturesKai Wähner
 
Replicação de dados
Replicação de dadosReplicação de dados
Replicação de dadoselliando dias
 
Kafka Tutorial - Introduction to Apache Kafka (Part 1)
Kafka Tutorial - Introduction to Apache Kafka (Part 1)Kafka Tutorial - Introduction to Apache Kafka (Part 1)
Kafka Tutorial - Introduction to Apache Kafka (Part 1)Jean-Paul Azar
 
Kafka Tutorial Advanced Kafka Consumers
Kafka Tutorial Advanced Kafka ConsumersKafka Tutorial Advanced Kafka Consumers
Kafka Tutorial Advanced Kafka ConsumersJean-Paul Azar
 
RabbitMQ vs Apache Kafka - Part 1
RabbitMQ vs Apache Kafka - Part 1RabbitMQ vs Apache Kafka - Part 1
RabbitMQ vs Apache Kafka - Part 1Erlang Solutions
 
Software Architecture: Principles, Patterns and Practices
Software Architecture: Principles, Patterns and PracticesSoftware Architecture: Principles, Patterns and Practices
Software Architecture: Principles, Patterns and PracticesGanesh Samarthyam
 
Apache storm vs. Spark Streaming
Apache storm vs. Spark StreamingApache storm vs. Spark Streaming
Apache storm vs. Spark StreamingP. Taylor Goetz
 
Software architectural patterns - A Quick Understanding Guide
Software architectural patterns - A Quick Understanding GuideSoftware architectural patterns - A Quick Understanding Guide
Software architectural patterns - A Quick Understanding GuideMohammed Fazuluddin
 
From Zero to Hero with Kafka Connect
From Zero to Hero with Kafka ConnectFrom Zero to Hero with Kafka Connect
From Zero to Hero with Kafka Connectconfluent
 
Building an Event Bus at Scale
Building an Event Bus at ScaleBuilding an Event Bus at Scale
Building an Event Bus at Scalejimriecken
 
Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?confluent
 
Monitoring Apache Kafka with Confluent Control Center
Monitoring Apache Kafka with Confluent Control Center   Monitoring Apache Kafka with Confluent Control Center
Monitoring Apache Kafka with Confluent Control Center confluent
 
Arquiteturas usando Pipes and Filters
Arquiteturas usando Pipes and FiltersArquiteturas usando Pipes and Filters
Arquiteturas usando Pipes and FiltersSergio Crespo
 
Padrões de projeto - Martin Fowler - P of EAA
Padrões de projeto - Martin Fowler - P of EAAPadrões de projeto - Martin Fowler - P of EAA
Padrões de projeto - Martin Fowler - P of EAAAricelio Souza
 
How Apache Kafka® Works
How Apache Kafka® WorksHow Apache Kafka® Works
How Apache Kafka® Worksconfluent
 

Mais procurados (20)

Kafka 101
Kafka 101Kafka 101
Kafka 101
 
Apache Kafka as Event Streaming Platform for Microservice Architectures
Apache Kafka as Event Streaming Platform for Microservice ArchitecturesApache Kafka as Event Streaming Platform for Microservice Architectures
Apache Kafka as Event Streaming Platform for Microservice Architectures
 
Replicação de dados
Replicação de dadosReplicação de dados
Replicação de dados
 
Kafka Tutorial - Introduction to Apache Kafka (Part 1)
Kafka Tutorial - Introduction to Apache Kafka (Part 1)Kafka Tutorial - Introduction to Apache Kafka (Part 1)
Kafka Tutorial - Introduction to Apache Kafka (Part 1)
 
Apache Kafka
Apache Kafka Apache Kafka
Apache Kafka
 
Kafka Tutorial Advanced Kafka Consumers
Kafka Tutorial Advanced Kafka ConsumersKafka Tutorial Advanced Kafka Consumers
Kafka Tutorial Advanced Kafka Consumers
 
Message Broker System and RabbitMQ
Message Broker System and RabbitMQMessage Broker System and RabbitMQ
Message Broker System and RabbitMQ
 
RabbitMQ vs Apache Kafka - Part 1
RabbitMQ vs Apache Kafka - Part 1RabbitMQ vs Apache Kafka - Part 1
RabbitMQ vs Apache Kafka - Part 1
 
Software Architecture: Principles, Patterns and Practices
Software Architecture: Principles, Patterns and PracticesSoftware Architecture: Principles, Patterns and Practices
Software Architecture: Principles, Patterns and Practices
 
Class notes
Class notesClass notes
Class notes
 
Apache storm vs. Spark Streaming
Apache storm vs. Spark StreamingApache storm vs. Spark Streaming
Apache storm vs. Spark Streaming
 
Software architectural patterns - A Quick Understanding Guide
Software architectural patterns - A Quick Understanding GuideSoftware architectural patterns - A Quick Understanding Guide
Software architectural patterns - A Quick Understanding Guide
 
From Zero to Hero with Kafka Connect
From Zero to Hero with Kafka ConnectFrom Zero to Hero with Kafka Connect
From Zero to Hero with Kafka Connect
 
Building an Event Bus at Scale
Building an Event Bus at ScaleBuilding an Event Bus at Scale
Building an Event Bus at Scale
 
Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?
 
Monitoring Apache Kafka with Confluent Control Center
Monitoring Apache Kafka with Confluent Control Center   Monitoring Apache Kafka with Confluent Control Center
Monitoring Apache Kafka with Confluent Control Center
 
Arquiteturas usando Pipes and Filters
Arquiteturas usando Pipes and FiltersArquiteturas usando Pipes and Filters
Arquiteturas usando Pipes and Filters
 
Padrões de projeto - Martin Fowler - P of EAA
Padrões de projeto - Martin Fowler - P of EAAPadrões de projeto - Martin Fowler - P of EAA
Padrões de projeto - Martin Fowler - P of EAA
 
Apache kafka
Apache kafkaApache kafka
Apache kafka
 
How Apache Kafka® Works
How Apache Kafka® WorksHow Apache Kafka® Works
How Apache Kafka® Works
 

Destaque

Biografia de Bill Gates - Parte 4
Biografia de Bill Gates - Parte 4Biografia de Bill Gates - Parte 4
Biografia de Bill Gates - Parte 4Natã Melo
 
Biografia de Bill Gates - Parte 3
Biografia de Bill Gates - Parte 3Biografia de Bill Gates - Parte 3
Biografia de Bill Gates - Parte 3Natã Melo
 
Bill gates powerpoint:)
Bill gates powerpoint:)Bill gates powerpoint:)
Bill gates powerpoint:)Ashley Sumrall
 
Bill gates e a vida real
Bill gates e a vida realBill gates e a vida real
Bill gates e a vida realSheila Santini
 
Biografia de Bill Gates - Parte 2
Biografia de Bill Gates - Parte 2Biografia de Bill Gates - Parte 2
Biografia de Bill Gates - Parte 2Natã Melo
 
[Android] Publish on Google Play & Google Analytics
[Android] Publish on Google Play & Google Analytics[Android] Publish on Google Play & Google Analytics
[Android] Publish on Google Play & Google AnalyticsNatã Melo
 
Animated transitions across UI views
Animated transitions across UI viewsAnimated transitions across UI views
Animated transitions across UI viewsVivian Motti
 
Minicurso grails
Minicurso grailsMinicurso grails
Minicurso grailsNatã Melo
 
Java Style Grading
Java Style Grading Java Style Grading
Java Style Grading Natã Melo
 
MATRACA: Ferramenta open source para auxílio a deficientes visuais no uso do ...
MATRACA: Ferramenta open source para auxílio a deficientes visuais no uso do ...MATRACA: Ferramenta open source para auxílio a deficientes visuais no uso do ...
MATRACA: Ferramenta open source para auxílio a deficientes visuais no uso do ...Natã Melo
 
Motores de busca em redes sociais
Motores de busca em redes sociaisMotores de busca em redes sociais
Motores de busca em redes sociaisNatã Melo
 
Listas em Prolog
Listas em PrologListas em Prolog
Listas em PrologNatã Melo
 
[Android] Google Service Play & Google Maps
[Android] Google Service Play & Google Maps[Android] Google Service Play & Google Maps
[Android] Google Service Play & Google MapsNatã Melo
 
Educação a Distância
Educação a DistânciaEducação a Distância
Educação a DistânciaNatã Melo
 
Biografia de Bill Gates - Parte 1
Biografia de Bill Gates - Parte 1Biografia de Bill Gates - Parte 1
Biografia de Bill Gates - Parte 1Natã Melo
 
Bill Gates
Bill GatesBill Gates
Bill GatesLima
 
MDA - Model Driven Architecture
MDA - Model Driven ArchitectureMDA - Model Driven Architecture
MDA - Model Driven ArchitectureNatã Melo
 

Destaque (18)

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

Semelhante a Apache Kafka modelo publish-subscribe

Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5Symantec Brasil
 
Como lidar com cargas de trabalho mistas - PostgreSQL
Como lidar com cargas de trabalho mistas - PostgreSQLComo lidar com cargas de trabalho mistas - PostgreSQL
Como lidar com cargas de trabalho mistas - PostgreSQLDiego Santos
 
Apresentacao Relatorio
Apresentacao RelatorioApresentacao Relatorio
Apresentacao RelatorioAécio Pires
 
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
 
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...iMasters
 
Introdução a Software-defined Networks
Introdução a Software-defined NetworksIntrodução a Software-defined Networks
Introdução a Software-defined Networkscaixamagicasoftware
 
Workshop AMA/ESOP Gestão Documental 2009 05
Workshop AMA/ESOP Gestão Documental 2009 05Workshop AMA/ESOP Gestão Documental 2009 05
Workshop AMA/ESOP Gestão Documental 2009 05Fernando Fernández
 
Apresentação GT - Digital Preservation
Apresentação GT - Digital PreservationApresentação GT - Digital Preservation
Apresentação GT - Digital PreservationRoberto Beraldo Chaiben
 
Apache traffic server uma alternativa ao squid para web caches - fisl 14
Apache traffic server  uma alternativa ao squid para web caches - fisl 14Apache traffic server  uma alternativa ao squid para web caches - fisl 14
Apache traffic server uma alternativa ao squid para web caches - fisl 14Heitor Ganzeli
 
Melhores práticas de deployment do IBM Connections
Melhores práticas de deployment do IBM ConnectionsMelhores práticas de deployment do IBM Connections
Melhores práticas de deployment do IBM Connectionsrodrigoareis
 
Negocio dos sites de Conteúdo Contribuído pelo Utilizador
Negocio dos sites de Conteúdo Contribuído pelo UtilizadorNegocio dos sites de Conteúdo Contribuído pelo Utilizador
Negocio dos sites de Conteúdo Contribuído pelo UtilizadorManuel Lemos
 
Avaliação de software em open source para a gestão da Biblioteca UNL no Campu...
Avaliação de software em open source para a gestão da Biblioteca UNL no Campu...Avaliação de software em open source para a gestão da Biblioteca UNL no Campu...
Avaliação de software em open source para a gestão da Biblioteca UNL no Campu...Bruno Almeida
 
Monitoramento da rede de A a ZABBIX - Daniel Bauermann
Monitoramento da rede de A a ZABBIX - Daniel BauermannMonitoramento da rede de A a ZABBIX - Daniel Bauermann
Monitoramento da rede de A a ZABBIX - Daniel BauermannTchelinux
 
Monitoramento rede
Monitoramento redeMonitoramento rede
Monitoramento redeAndré Déo
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122Bruno Souza
 

Semelhante a Apache Kafka modelo publish-subscribe (20)

Apache kafka
Apache kafkaApache kafka
Apache kafka
 
Gfs slides
Gfs slidesGfs slides
Gfs slides
 
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5
 
Como lidar com cargas de trabalho mistas - PostgreSQL
Como lidar com cargas de trabalho mistas - PostgreSQLComo lidar com cargas de trabalho mistas - PostgreSQL
Como lidar com cargas de trabalho mistas - PostgreSQL
 
BDD em Ação
BDD em AçãoBDD em Ação
BDD em Ação
 
Guday netflix oss
Guday netflix ossGuday netflix oss
Guday netflix oss
 
Apresentacao Relatorio
Apresentacao RelatorioApresentacao Relatorio
Apresentacao Relatorio
 
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?
 
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
 
Introdução a Software-defined Networks
Introdução a Software-defined NetworksIntrodução a Software-defined Networks
Introdução a Software-defined Networks
 
Workshop AMA/ESOP Gestão Documental 2009 05
Workshop AMA/ESOP Gestão Documental 2009 05Workshop AMA/ESOP Gestão Documental 2009 05
Workshop AMA/ESOP Gestão Documental 2009 05
 
Apresentação GT - Digital Preservation
Apresentação GT - Digital PreservationApresentação GT - Digital Preservation
Apresentação GT - Digital Preservation
 
Apache traffic server uma alternativa ao squid para web caches - fisl 14
Apache traffic server  uma alternativa ao squid para web caches - fisl 14Apache traffic server  uma alternativa ao squid para web caches - fisl 14
Apache traffic server uma alternativa ao squid para web caches - fisl 14
 
Melhores práticas de deployment do IBM Connections
Melhores práticas de deployment do IBM ConnectionsMelhores práticas de deployment do IBM Connections
Melhores práticas de deployment do IBM Connections
 
Negocio dos sites de Conteúdo Contribuído pelo Utilizador
Negocio dos sites de Conteúdo Contribuído pelo UtilizadorNegocio dos sites de Conteúdo Contribuído pelo Utilizador
Negocio dos sites de Conteúdo Contribuído pelo Utilizador
 
Avaliação de software em open source para a gestão da Biblioteca UNL no Campu...
Avaliação de software em open source para a gestão da Biblioteca UNL no Campu...Avaliação de software em open source para a gestão da Biblioteca UNL no Campu...
Avaliação de software em open source para a gestão da Biblioteca UNL no Campu...
 
Linuxtips - a saideira
Linuxtips - a saideiraLinuxtips - a saideira
Linuxtips - a saideira
 
Monitoramento da rede de A a ZABBIX - Daniel Bauermann
Monitoramento da rede de A a ZABBIX - Daniel BauermannMonitoramento da rede de A a ZABBIX - Daniel Bauermann
Monitoramento da rede de A a ZABBIX - Daniel Bauermann
 
Monitoramento rede
Monitoramento redeMonitoramento rede
Monitoramento rede
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
 

Mais de Natã Melo

Copas do Mundo de Futebol
Copas do Mundo de FutebolCopas do Mundo de Futebol
Copas do Mundo de FutebolNatã Melo
 
Linguagem Python
Linguagem PythonLinguagem Python
Linguagem PythonNatã Melo
 
Sistemas Recomendação em Redes Sociais
Sistemas Recomendação em Redes SociaisSistemas Recomendação em Redes Sociais
Sistemas Recomendação em Redes SociaisNatã Melo
 
Sistema de Recomendação - Amigos DINS
Sistema de Recomendação - Amigos DINSSistema de Recomendação - Amigos DINS
Sistema de Recomendação - Amigos DINSNatã Melo
 
Regresão Múltipla
Regresão MúltiplaRegresão Múltipla
Regresão MúltiplaNatã Melo
 
Teste Dirigido por Modelos
Teste Dirigido por ModelosTeste Dirigido por Modelos
Teste Dirigido por ModelosNatã Melo
 
Demonstração ApTest Manager
Demonstração   ApTest ManagerDemonstração   ApTest Manager
Demonstração ApTest ManagerNatã Melo
 
Redes Sociais - Utilizando-as de forma inteligente
Redes Sociais - Utilizando-as de forma inteligenteRedes Sociais - Utilizando-as de forma inteligente
Redes Sociais - Utilizando-as de forma inteligenteNatã Melo
 
Apresentação JavaCG MetaCG
Apresentação JavaCG MetaCGApresentação JavaCG MetaCG
Apresentação JavaCG MetaCGNatã Melo
 

Mais de Natã Melo (14)

Copas do Mundo de Futebol
Copas do Mundo de FutebolCopas do Mundo de Futebol
Copas do Mundo de Futebol
 
Linguagem Python
Linguagem PythonLinguagem Python
Linguagem Python
 
Sistemas Recomendação em Redes Sociais
Sistemas Recomendação em Redes SociaisSistemas Recomendação em Redes Sociais
Sistemas Recomendação em Redes Sociais
 
Sistema de Recomendação - Amigos DINS
Sistema de Recomendação - Amigos DINSSistema de Recomendação - Amigos DINS
Sistema de Recomendação - Amigos DINS
 
Terremotos
TerremotosTerremotos
Terremotos
 
Regresão Múltipla
Regresão MúltiplaRegresão Múltipla
Regresão Múltipla
 
Linguagem Go
Linguagem GoLinguagem Go
Linguagem Go
 
Teste Dirigido por Modelos
Teste Dirigido por ModelosTeste Dirigido por Modelos
Teste Dirigido por Modelos
 
Demonstração ApTest Manager
Demonstração   ApTest ManagerDemonstração   ApTest Manager
Demonstração ApTest Manager
 
MetaCG
MetaCG MetaCG
MetaCG
 
Redes Sociais - Utilizando-as de forma inteligente
Redes Sociais - Utilizando-as de forma inteligenteRedes Sociais - Utilizando-as de forma inteligente
Redes Sociais - Utilizando-as de forma inteligente
 
Apresentação JavaCG MetaCG
Apresentação JavaCG MetaCGApresentação JavaCG MetaCG
Apresentação JavaCG MetaCG
 
Python aula 1
Python aula 1Python aula 1
Python aula 1
 
Python aula 2
Python aula 2Python aula 2
Python aula 2
 

Apache Kafka modelo publish-subscribe

  • 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
  • 29.
  • 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.