Introdução ao Kafka Connect
Definição
É um componente gratuito e open-source do Apache Kafka.
Ele exerce uma função parecida com um hub de dados centralizado para integrações simples entre sistemas de armazenamento de dados (banco de dados, key-value store, search indexes e file systems).
IMPORTANTE: o Kafka Connect NÃO é uma ferramenta de ETL (Extract, Transform, Load), mas é possível realizar transformações simples a partir de um recurso chamado SMT (Simple Message Transformation)
Dinâmica de funcionamento
Estrutura
Existem 2 clusters (Apache Kafka e Kafka Connect) que se comunicam entre si.
O Kafka Connect possui vários conectores (connectors). Existem 2 tipos de conectores:
-
Data Source Connectors: conectam com fontes de dados (MySQL) e inserem esses dados (contidos no MySQL) dentro de uma fila no Apache Kafka
-
Sinks: entregam os dados a um serviço (JDBC, Elasticsearch, AWS Lambda)
Standalone Workers
É um worker que é responsável por executar uma tarefa.
worker: geralmente é uma máquina
Distributed Workers
É um cluster que possui vários workers, logo as tarefas são distribuídas entre os conectores de cada worker.
Configuração de um conector
Propriedades
-
name
: nome do conector -
connector.class
: classe do conector (clonar o repositório ou instalar via Confluent Hub CLI) -
kafka.status.topic
: tópico responsável por armazenas os dados extraídos de uma fonte de dados (utilizado em Data Source Connectors)
Exemplo
name = twitter
connector.class = com.github.jcustenborder.kafka.connect.twitter.TwitterSourceConnector
twitter.oauth.consumerKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXX
twitter.oauth.consumerSecret = XXXXXXXXXXXXXXXXXXXXXXXXXXXX
twitter.oauth.accessToken = XXXXXXXXXXXXXXXXXXXXXXXXXXXX
twitter.oauth.accessTokenSecret = XXXXXXXXXXXXXXXXXXXXXXXXXXXX
filter.keywords = bbb
kafka.status.topic = tweets
process.deletes = false