Talk de introdução ao Apache Kafka: o que é, como funciona e onde deve ou não ser utilizado. Apresentando em conjunto o use case da Social Miner, que consiste de um entry-point de data lake com processamento via Apache Spark, finalizando com um hands-on de uma implementação básica de uma API persistindo em Kafka.
2. - Sistema de processamento de stream de dados em real
time / sistema de mensagem publish-subscribe distribuído:
- Persistência de mensagens com estrutura de disco O(1);
- Alto throughput: centenas de milhares de
mensagens/seg até em hardwares mais modestos;
- Clusterização no DNA: suporte a particionamento de
mensagens por entre servidores Kafka;
Apache Kafka
3. - Produto interno do LinkedIn;
- Open-sourced em 2011 e absolvido pela Apache
Foundation em 2012;
- Em 2014 engenheiros do LinkedIn criaram a Confluent,
empresa com foco em Kafka;
- Escrito em Scala e Java;
- Referência ao escritor alemão do século XX Franz Kafka;
Background
4. - Complexidade de integração:
- Sistema de registros;
- Ordenamento;
- Escalabilidade;
Data Integration
5. - POST
- PUT
- To “Pipe”
- To SQL;
- To Data
Lake;
Eventos
6. - Manter histórico de registros;
- Voltar no tempo (Allons-y);
- Reprocessamento;
Stream como registro
14. - Key, value, Timestamp;
- Imutável;
- Apenas inclusão;
- Persistido em disco;
Records
15. - Broker = nó no cluster;
- Producer escreve records
em um broker;
- Consumers leem records
em um broker;
- Líder / seguidor para
distribuição do cluster;
Producer & Consumer
16. - Tópico = nomenclatura
lógica para 1 ou mais
partições;
- Partições são replicadas;
- Ordenamento é garantido
apenas para uma partição;
Topics & Partitions
17. - ID único sequencial (por
partição);
- Consumers ou Kafka
mantêm o track do offset;
- Benefícios: Replay,
consumers com diferentes
velocidades, etc.
Offsets
18. - Escreve para o líder da
partição;
- Partições podem ser feitas
manualmente, baseadas
em uma chave ou
automáticas;
- Fator de replicação é
baseado no Tópico;
Particionamento
19. - Nome lógico para 1 ou mais
consumers;
- Consumo das mensagens é
feito em load balance por
entre todos os consumers
em um grupo;
Consumer groups
20. - Compressão de log (opcional);
- Disco não memória;
- Partições e líderes balanceados automaticamente;
- Heroku Kafka;
Cool features
21. - JVM é o oficial;
- Maioria das outras plataformas, pela comunidade;
- Confluent mantém clients C#, Go e Python;
- Baseado em polling;
Clients