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

Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasRodrigo Branas
 
Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...
Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...
Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...eneck
 
Active Record PowerPoint
Active Record PowerPointActive Record PowerPoint
Active Record PowerPointElizabeth Cruz
 
글로벌 고객 사례를 통하여 소개하는 혁신적인 데이터 웨어하우스 - 김형일 (AWS 솔루션즈 아키텍트)
글로벌 고객 사례를 통하여 소개하는 혁신적인 데이터 웨어하우스 - 김형일 (AWS 솔루션즈 아키텍트)글로벌 고객 사례를 통하여 소개하는 혁신적인 데이터 웨어하우스 - 김형일 (AWS 솔루션즈 아키텍트)
글로벌 고객 사례를 통하여 소개하는 혁신적인 데이터 웨어하우스 - 김형일 (AWS 솔루션즈 아키텍트)Amazon Web Services Korea
 
React JS - Parte 1
React JS - Parte 1React JS - Parte 1
React JS - Parte 1Bruno Catão
 
Curso de css3 unidade 1 - introdução ao css
Curso de css3   unidade 1 - introdução ao cssCurso de css3   unidade 1 - introdução ao css
Curso de css3 unidade 1 - introdução ao cssLéo Dias
 
Aula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para WebAula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para WebDaniel Brandão
 
Banco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoBanco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoLeinylson Fontinele
 
Access Control in AWS Glue Data Catalog (ANT376) - AWS re:Invent 2018
Access Control in AWS Glue Data Catalog (ANT376) - AWS re:Invent 2018Access Control in AWS Glue Data Catalog (ANT376) - AWS re:Invent 2018
Access Control in AWS Glue Data Catalog (ANT376) - AWS re:Invent 2018Amazon Web Services
 
Amazon Elastic MapReduce Deep Dive and Best Practices (BDT404) | AWS re:Inven...
Amazon Elastic MapReduce Deep Dive and Best Practices (BDT404) | AWS re:Inven...Amazon Elastic MapReduce Deep Dive and Best Practices (BDT404) | AWS re:Inven...
Amazon Elastic MapReduce Deep Dive and Best Practices (BDT404) | AWS re:Inven...Amazon Web Services
 
Metodologia orientado a objetos
Metodologia orientado a objetosMetodologia orientado a objetos
Metodologia orientado a objetosGabriel Faustino
 
Introdução ao Google Cloud Platform: Computação em Nuvem do Google
Introdução ao Google Cloud Platform: Computação em Nuvem do GoogleIntrodução ao Google Cloud Platform: Computação em Nuvem do Google
Introdução ao Google Cloud Platform: Computação em Nuvem do GoogleJose Papo, MSc
 
Análise Orientada a Objetos - Casos de Uso
Análise Orientada a Objetos - Casos de UsoAnálise Orientada a Objetos - Casos de Uso
Análise Orientada a Objetos - Casos de UsoCursoSENAC
 
Desenhando Componentes de Software com UML
Desenhando Componentes de Software com UMLDesenhando Componentes de Software com UML
Desenhando Componentes de Software com UMLRildo (@rildosan) Santos
 
Google docs - Editor de Texto
Google docs - Editor de TextoGoogle docs - Editor de Texto
Google docs - Editor de TextoEVA UNITAU
 

Mais procurados (20)

Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
 
Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...
Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...
Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...
 
Active Record PowerPoint
Active Record PowerPointActive Record PowerPoint
Active Record PowerPoint
 
글로벌 고객 사례를 통하여 소개하는 혁신적인 데이터 웨어하우스 - 김형일 (AWS 솔루션즈 아키텍트)
글로벌 고객 사례를 통하여 소개하는 혁신적인 데이터 웨어하우스 - 김형일 (AWS 솔루션즈 아키텍트)글로벌 고객 사례를 통하여 소개하는 혁신적인 데이터 웨어하우스 - 김형일 (AWS 솔루션즈 아키텍트)
글로벌 고객 사례를 통하여 소개하는 혁신적인 데이터 웨어하우스 - 김형일 (AWS 솔루션즈 아키텍트)
 
React JS - Parte 1
React JS - Parte 1React JS - Parte 1
React JS - Parte 1
 
Curso de css3 unidade 1 - introdução ao css
Curso de css3   unidade 1 - introdução ao cssCurso de css3   unidade 1 - introdução ao css
Curso de css3 unidade 1 - introdução ao css
 
Aula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para WebAula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para Web
 
Banco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoBanco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e Especialização
 
ABD217_From Batch to Streaming
ABD217_From Batch to StreamingABD217_From Batch to Streaming
ABD217_From Batch to Streaming
 
Access Control in AWS Glue Data Catalog (ANT376) - AWS re:Invent 2018
Access Control in AWS Glue Data Catalog (ANT376) - AWS re:Invent 2018Access Control in AWS Glue Data Catalog (ANT376) - AWS re:Invent 2018
Access Control in AWS Glue Data Catalog (ANT376) - AWS re:Invent 2018
 
TCO e otimização de custos na AWS
TCO e otimização de custos na AWSTCO e otimização de custos na AWS
TCO e otimização de custos na AWS
 
Amazon Elastic MapReduce Deep Dive and Best Practices (BDT404) | AWS re:Inven...
Amazon Elastic MapReduce Deep Dive and Best Practices (BDT404) | AWS re:Inven...Amazon Elastic MapReduce Deep Dive and Best Practices (BDT404) | AWS re:Inven...
Amazon Elastic MapReduce Deep Dive and Best Practices (BDT404) | AWS re:Inven...
 
Metodologia orientado a objetos
Metodologia orientado a objetosMetodologia orientado a objetos
Metodologia orientado a objetos
 
Introdução ao Google Cloud Platform: Computação em Nuvem do Google
Introdução ao Google Cloud Platform: Computação em Nuvem do GoogleIntrodução ao Google Cloud Platform: Computação em Nuvem do Google
Introdução ao Google Cloud Platform: Computação em Nuvem do Google
 
Análise Orientada a Objetos - Casos de Uso
Análise Orientada a Objetos - Casos de UsoAnálise Orientada a Objetos - Casos de Uso
Análise Orientada a Objetos - Casos de Uso
 
Desenhando Componentes de Software com UML
Desenhando Componentes de Software com UMLDesenhando Componentes de Software com UML
Desenhando Componentes de Software com UML
 
Google docs - Editor de Texto
Google docs - Editor de TextoGoogle docs - Editor de Texto
Google docs - Editor de Texto
 
Filas e mensageria com RabbitMQ
Filas e mensageria com RabbitMQFilas e mensageria com RabbitMQ
Filas e mensageria com RabbitMQ
 
Bootstrap [part 1]
Bootstrap [part 1]Bootstrap [part 1]
Bootstrap [part 1]
 

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.