# Proposta Cluster Kafka
## Conexões com o Kafka
- Kafka Connect é um componente do Kafka que fornece integração de dados entre bancos de dados,armazenamentos de valores-chave, índices de pesquisa, sistemas de arquivos e corretores Kafka.
- Kafka Connect fornece uma estrutura comum para você definir conectores , que fazem o trabalho demover dados para dentro e para fora do Kafka.
### Existem dois tipos diferentes de conectores:
- Conectores de origem que atuam como produtores para Kafka
- Conectores coletores que atuam como consumidores para Kafka
## Produtores
### Produtores são clientes que gravam eventos no Kafka.
- O produtor especifica os tópicos nos quais eles gravarão e controlaem como os eventos são atribuídos às partições dentro de um tópico.
Isso pode ser feito de forma round-robin para balanceamento de carga ou pode ser feito de acordo com algumafunção de partição semântica, como pela chave de evento.
Kafka fornece a API Java Producer para permitir que aplicativos enviem fluxos de eventos para um cluster Kafka.
## Consumidores
### Os consumidores são clientes que leem eventos do Kafka.
- Os únicos metadados retidos por consumidor são o deslocamento ou a posição desse consumidor emum tópico.
- Essa compensação é controlada pelo consumidor.
- Normalmente um consumidor avançará seu deslocamento linearmente à medida que lê os registros, porém, como a posição é controlada peloconsumidor, ele pode consumir os registros em qualquer ordem.
- Por exemplo, um consumidor pode redefinir para um deslocamento mais antigo para reprocessar dados do passado ou pular para o registro mais recente e começar a consumir “agora”.
## Tópicos
### Partições
- Os tópicos são divididos em partições , o que significa que um único log de tópico é dividido em vários logs localizados em diferentes corretores Kafka.
- Dessa forma, o trabalho de armazenamento de mensagens, gravação de novas mensagens e processamento de mensagens existentes pode ser dividido entre vários nós do cluster.
- Esse posicionamento distribuído de seus dados é muitoimportante para a escalabilidade porque permite que aplicativos clientes leiam e gravem os dadosde/para vários corretores ao mesmo tempo.
- Quando um novo evento é publicado em um tópico, ele é anexado a uma das partições do tópico. Eventos com a mesma chave de evento, como o mesmo identificador de cliente ou ID de veículo, são gravados na mesma partição, e Kafka garante que qualquer consumidor de uma determinada partiçãode tópico sempre lerá os eventos dessa partição exatamente na mesma ordem em que foram gravados.

## Fluxos de Kafka
No Kafka, um processador de fluxo é qualquer coisa que receba fluxos contínuos de dados de tópicosde entrada, execute algum processamento nessa entrada e produz fluxos contínuos de dados paratópicos de saída.
Por exemplo, um aplicativo de compartilhamento de viagens pode receber fluxos deentrada de motoristas e clientes e gerar um fluxo de viagens em andamento.
Você pode fazer um processamento simples diretamente usando as APIs do produtor e doconsumidor.
No entanto, para transformações mais complexas, Kafka fornece
Kafka Streams
Kafka Streams fornece uma biblioteca cliente para construir aplicativos e microsserviços em temporeal de missão crítica, onde os dados de entrada e/ou saída são armazenados em clusters Kafka.
Vocêpode criar aplicativos com Kafka Streams que executam tarefas de processamento não triviais quecalculam agregações de fluxos ou unem fluxos.
Os fluxos ajudam a resolver problemas como: manipulação de dados fora de ordem, reprocessamentode entrada conforme alterações de código, execução de cálculos com estado, etc.
Streams baseia-se nas primitivas principais do Kafka, que especificamente usa.
.
.
.
