---
# System prepended metadata

title: Proposta Cluster Kafka
tags: [kafka]

---

# 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.



![image](https://hackmd.io/_uploads/SJM8o_jP6.png)



## 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.
.
.
.
![image](https://hackmd.io/_uploads/HyDoaujPT.png)

 

