O Apache Kafka está em constante evolução devido à sua natureza open source. Suportado pela Confluent e mantido pela fundação Apache, ao longo dos anos ele se tornou a maior comunidade de código fonte aberto do mundo.

Isso acontece devido à sua abrangência de uso. Portanto, é possível encontrar soluções para diversos problemas relacionados ao fluxo de dados. Funcionando como uma plataforma de streaming, o Kafka coleta dados diretamente da fonte e entrega para a aplicação responsável pelo consumo.

Além disso, a plataforma é utilizada para o processo de ETL (Extract, Transform and Load), responsável por fazer cópia de registros de um banco de dados para o outro, em geral, uma base analítica (OLAP). Devido a isso, muitos autores acreditam que o futuro do ETL está associado ao Kafta, um intermediário que diminui a complexidade do uso dessas ferramentas.
Diante da importância do Kafka, o presente artigo contará com 3 dicas para suportar o uso da plataforma de streaming na sua versão open source. Continue a leitura para saber mais.

Dimensione o conjunto Zookeeper

Chamado de conjunto, o cluster Zookeeper tem como recomendação o uso de servidores ímpares. Isso acontece porque a maior parte do quórum precisa estar funcionando para que o Zookeeper responda corretamente às solicitações.
Portanto, com um conjunto de três nós é possível executar um nó ausente. A partir de cinco, o número de nós ausentes cresce para dois. O mais recomendado é executar o cluster com cinco nós. Isso pode ser modificado nas configurações do conjunto, mas será necessário recarregar um nó de cada vez.

Vale ressaltar que caso o conjunto não suporte a desativação de mais de um nó simultaneamente, a realização manual do trabalho representa um risco. Também é interessante deixar claro que não se deve dimensionar o Zookeeper para mais de sete nós.

Use corretores confiáveis

Ainda que seja usada a configuração mais confiável nos corretores, o sistema ainda pode passar por situações de perdas acidentais de dados. Isso pode acontecer em situações nas quais os corretores são configurados com três réplicas e a eleição de líder impura está desabilitada, entre outros cenários possíveis.

Entretanto, existem maneiras de evitar este tipo de resultado. Assim, existem duas medidas importantes que podem ser tomadas por todas as pessoas que produzem para Kafka. A primeira delas é usar a configuração adequada de acks, o que vai atender de forma eficiente aos requisitos de confiabilidade.

A segunda medida consiste em tratar os erros da forma correta, quer eles estejam ligados à configuração ou ao código.

Configure o consumidor para processamento de dados confiável

Atualmente, existem quatro propriedades distintas na configuração do consumidor. Elas são importantes para que ele apresente um comportamento confiável e funcione como o desejado.

  • group.id: quando dois consumidores possuírem o mesmo ID de grupo e estiverem inscritos no mesmo tópico, cada um recebe um subconjunto de partições e, portanto, lê apenas uma parte das mensagens individualmente. Em caso de necessidade de um consumidor que veja as mensagens sozinho, é preciso usar um group.id exclusivo.
  • auto.offset.reset: o parâmetro é responsável pelo controle do que o consumidor faz quando não existe uma compensação ou quando o consumidor pede compensações ausentes do corretor. Nesse caso, é possível optar por fazer com que consumidor comece no final da partição, minimizando o processamento duplicado. Porém, vale citar que isso pode gerar a perda de algumas mensagens.
  • enable.auto.commit: os commits de compensação automática garantem que o sistema não faça deslocamentos que não foram processados. Porém, não é possível ter controle a respeito do número de registros duplicados sem configurações sofisticadas.
  • auto.com mit.interval.ms: a confirmação automática dos offsets pode ser configurada de acordo com a sua frequência e o padrão é que isso aconteça a cada cinco segundos. Uma confirmação mais frequente adiciona sobrecarga. Em contrapartida, reduz o número de duplicatas.

Quer saber mais sobre o Kafka e dominar a ferramenta? Conheça especificidades no blog da AdviseU. Em caso de dúvidas, fale com um especialista.