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