O documento apresenta Kafka, uma plataforma de streaming de dados em tempo real. Kafka foi criado pela LinkedIn para lidar com grandes volumes de dados com baixa latência. O documento discute conceitos como produtores, consumidores, tópicos e partições, além de apresentar ferramentas como Kafka Streams e Kafka Connectors.
3. História
- 2010 Linkedin sofria em consumir
grandes volumes de data com baixa
latência, arquiteturas de eventos em
tempo real
- Pipelines de dados customizados
para streaming e queues, deveriam
escalar junto com o site
- Kafka criado internamente para
receber informações sobre todas as
ações no site e logs agregados de
outros serviços
- Pontos principais do Kafka: API
simples produtor/consumidor, alto
volume, arquitetura escalável desde o
inicio
Antes
Depois
5. Produtor
- Servidores enviando logs
- Informação de dispositivos IOT
- Aplicação gerando eventos
- Kafka: Array de bytes
Consumidor
- Lê/Consome os dados de um
cluster Kafka
- Inscreve em um tópico, não
consome de um produtor
- Destino final de um dado
6. Tópicos
- Logs de dados contínuos
- Formato de chave/valor+timestamp
- Sem interferência entre grupos
Particionamento
- Divisão de tópicos
(performance+escalabilidade)
- Produtor pode decidir partição
- Uma partição por consumidor
em um grupo
7. Tolerante a falhas
- Partições são replicadas entre
brokers
- Broker eleito líder da partição
8. Kafka Streams
- API permite consumir de 1+ tópicos
- Produzir dados para 1+ tópicos
- Enriquecer dados
final KStream<String, String> textLines = builder.stream(inputTopic);
final Pattern pattern = Pattern.compile("W+", Pattern.UNICODE_CHARACTER_CLASS);
final KTable<String, Long> wordCounts = textLines
.flatMapValues(value -> Arrays.asList(pattern.split(value.toLowerCase())))
.groupBy((keyIgnored, word) -> word)
.count();
wordCounts.toStream().to(outputTopic, Produced.with(Serdes.String(), Serdes.Long()));
9. Kafka Connectors
- Framework para conectar sistemas
externos no Kafka
- Componentes prontos
- Conectores Source/Sink
- Source envia os dados para Kafka
- Sink lê os dados do Kafka
10. Zookeeper
- Eleição de Controller
- Broker responsável pela
liderança das partições
- Zookeeper elege e monitora
Controller
- Membros do cluster
11. Kafka no Linkedin
- 4,5 trilhão de mensagens por dia
- 300 Terabytes de entrada
- 900 Terabytes de saída
- 4.5 milhões de mensagens por segundo,
único cluster
- 1300 servidores
12. Kafka como serviço
- Confluent cloud
- $0,11/GB ou $0,13/GB entrada
- $0,11/GB ou $0,13/GB saída
- $0,10/GB-mês storage
- Amazon SQS: Alternativa mais antiga para
Kafka
- Standard queue: $0.40 (por milhão/req)
- FIFO Queue: $0.50 (por milhão/req)
- Amazon Kinesis: Mais proximo de "Kafka
como serviço", partições e réplicas
- Shard Hour (1MB/second ingress,
2MB/second egress): $0.015
- PUT Payload Units (1,000,000 units):
$0.014