Fundamentos do Apache Kafka e seu Ecossistema Explicado de Maneira Simples – Parte II – Kafka Connect
Olá, pessoal !
Aqui estou de volta com a série de artigos sobre o Kafka e a Confluent Platform. No artigo anterior, falamos de uma maneira um pouco mais geral sobre todo o ecossistema Kafka, e agora iremos detalhar um pouco mais cada um desses componentes.
Hoje, o assunto será o Kafka Connect !
O que é o Kafka Connect ?
O Kafka Connect é uma ferramenta poderosa integrada ao Apache Kafka que facilita a integração entre o Kafka e outros sistemas, como bancos de dados, sistemas de arquivos e plataformas de armazenamento em nuvem. Basicamente, ele é o responsável por fazer o Kafka conversar com o restante do seu ecossistema de forma automática e eficiente.
Características Principais
- Escalabilidade: Você pode rodar o Kafka Connect em clusters, garantindo alta disponibilidade e a capacidade de lidar com grandes volumes de dados.
- Facilidade de Configuração: Conectores pré-configurados tornam a integração com outros sistemas muito mais simples.
- Resiliência: Ele oferece tolerância a falhas, com recursos como recuperação de offsets e reenvio de mensagens.
- Transformações de Dados: Suporte a transformações em tempo real através de SMT (Single Message Transforms).
Conectores Source e Sink
No Kafka Connect, os conectores são divididos em duas categorias principais: Source e Sink.
Conectores Source (Fonte de Dados)
Os conectores Source pegam dados de sistemas externos e os enviam para o Kafka. Eles são como “coletores” que trazem informações de diferentes fontes para dentro da plataforma. Como exemplos posso citar:
- Extrair dados de um banco de dados relacional como PostgreSQL ou Oracle.
- Capturar logs de sistemas de arquivos.
- Coletar informações de APIs externas.
Exemplos de Conectores Source
- Conector JDBC (Source): Extrai dados de bancos de dados e publica em tópicos Kafka.
- Debezium: Captura alterações em tempo real (CDC) de bancos como MySQL, MongoDB e Oracle.
Imagine um sistema de pedidos em um banco de dados Oracle. O conector Debezium Source pega cada novo pedido e o envia para um tópico Kafka. Assim, outros sistemas podem consumir esses dados e processá-los de acordo com a necessidade.
Conectores Sink (Destino de Dados)
Os conectores Sink fazem o oposto: pegam dados do Kafka e os enviam para outros sistemas. Eles atuam como “entregadores”, levando os dados dos tópicos Kafka para os destinos desejados. Posso citar como exemplos:
- Enviar dados para um data warehouse como o Snowflake.
- Salvar mensagens Kafka em sistemas de armazenamento, como o Amazon S3.
- Indexar mensagens em sistemas de busca, como o Elasticsearch.
Exemplos de Conectores Sink
- Conector Elasticsearch (Sink): Envia dados do Kafka para um cluster Elasticsearch.
- Conector Amazon S3: Salva mensagens Kafka como arquivos em buckets S3.
Você tem um sistema de análise que precisa processar logs armazenados em Kafka. O conector S3 Sink pega esses logs e os salva em um bucket na nuvem, onde podem ser analisados por ferramentas de BI ou machine learning.
Transformação de dados: O que é SMT (Single Message Transform) ?
O SMT (Single Message Transform) é como um “filtro inteligente” que você pode aplicar aos dados enquanto eles estão sendo transferidos entre sistemas. Ele permite modificar ou transformar as mensagens individualmente, sem a necessidade de alterar o sistema de origem ou destino.
Por que usar SMT ?
- Limpeza de Dados: Ajustar ou normalizar os dados antes que cheguem ao destino.
- Enriquecimento: Adicionar informações extras às mensagens.
- Filtragem: Remover campos ou mensagens desnecessárias.
A transformação de dados pode ser realizada utilizando processadores de stream como o Apache Flink ou o Kafka Streams, que são altamente robustos e flexíveis. Eles são ideais para cenários que envolvem análises complexas, agregações ou lógica de processamento avançada. No entanto, para ajustes mais simples, como alterar formatos de campo, adicionar metadados ou filtrar mensagens, o SMT (Single Message Transform) é uma excelente opção.
O SMT permite realizar transformações leves diretamente no fluxo de dados do Kafka Connect, sem a necessidade de configurar ou manter um pipeline de processamento dedicado. Isso reduz a complexidade e atende rapidamente a necessidades pontuais de transformação.
Exemplo Prático de SMT
Imagine que você está enviando dados de um banco de dados para o Kafka e o campo de data está no formato yyyy-MM-dd HH:mm:ss
. Porém, o sistema de destino espera o formato dd-MM-yyyy
. Aqui entra o SMT para salvar o dia !
Veja abaixo como configurar o SMT para realizar essa transformação:
Configuração do Conector com SMT
{
"name": "jdbc-source-connector",
"config": {
"connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
"tasks.max": "1",
"connection.url": "jdbc:postgresql://seu-servidor:5432/seu-banco",
"connection.user": "seu-usuario",
"connection.password": "sua-senha",
"topic.prefix": "postgres-",
"poll.interval.ms": 5000,
"table.whitelist": "clientes",
"transforms": "FormatDate",
"transforms.FormatDate.type": "org.apache.kafka.connect.transforms.TimestampConverter$Value",
"transforms.FormatDate.field": "data_cadastro",
"transforms.FormatDate.target.type": "string",
"transforms.FormatDate.format": "dd-MM-yyyy"
}
}
O campo data_cadastro
será convertido para o formato dd-MM-yyyy
antes de ser enviado ao Kafka, garantindo que o sistema de destino receba o dado no formato esperado.
Vantagens do Kafka Connect na Confluent Platform
A Confluent Platform adiciona uma camada de funcionalidades poderosas ao Kafka Connect, tornando sua operação ainda mais simples e robusta.
- Conectores Full Managed: Reduzem a complexidade operacional, já que a Confluent gerencia toda a infraestrutura do conector.
- Monitoramento Centralizado: O Control Center permite monitorar conectores, métricas de desempenho e resolver problemas rapidamente.
- Segurança Aprimorada: Com controle de acesso baseado em funções (RBAC) e criptografia avançada.
Tipos de Conectores
Vamos falar um pouco sobre as principais categorias de conectores disponíveis na Confluent Platform.
Conectores Full Managed
Estes conectores são gerenciados pela Confluent no Confluent Cloud. Isso significa que você não precisa se preocupar com infraestrutura ou atualizações. Exemplos:
- Snowflake: Move dados do Kafka para um data warehouse.
- Amazon S3: Salva mensagens em buckets na nuvem.
Benefícios
- Sem necessidade de manutenção.
- Alta disponibilidade garantida pela Confluent.
Conectores Self-Managed
Aqui você instala e gerencia os conectores em sua própria infraestrutura. Exemplos:
- Debezium (CDC): Captura mudanças em tempo real de bancos de dados.
- Conector JDBC: Integra com bancos relacionais como PostgreSQL e MySQL.
Benefícios
- Maior flexibilidade.
- Ideal para ambientes on-premise ou híbridos.
Conectores da Comunidade
São criados por desenvolvedores da comunidade Kafka. Embora sejam gratuitos, o suporte pode variar. Exemplos:
- MongoDB Conector: Integra Kafka com bancos NoSQL.
- Conector Elasticsearch: Indexa dados em sistemas de busca.
Conectores Premium
Desenvolvidos pela Confluent com otimizações exclusivas para uso corporativo. Exemplos:
- Oracle CDC: Captura mudanças de dados com alta eficiência.
- SAP HANA: Conecta Kafka com sistemas ERP.
Conclusão
O Kafka Connect é uma ferramenta essencial para integrar o Apache Kafka a diversos sistemas, e com a Confluent Platform, o processo fica ainda mais simples e eficiente.
Se você quiser explorar mais sobre o Kafka Connect, confira como configurar o ambiente com Oracle CDC e JDBC nesta série de artigos. Ou, se preferir, veja como usar o Debezium Oracle CDC com JDBC em outra série especialmente dedicada a esse tema.
Nos encontramos no próximo artigo, onde vamos mergulhar no ksqlDB. Até lá !
Referências
Sergio, gostaria de parabeniza-lo pelo seus artigos sobre Kafka. Tenho aprendido muito com eles. Já aguardo pela continuação!
Fico muito feliz que esteja aprendendo com meus artigos Jorge. Esse é o real objetivo.
Qualquer dúvida, basta entrar em contato !
Nem tenho maquina para rodar isso (