DEV Community

Yan.ts
Yan.ts

Posted on

3 1

Kafka Connect

Kafka connect é um componente do Apache Kafka que trabalha como um hub de dados centralizados para integrações simples, então ele serve muito para pegar dados de um lado e jogar para um banco de dados ou alguma outra aplicação.

Dinâmica

O Kafka vai ter connectors que podem estar ligados a data sources ou Sinks, esse conector vai constantemente pegar os dados de um data source como um postgres por exemplo em um topico do kafka e desse topico para um Sink como um ElasticSearch

Standalone Workers

O Kafka connect é formado a partir de workers que são na verdade maquinas que rodam tarefas ou seja eles ficam pegando os dados de um sistema A e guardando no Kafka ou pegando do kafka e jogadno em um sistema B, esses workers podem ter mais de uma tarefa para que eles rodem em paralelo

Distributed Workers

Nesse caso os workers vão trabalhar em um cluster onde as maquinas vão se ajudar a trabalhar nas tarefas, por exemplo, se tivermos uma tarefa com mais de uma partição, podemos deixar esses workers cada um lendo de uma partição semelhante como o consumer do próprio kafka funciona. No caso de workers distribuídos os workers individualmente podem executar mais de uma tarefa também.

Converters

As Tarefas usam os converters para mudar o formato dos dados para leitura ou escrita no kafka então podemos informar o tipo dos dados que estamos trabalhando, evitando assim o problema de por exemplo termos um int que acabou sendo convertido de forma errônea para string, temos algumas opções de formatos de dados como:

  • Avro
  • Protobuf (dados binarios)
  • JsonSchema
  • Json
  • String
  • ByteArray

Image description

Nessa imagem temos um exemplo mais ou menos de como funciona o connect pega os dados e converte para o formato Avro e salva no Kafka, e então o o conector do Sink pega esses dados converte para outro formato e joga de volta para a Sink

DLQ - Dead Letter Queue

Quando tem um registro invalido o erro pode ser tratado na configuração do conector. Porem esse tipo de configuração só pode ser realizado para conectores do tipo Sink, que são dados que já estão no Kafka.

Temos alguns tipos de tolerancia para esses errors:

  • none: Caso dê erro a tarefa vai falhar, porem ela vai fazer a tarefa parar
  • all: Ignora os errors e continua com a tarefa (porem dessa forma não vai ficar nos logs esse errors, vai ser de fato completamente ignorado)
  • errors.deadleatterqueue.topic.name = : com a tolerância de errors como all e essa configuração, todas as vezes que der erro vamos pegar a mensagem e jogar no tópico que passamos o nome, e no header da mensagem vai ter o erro que o kafka connect encontrou

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay