Escolar Documentos
Profissional Documentos
Cultura Documentos
https://www.confluent.io/thank-you/kafka-definitive-guide-2/
Kafka
O que é?
Definição: É desenvolvido em Scala, mantido pela Confluent(spin off do Linkedin), conhecido por ser um sistema
distribuído, escalável e durável que recebe e envia mensagens para múltiplos produtores e consumidores em tempo
real.
Objetivo: Ser um message broker com alto throughput, confiável e com baixa latência para lidar com consumo de
dados em real time.
Motivações:
– Ter um pipeline centralizado para transferência de log/mensagens.
– Cobrir o gap dos sistemas tradicionais de mensageria que tem uma baixa latência, mas sem focar em
throughput.
– Focar na análise em vez da ingestão e no tratamento dos dados.
– Lidar com diversos tipos de Use Cases:
* Agregação de logs: coletar de diversas fontes logs e disponibilizar para consumidores como HDFS e
Solr.
* Processamento de Streaming: integração com framework streaming como Apache Spark Streaming
ou Apache Storm.
* Monitoramento de Atividades de Website: enviar eventos como chamadas de recursos REST e buscas
e permitir a consulta em dashboards e um ambiente off-line.
https://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying
Kafka
Por quê?
Pipeline ponto-a-ponto
Pipeline centralizado
http://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying
Kafka
As principais características
• Visão arquitetural muito próxima dos sistemas tradicionais de mensageria como ActiveMQ e RabbitMQ.
• Não garante a ordem das mensagens de um Topic, mas garante a ordem de uma partição.
• Processamento em tempo real, essencial para sistemas do tipo Complex Event Processing (CEP).
• Muitas vezes é necessário escrever código para producers/consumers (não é uma solução para usuário final).
http://www.michael-noll.com/blog/2013/03/13/running-a-multi-broker-apache-kafka-cluster-on-a-single-node/
Kafka
Componentes da Arquitetura
• Producer: Responsável por enviar mensagens para um ou mais Topics dos Brokers.
• Dados da coleta de um dispositivo IoT;
• Trace logs;
• Proxy;
• Frontweb;
• Consumer: Consome as mensagens de um ou mais Brokers. Utiliza um ponteiro (topic, partition, offset)
que controla a leitura em um Topic. Tem o estado de qual mensagem já foi consumida.
• Consumidores que salvam as mensagens em uma base de dados noSQL para análise em real time /
near real time;
• Consomem e salvam mensagem em um banco de dados em memória como Redis para
monitoramento de eventos de erro.
• Broker: Entidade que armazena as mensagens que são publicadas e consumidas.
• 2 x 4 core x86, 64 GB RAM (4GB Kafka + 60 GB page cache), RAID 10 com 12 ou 14 discos SATA.
• Zookeeper Server: Responsável por detectar a adição ou remoção de brokers e consumers, além de
coordenar a interface entre os Producers e Consumers. Importante: não controla qual consumidor leu qual
mensagem. Consegue balancear o processamento em cada Consumer, sabe qual foi o offset consumido em
cada partição.
• Mensagem: É enviada para um Topic, salva em uma partition e tem um identificador (offset).
• Topic: É um fluxo de mensagens de tipo específico. É composto por uma ou mais partições que são
replicadas.
• Partition: É a menor unidade do paralelismo. A ordem das mensagens na partição é mantida.
Kafka
Topic – Partitions
• Um conjunto de partitions replicadas é conhecido como ISR (In-Sync-Replicas).
• Possíveis durabilidades do Producer:
• 0 - (baixa latência) - Producer nunca espera por um ack.
• 1 - (latência média) - Producer recebe o ack depois do líder das replicas ter recebido o dado.
• -1 - (latência alta) - Producer recebe o ack depois de todos os ISR terem recebido o dado.
Garg (2013)
Kafka
Consumer
Garg (2013)
Kafka
Configuração Producer
http://www.infoq.com/articles/apache-kafka
Kafka
Configuração Consumer
streams[] = Consumer.createMessageStreams(“topic1”, 1)
for (message : streams[0]) {
bytes = message.payload();
// do something with the bytes
}
http://www.infoq.com/articles/apache-kafka
Kafka
Case Linkedin
Garg (2013)
Maven
Maven
Introdução
Requisitos de Sistema
Coordenadas do projeto
Relacionando Dependencias
Repositórios
Repositorios de Plugin
Plugins especificos
Estrategias de Build do Projeto
Maven
Arquivo pom.xml - tags
Maven
Arquivo pom.xml - tags
Maven
Arquivo pom.xml - tags
Maven
Arquivo pom.xml - tags
Maven
Arquivo pom.xml - tags
Maven
Arquivo pom.xml - tags
Maven
Comandos
Laboratório
Maven
Comandos
mvn archetype:generate
Maven
Comandos
Compilação
mvn compile
Maven
Comandos
mvn dependency:copy-dependencies
Maven
Comandos
mvn validate
Maven
Comandos
mvn test
Maven
Comandos
mvn package
Maven
Comandos
mvn integration-test
Maven
Comandos
mvn verify
Maven
Comandos
mvn install
Maven
Comandos
mvn deploy
Maven
Gerenciamento de Dependências