# Proposta Detalhada do Apahe Kafka e Cluster
1. **Tópicos e partições**: Kafka organiza os dados em tópicos. Cada tópico é um fluxo de registros e os dados dentro de um tópico são divididos em diversas partições. Cada partição é uma sequência ordenada e imutável de registros. As partições permitem escalabilidade horizontal e paralelismo, permitindo que os dados sejam distribuídos entre vários corretores Kafka. Um servidor Kafka, com ID exclusivo que forma o componente básico de um cluster Kafka e é responsável por gerenciar mensagens entre produtores e consumidores)
2. **Produtores** : Produtores são aplicativos que gravam dados em tópicos Kafka. Eles publicam registros para tópicos específicos, que são então armazenados nas partições do tópico. Os produtores podem enviar registros explicitamente para uma partição específica ou permitir que Kafka determine a partição usando uma estratégia de particionamento.
3. **Consumidores** : Consumidores são aplicativos que leem dados de tópicos Kafka. Eles assinam um ou mais tópicos e consomem registros das partições às quais estão atribuídos. Os grupos de consumidores são usados para dimensionar o consumo, e cada partição dentro de um tópico pode ser consumida por apenas um consumidor dentro de um grupo. Isso permite que vários consumidores trabalhem em paralelo para processar os dados de diferentes partições do mesmo tópico.
4. **Corretores** : Kafka é executado como um cluster de servidores e cada servidor é chamado de corretor. Os corretores são responsáveis por lidar com solicitações de leitura e gravação de produtores e consumidores, bem como gerenciar as partições de tópicos. Um cluster Kafka pode ter vários corretores para distribuir a carga e garantir tolerância a falhas.
5. **Partições/Replicação** : Para obter tolerância a falhas e durabilidade de dados, Kafka permite configurar a replicação para partições de tópicos. Cada partição pode ter múltiplas réplicas, com uma réplica designada como líder e as outras como seguidoras. A réplica líder lida com todas as solicitações de leitura e gravação dessa partição, enquanto os seguidores replicam os dados do líder para permanecerem sincronizados. Se um corretor com réplica de líder falhar, um dos seguidores torna-se automaticamente o novo líder para garantir a operação contínua.
6. **Gerenciamento de deslocamentos** : Kafka mantém o conceito de deslocamentos para cada partição. Um deslocamento representa um identificador exclusivo para um registro dentro de uma partição. Os consumidores acompanham a sua compensação atual, permitindo-lhes retomar o consumo de onde pararam em caso de falha ou reprocessamento.
7. **ZooKeeper** : embora não faça parte do próprio Kafka, o ZooKeeper é frequentemente usado para gerenciar os metadados e coordenar os corretores em um cluster Kafka. Ajuda na eleição de líderes, informações de tópicos e partições e no gerenciamento da coordenação de grupos de consumidores.
## O que é Kafka?
No site do Apache Kafka: Apache Kafka é uma **plataforma de streaming de eventos** distribuída de código aberto usada por milhares de empresas para pipelines de dados de alto desempenho, análise de streaming, integração de dados e aplicativos de missão crítica.
Isso se parece muito com ambientes onde muitos servidores também desempenham um papel, diante disso, faz sentido ter uma boa ideia de como seus aplicativos e dado como podem se integrar e aproveitar os recursos do Kafka.
#### O Clustering Kafka refere-se à prática de executar vários **corretores Kafka** juntos como um grupo para formar um **cluster Kafka**.
#### O clustering é um aspecto fundamental da arquitetura Kafka, oferecendo vários benefícios, incluindo escalabilidade, tolerância a falhas e alta disponibilidade. Um cluster Kafka é usado para lidar com fluxos de dados em grande escala e garantir que o sistema permaneça operacional mesmo diante de falhas.
#### No cluster, os tópicos Kafka são divididos em múltiplas partições para obter escalabilidade e paralelismo. Cada partição é uma sequência imutável e ordenada linearmente de registros. **Portanto, as partições permitem que os dados sejam distribuídos entre vários agentes no cluster**.
- Deve-se observar que um cluster Kafka mínimo consiste em **3 corretores Kafka**, cada um dos quais pode ser executado em um servidor separado (virtual ou físico). A orientação de 3 nós é ajudar a evitar um cenário de divisão cerebral em caso de falha do corretor.
.
.
.
**Exemplo apresentação Kafka Cluster para o sistema Controle Free Flow**

.
.
.