Visão geral do Kafka Connect

O Kafka Connect é a ferramenta preferida para integração de dados para desenvolvedores do Kafka. Ele fornece uma estrutura para conectar o Kafka a sistemas externos, como bancos de dados, filas de mensagens e sistemas de arquivos.

O Kafka Connect oferece um conjunto selecionado de plug-ins de conector integrados, testados e mantidos por Google Cloud. Esses plug-ins de conector são corrigidos e atualizados automaticamente, simplificando a manutenção e garantindo a compatibilidade. OGoogle Cloud também oferece monitoramento e geração de registros integrados para manter a integridade dos seus pipelines.

As APIs do Kafka Connect são oferecidas como parte do serviço gerenciado do Google Cloud para Apache Kafka. Essas APIs podem ser acessadas pelo managedkafka.googleapis.com e são integradas ao console Google Cloud e às bibliotecas de cliente. Para gerenciar o Kafka Connect, use o console do Google Cloud , a CLI gcloud, a API Managed Kafka, as bibliotecas de cliente do Cloud ou o Terraform.

Casos de uso do Kafka Connect

O Kafka Connect oferece suporte à integração de dados entre seu cluster do Serviço Gerenciado para Apache Kafka e vários outros sistemas. Confira alguns casos de uso importantes:

  • Migre suas implantações atuais do Kafka para o Serviço gerenciado para Apache Kafka.

  • Replique seu cluster do Serviço gerenciado para Apache Kafka em outra região para recuperação de desastres.

  • Transmita dados do Serviço gerenciado para Apache Kafka para o BigQuery, o Cloud Storage e o Pub/Sub.

Termos do Kafka Connect

Essas seções abordam alguns componentes principais do Kafka Connect.

Conectar cluster

Um cluster do Connect é uma implantação distribuída do Kafka Connect com plug-ins e configurações de conectores pré-empacotados. Cada cluster do Connect está associado a um cluster principal do Serviço gerenciado para Apache Kafka. Esse cluster principal armazena o estado dos conectores em execução no cluster do Connect.

Em geral, o cluster principal do Serviço Gerenciado para Apache Kafka também serve como destino para todos os conectores de origem e origem para todos os conectores de coletor em execução no cluster do Connect associado.

Um único cluster do Serviço Gerenciado para Apache Kafka pode ter vários clusters do Connect. Se você estiver executando o MirrorMaker 2.0, um cluster do Connect poderá se conectar a clusters não principais do Serviço gerenciado para Apache Kafka ou clusters autogerenciados do Kafka para ler ou gravar dados de tópicos. Esse processo permite a replicação de tópicos entre diferentes clusters.

Do ponto de vista do modelo de recursos, um cluster do Connect é um recurso separado de um cluster do Serviço gerenciado para Apache Kafka.

Suponha que você tenha um cluster do Serviço Gerenciado para Apache Kafka em que armazena dados de tráfego do site. Você quer transmitir esses dados para o BigQuery para análise. É possível criar um cluster do Connect e usar um conector de coletor do BigQuery para mover os dados dos tópicos do Kafka para o BigQuery. Este cluster do Connect está associado ao seu cluster do Serviço gerenciado para Apache Kafka como cluster principal.

Plug-in do conector

Um pacote de software para criar conectores. Pense nisso como o código que define a lógica do conector.

  • Um conector pode ser de origem ou de destino. Um conector de origem grava dados de uma origem em um cluster do Serviço Gerenciado para Apache Kafka.

  • Um conector de gravador grava dados de um cluster do Serviço Gerenciado para Apache Kafka em um gravador.

O Managed Service para Apache Kafka oferece suporte a vários tipos de plug-ins de conector integrados que podem ser configurados para criar conectores. Esses conectores oferecem integrações com serviços comuns, como Pub/Sub ou BigQuery. Estes são os plug-ins de conector:

  • Plug-in do conector de coletor do BigQuery

  • Plug-in do conector de coletor do Cloud Storage

  • Plug-in do conector de origem do Pub/Sub

  • Plug-in do conector de coletor do Pub/Sub

  • Plug-ins de conector do MirrorMaker 2.0

Conector

Um conector é uma instância em execução de um plug-in de conector em um cluster do Connect específico. É possível ter vários conectores criados com o mesmo plug-in de conector, cada um com uma configuração específica. Exemplos de configuração incluem diferentes detalhes de autenticação e configurações operacionais. Um conector é implantado, configurado e gerenciado no cluster do Connect. Ele pode ser iniciado, interrompido, pausado, reiniciado e ter a configuração atualizada.

Os componentes de um conector são discutidos nas próximas seções.

Conversões

Os conversores são componentes cruciais do Kafka Connect responsáveis pela serialização e desserialização. Eles traduzem dados entre o formato de fio de bytes brutos encontrado em tópicos do Kafka, como no formato Avro ou JSON, e a representação de dados estruturados internos do Kafka Connect.

Função dos conversores

  • Para conectores de coletor, os conversores desserializam dados do formato de fio do tópico para a representação interna e estruturada de dados do Kafka Connect, que o conector usa para gravar no sistema de destino.

  • Para conectores de origem, os conversores serializam os dados da representação interna e estruturada de dados do Kafka Connect, conforme fornecido pelo conector, e no formato de transmissão especificado para o tópico do Kafka.

Esse formato interno serve como uma representação comum, permitindo várias etapas de processamento intermediárias. Essas etapas incluem primitivos como filtros, predicados, transformações e conversores, que operam nesse formato interno unificado. Ao usar um formato interno abstrato, a lógica dessas etapas intermediárias permanece independente dos formatos específicos de dados de entrada ou saída.

Um conversor é necessário quando você precisa interagir com os dados além de apenas transmiti-los. Especificamente, os conversores são necessários para casos em que você precisa realizar etapas de processamento intermediárias, como predicados ou transformações, de maneira refinada e com reconhecimento de estrutura.

Se você só pretende mover uma string de bytes (mesmo que seja JSON) de uma fonte para o Kafka sem manipulação, não é necessário um conversor.

Em uma configuração de conector, se você não especificar os conversores de chave e valor, o conector usará o valor padrão ByteArrayConverter. O valor org.apache.kafka.connect.converters.ByteArrayConverter não aplica nenhuma transformação aos dados e os transmite no formato original.

Conversores compatíveis

Nesta versão,o Google Cloud aceita os seguintes conversores integrados:

  • org.apache.kafka.connect.converters.ByteArrayConverter: converte dados em e de matrizes de bytes. Esse é o conversor padrão. Ele transmite dados pelo conector como os bytes brutos subjacentes.

  • org.apache.kafka.connect.json.JsonConverter: converte dados para e do formato JSON.

  • org.apache.kafka.connect.storage.StringConverter: converte dados para e do formato de string.

  • org.apache.kafka.connect.converters.ByteArrayConverter: converte dados em e de matrizes de bytes.

  • org.apache.kafka.connect.converters.DoubleConverter: converte dados para e do formato Double.

  • org.apache.kafka.connect.converters.FloatConverter: converte dados para e do formato Float.

  • org.apache.kafka.connect.converters.IntegerConverter: converte dados para e do formato de número inteiro.

  • org.apache.kafka.connect.converters.LongConverter: converte dados para e do formato Long.

  • org.apache.kafka.connect.converters.ShortConverter: converte dados para e do formato Short.

  • org.apache.kafka.connect.converters.BooleanConverter: converte dados para e do formato booleano.

  • io.confluent.connect.avro.AvroConverter: converte dados para e do formato Apache Avro.

Nesta versão, o Kafka Connect não oferece suporte à validação em um esquema remoto usando o Schema Registry.

Para informações sobre os conversores preferidos de cada conector, consulte a documentação específica.

Configuração padrão do conversor

O conversor de chave e valor padrão para todos os conectores compatíveis é org.apache.kafka.connect.json.JsonConverter.

Ao configurar os conectores, especifique o conversor adequado para a chave e o valor das mensagens do Kafka. Por exemplo, se você estiver trabalhando com dados JSON, use JsonConverter. Se os dados estiverem em um formato de string, use StringConverter.

Algumas configurações comuns incluem:

  • tasks.max: o número máximo de tarefas a serem criadas para este conector. Isso controla o paralelismo do conector. Aumentar o número de tarefas pode melhorar a capacidade de processamento, mas também aumenta o consumo de recursos (CPU e memória). O valor ideal depende da carga de trabalho e dos recursos alocados aos workers do cluster do Connect e, para conectores de gravador, do número de partições de tópicos do Kafka.

  • value.converter: o conversor a ser usado para serializar o valor das mensagens antes de enviá-las ao bucket do Cloud Storage. Os conversores comuns incluem:

    • org.apache.kafka.connect.json.JsonConverter: para dados JSON. Muitas vezes, é necessário definir value.converter.schemas.enable=false ao usar esse conversor com JSON simples (sem um esquema).

    • org.apache.kafka.connect.converters.ByteArrayConverter: para preservar o conteúdo exato das mensagens em dois sistemas.

    • org.apache.kafka.connect.storage.StringConverter: para strings de texto simples.

  • key.converter: o conversor a ser usado para serializar a chave das mensagens. As mesmas opções de conversor de value.converter são aplicadas. Se as mensagens não tiverem chaves, geralmente é possível usar org.apache.kafka.connect.storage.StringConverter.

  • value.converter.schemas.enable: para um conector de coletor, definir isso como true ao usar org.apache.kafka.connect.json.JsonConverter instrui o Kafka Connect a procurar e usar um esquema incorporado na mensagem do Kafka recebida. Quando definido como false (padrão), o Kafka Connect espera que os dados sejam JSON simples sem um esquema incorporado.

Transformações (opcional)

As transformações permitem a manipulação ou o enriquecimento de dados durante o pipeline. Com as transformações, é possível modificar mensagens individuais antes que elas sejam enviadas ao Serviço gerenciado para Apache Kafka (para conectores de origem) ou ao sistema externo (para conectores de coletor). Você pode usar uma transformação para mascarar dados sensíveis, adicionar carimbos de data/hora ou renomear campos.

Predicados (opcional)

Os predicados permitem filtrar dados com base em condições específicas. Os predicados atuam como filtros para aplicar transformações, determinando a quais mensagens uma transformação se aplica com base nas propriedades da mensagem.

Gerenciar o Kafka Connect no Google Cloud

Com o Kafka Connect, você pode se concentrar na implantação de conectores enquanto o Google Cloud cuida da infraestrutura e das complexidades operacionais. Confira um resumo do que o Google Cloud automatiza e do que você pode configurar:

O serviço do Kafka Connect automatiza o seguinte:

  • Provisionamento de workers do Kafka Connect: quando você cria um cluster do Connect, o serviço Kafka Connect provisiona automaticamente um cluster de workers no Kubernetes.

  • Rede: o serviço Kafka Connect configura a rede para permitir a comunicação entre os workers, os agentes do Serviço Gerenciado para Apache Kafka e os sistemas externos. Em alguns casos, talvez seja necessário fazer algumas mudanças nas configurações de rede atuais.

  • Resiliência zonal: o serviço Kafka Connect distribui workers em um mínimo de três zonas, garantindo que o processamento de dados possa continuar em caso de interrupção zonal.

  • Autenticação: o serviço do Kafka Connect também configura a autenticação com agentes do Kafka, garantindo conexões seguras.

  • Implantações e upgrades: o serviço Kafka Connect gerencia mudanças na configuração do worker, upgrades de versão e patches de segurança, garantindo que suas implantações estejam sempre atualizadas.

No serviço Kafka Connect, é possível fazer as seguintes configurações:

  • Restrições de capacidade e rede: defina limites de recursos e configurações de rede para otimizar a performance e o custo.

  • Monitoramento e geração de registros: acesse registros e métricas dos seus conectores para monitorar o desempenho e resolver problemas.

  • Gerenciamento do ciclo de vida do conector: pause, retome, reinicie ou pare conectores conforme necessário para gerenciar seus pipelines de dados.

Limitações

  • O serviço Kafka Connect só aceita o cluster do Managed Service para Apache Kafka como o cluster principal do Kafka. O cluster principal é aquele em que o cluster do Kafka Connect grava os metadados.

  • O serviço não permite o upload de plug-ins de conector personalizados para o cluster do Kafka Connect.

Apache Kafka® é uma marca registrada da The Apache Software Foundation ou afiliadas nos Estados Unidos e/ou em outros países.