Ir para o conteúdo

Fila de Mensagens/PubSub: Kafka

Quote

Kafka is a distributed streaming platform.

  • LinkedIn
  • OpenSource em 2011
  • Projeto Apache em ????

Producers x Message Broker x Consumers

  • Produtores: enviam dados/mensagens/records (array de bytes)
  • Consumidores: recebem dados
  • Cluster/Broker: distribuído e tolerantes a falhas.
  • Conectores: integração simplificada com outras aplicações
  • Stream processors: spark ou outros frameworks; transformam dados

Brokers

  • Cluster de brokers
  • Distribuído
  • Tolerante a falhas
  • Desacoplamento espacial
  • Desacoplamento temporal
  • Tópicos, não endereços

Tópicos

  • Nome de uma stream de dados: ordem de serviço, exame de sangue, MSFT
  • Quantidade pode ser imensa.

Partição

  • Subdivisões de tópicos
  • Número de partições é definido por usuário
  • Cada partição está associada a um único servidor

Offset

  • Índice de uma mensagem em uma partição
  • Índices atribuídos na ordem de chegada
  • Offsets são locais às partições
  • Mensagens são unicamente identificadas por (tópico, partição, índice)

Consumer group

  • Carga pode ser muito grande para um consumidor
  • Compartilham o processamento de um tópico
  • Cada mensagem é processada por um membro do grupo
  • A mesma mensagem pode ser processada por múltiplos grupos
  • Número de consumidores \(\leq\) partições no tópico
  • Máximo de dois consumidores por partição (mantem pos. de cada um)

Siga o tutorial, até o passo 5.

  • Baixe e descompacte
  • Rode o zookeeper (Terminal 1)
  • Rode o Kafka (Terminal 2)
  • Crie um tópico (Terminal 3) - Mais de uma partição em um servidor
  • Conecte-se ao Zookeeper e dê uma olhada. O que está vendo?
  • Liste os tópicos criados
  • Envie algumas mensagens
  • Inicie um consumidor (Terminal 4)
TODO

https://kafka.apache.org/