Migrar do Kafka para o Pub/Sub Lite

Este documento é útil se você estiver pensando em migrar do Apache Kafka autogerenciado para o Pub/Sub Lite.

Visão geral do Pub/Sub Lite

O Pub/Sub Lite é um serviço de mensagens de alto volume criado para baixo custo de operação. O Pub/Sub Lite oferece armazenamento zonal e regional, além de capacidade pré-provisionada. No Pub/Sub Lite, é possível escolher tópicos zonais ou regionais do Lite. Os tópicos regionais do Lite oferecem o mesmo SLA de disponibilidade que os tópicos do Pub/Sub. No entanto, há diferenças de confiabilidade entre o Pub/Sub e o Pub/Sub Lite em termos de replicação de mensagens.

Para saber mais sobre o Pub/Sub e o Pub/Sub Lite, consulte O que é o Pub/Sub.

Para saber mais sobre regiões e zonas compatíveis com o Lite, consulte Locais do Pub/Sub Lite.

Terminologia no Pub/Sub Lite

Confira a seguir alguns termos-chave do Pub/Sub Lite.

  • Mensagem. Dados transferidos pelo serviço Pub/Sub Lite.

  • Tópico: Um recurso nomeado que representa um feed de mensagens. No Pub/Sub Lite, é possível criar um tópico do Lite zonal ou regional. Os tópicos regionais do Pub/Sub Lite armazenam dados em duas zonas de uma única região. Os tópicos zonais do Pub/Sub Lite replicam dados em apenas uma zona.

  • Reserva. Um pool nomeado de capacidade de processamento compartilhado por vários tópicos do Lite em uma região.

  • Assinatura: um recurso nomeado que representa um interesse em receber mensagens de um tópico específico do Lite. Uma assinatura é semelhante a um grupo de consumidores no Kafka que só se conecta a um único tópico.

  • Assinante. Um cliente do Pub/Sub Lite que recebe mensagens de um tópico do Lite e em uma assinatura especificada. Uma assinatura pode ter vários clientes assinantes. Nesse caso, a carga das mensagens é balanceada entre os clientes do assinante. No Kafka, um assinante é chamado de consumidor.

  • Editor: Um aplicativo que cria mensagens e as envia (publica) em um tópico específico do Lite. Um tópico pode ter vários editores. No Kafka, um editor é chamado de produtor.

Diferenças entre o Kafka e o Pub/Sub Lite

Embora o Pub/Sub Lite seja conceitualmente semelhante ao Kafka, é um sistema diferente com uma API mais restrita, que é mais focada na ingestão de dados. As diferenças são irrelevantes para a ingestão e o processamento de stream, mas existem alguns casos de uso específicos em que essas diferenças são importantes.

Kafka como banco de dados

Ao contrário do Kafka, o Pub/Sub Lite não é compatível com publicação transacional ou compactação de registros, embora haja suporte de idempotência. Esses recursos do Kafka são mais úteis quando você usa o Kafka como um banco de dados do que como um sistema de mensagens. Se você usa o Kafka principalmente como banco de dados, execute seu próprio cluster do Kafka ou use uma solução gerenciada do Kafka, como o Confluent Cloud. Se nenhuma dessas soluções for uma opção, considere usar um banco de dados horizontalmente escalonável, como o Cloud Spanner.

Streams do Kafka

Streams do Kafka (em inglês) é um sistema de processamento de dados criado sobre o Kafka. Embora permita a injeção de clientes consumidores, ele exige acesso a todas as operações do administrador. O Kafka Streams também usa as propriedades do banco de dados transacional do Kafka para armazenar metadados internos. Portanto, o Pub/Sub Lite não pode ser usado atualmente para aplicativos Kafka Streams.

O Apache Beam é um sistema semelhante de processamento de dados de streaming integrado ao Kafka, Pub/Sub e Pub/Sub Lite. É possível executar pipelines do Beam de maneira totalmente gerenciada com o Dataflow ou nos clusters preexistentes do Apache Flink e do Apache Spark (em inglês).

Monitoramento

Os clientes Kafka podem ler métricas do lado do servidor. No Pub/Sub Lite, as métricas relevantes para o comportamento do editor e do assinante são gerenciadas pelo Cloud Monitoring sem outras configurações.

Gerenciamento de capacidade

A capacidade de um tópico do Kafka é determinada pela capacidade do cluster. As configurações de replicação, compactação de chaves e lote determinam a capacidade necessária para atender a qualquer tópico no cluster do Kafka. A capacidade de um tópico do Kafka é limitada pela capacidade das máquinas em que os agentes estão sendo executados. Em contrapartida, é preciso definir a capacidade de armazenamento e de capacidade de um tópico do Pub/Sub Lite. A capacidade de armazenamento do Pub/Sub Lite é uma propriedade configurável do tópico. A capacidade de capacidade é baseada na capacidade da reserva configurada e dos limites inerentes ou configurados por partição.

Autenticação e segurança

O Apache Kafka oferece suporte a vários mecanismos abertos de autenticação e criptografia. Com o Pub/Sub Lite, a autenticação é baseada no sistema IAM. A segurança é garantida pela criptografia em repouso e em trânsito. Leia mais sobre a autenticação do Pub/Sub Lite na seção "Fluxo de trabalho de migração" mais adiante neste documento.

Mapear propriedades do Kafka para propriedades do Pub/Sub Lite

O Kafka tem muitas opções de configuração que controlam a estrutura de tópicos, os limites e as propriedades do agente. Alguns exemplos comuns úteis para a ingestão de dados são discutidos nesta seção, com os equivalentes no Pub/Sub Lite. Como o Pub/Sub Lite é um sistema gerenciado, você não precisa considerar muitas propriedades de agente.

Propriedades de configuração de tópicos

Propriedade do Kafka Propriedade do Pub/Sub Lite Descrição
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="dV7DQA4y7L7qKMxOHGc8kmZb6gHWkZLxLSo7Ja3t8sgM1RbUvT8FDCmfNOUyfqL1ChexternalH Armazenamento por partição Todas as partições em um tópico do Lite têm a mesma capacidade de armazenamento configurada. A capacidade total de armazenamento de um tópico do Lite é a soma da capacidade de armazenamento de todas as partições dele.
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="QnWVoAipx5CRcevnGcXwAGZb6gHWkZLxLSo7Ja3t8sgM1RbUvT8FDCmfNOUyfjfqe Período de armazenamento de mensagens A quantidade máxima de tempo para que um tópico do Lite armazena mensagens. Se você não especificar um período de armazenamento de mensagens, o tópico do Lite armazenará mensagens até que você exceda a capacidade de armazenamento.
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="1EnWqBFYsbXCkJvluoFZHWZb6gHWkZLxLSo7Ja3t8sQHgM1RbUvT8FDCmfNOUyfqabn4RbnazUIXATmdGtrPyqrz+M3RfOj6o9TWwqB6UaE=">flush.ms, <aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="D8tZ+YryF011zrRlSlCouGZb6gHWkZLxLSo7Ja3t8sRqk6OxyqMTCHV662ootwKEN/weLnW8ody8JZUs0+mzHw==">acks </aclass="external"></aclass="external"> Não configurável no Pub/Sub Lite As publicações não são confirmadas até que tenham a garantia de serem mantidas no armazenamento replicado.
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="w2C6ltfFLx0WhPQQ+xq7GmZb6gHWkZLxLSo7Ja3t8sQHgM1RbUvT8FDCmfNOUyfqe Não configurável no Pub/Sub Lite 3,5 MiB é o tamanho máximo da mensagem que pode ser enviado ao Pub/Sub Lite. Os tamanhos das mensagens são calculados de maneira repetível.
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="uByJEasoVxsHiHGi2vZFpWZb6gHWkZLxLSo7Ja3t8sgM1RbUvT8FDCmfNOUyfqvQgNEpY Não configurável no Pub/Sub Lite Ao usar a implementação do consumidor, o carimbo de data/hora do evento é escolhido quando presente ou da publicação é usado no lugar. Os carimbos de data/hora de publicação e de eventos estão disponíveis ao usar o Beam.

Para saber mais sobre as propriedades do tópico do Lite, consulte Propriedades de um tópico do Lite.

Propriedades de configuração do produtor

O Pub/Sub Lite oferece suporte ao protocolo com fio do produtor. Algumas propriedades mudam o comportamento das bibliotecas de cliente do Cloud do produtor. Algumas comuns são discutidas na tabela a seguir.

Propriedade do Kafka Propriedade do Pub/Sub Lite Descrição
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="ka6ek6z5j1AUV6h0GyHmOWZb6gHWkZLxLSo7Ja3t8sRw5UOg9XUG3SbKp/CA/UGEa9PU5B Não configurável no Pub/Sub Lite Crie um tópico e uma assinatura que sejam equivalentes a um grupo de consumidores para um único tópico no Pub/Sub Lite. É possível usar o console, a CLI gcloud, a API ou as bibliotecas de cliente do Cloud.
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="w2C6ltfFLx0WhPQQ+xq7GmZb6gHWkZLxLSo7Ja3t8sRqk6OxyqMTCHV662ootwKEX+jyP6Bz5/wh8WHRaM+1VDjc6rJHP+OLVS8WtNmcQtc=">key.serializer, <aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="pSX6SpdSWGS3KbkuJBUem2Zb6gHWkZLxLSo7Ja3t8sRqk6OxyqMTCHV662ootwKESqwlEsmDjQNe631xyd/OBEmINreu72SEhtSVBm5Rw0w=">value.serializer </aclass="external"></aclass="external"> Não configurável no Pub/Sub Lite

Obrigatório ao usar o Kafka Producer ou a biblioteca equivalente que se comunica usando o protocolo de conexão.

<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="/nUcmkQCz7NdVnO/fs/U8WZb6gHWkZLxLSo7Ja3t8sRqk6OxyqMTCHV662ootwKEp2gb5Htx Compatível com o Pub/Sub Lite Suporte a lotes. O valor recomendado para esse valor é de 10 MiB para um melhor desempenho.
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="QnWVoAipx5CRcevnGcXwAGZb6gHWkZLxLSo7Ja3t8sRqk6OxyqMTCHV662ootwKE5j8zTzynDp Compatível com o Pub/Sub Lite Suporte a lotes. O valor recomendado para esse valor é de 50 ms para garantir o melhor desempenho.
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="pSX6SpdSWGS3KbkuJBUem2Zb6gHWkZLxLSo7Ja3t8sRqk6OxyqMTCHV662ootwKEj7ilyCdDp4 Compatível com o Pub/Sub Lite O servidor impõe um limite de 20 MiB por lote. Defina esse valor como menos de 20 MiB no cliente Kafka.
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="9mE3X9aIpBVps4x1lRMwdGZb6gHWkZLxLSo7Ja3t8sRqk6OxyqMTCHV662ootwKEfbyAx Compatível com o Pub/Sub Lite
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="pSX6SpdSWGS3KbkuJBUem2Zb6gHWkZLxLSo7Ja3t8sRqk6OxyqMTCHV662ootwKEufyeVlC0ORvu+ATI Sem suporte no Pub/Sub Lite É preciso definir explicitamente esse valor como none.

Propriedades de configuração do consumidor

O Pub/Sub Lite oferece suporte ao protocolo de conexão de consumidores. Algumas propriedades mudam o comportamento das bibliotecas de cliente do Cloud do consumidor. Algumas propriedades comuns são discutidas na tabela a seguir.

Propriedade do Kafka Descrição
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="pSX6SpdSWGS3KbkuJBUem2Zb6gHWkZLxLSo7Ja3t8sQyhicHhp9oG2sYdjqrOOFMesHcoabWpmRWc4QGiNw/Nt3N4FAWfkLBFxu1XIPZ/mc=">key.deserializer, <aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="9mE3X9aIpBVps4x1lRMwdGZb6gHWkZLxLSo7Ja3t8sQyhicHhp9oG2sYdjqrOOFMOo1Ck57YWd7phlgbFg6bnNPnjld49QCIfr57dmq9W6Y=">value.deserializer </aclass="external"></aclass="external">

Obrigatório ao usar o Kafka Consumer ou biblioteca equivalente que se comunica usando o protocolo de rede.

<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="6Yq99Si1ofpPBF++wTnR6WZb6gHWkZLxLSo7Ja3t8sQyhicHhp9oG2sYdjqrOOFMukQRfA+WedguqrOOFMukQRfA+ Esta configuração não é compatível nem necessária. As assinaturas têm a garantia de um local de compensação definido após a criação.
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="uByJEasoVxsHiHGi2vZFpWZb6gHWkZLxLSo7Ja3t8sgM1RbUvT8FDCmfNOUyfqvQgNEpY O carimbo de data/hora da publicação está sempre disponível no Pub/Sub Lite e não pode diminuir por partição. Os carimbos de data/hora de eventos podem ou não estar presentes, dependendo se foram anexados à mensagem quando publicada. Os carimbos de data/hora de publicação e de eventos estão disponíveis ao mesmo tempo no Dataflow.
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="C1w6rZRsJ3qdhnqUpePxxmZb6gHWkZLxLSo7Ja3t8sQyhicHhp9oG2sYdjqrOOFMUP9pWM0gsH8dBz8z/Znyl06tJetNspNa7O8sf20qNfcwoG4LrkKWpCzFW/9ML1dc">max.partition.fetch.bytes, <aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="pSX6SpdSWGS3KbkuJBUem2Zb6gHWkZLxLSo7Ja3t8sQyhicHhp9oG2sYdjqrOOFMUP9pWM0gsH8dBz8z/Znyl4gSgXAmfEcOnKjDPqz24u4=">max.poll.records </aclass="external"></aclass="external"> Impõe um limite flexível para o número de registros e bytes retornados de chamadas poll() e o número de bytes retornados de solicitações de busca internas. O padrão para "max.partition.fetch.bytes" de 1 MiB pode limitar a capacidade de processamento do seu cliente. Considere aumentar esse valor.

Comparar os recursos do Kafka e do Pub/Sub Lite

A tabela a seguir compara os recursos do Apache Kafka com os do Pub/Sub Lite:

Recurso Kafka Pub/Sub Lite
Ordenação das mensagens Sim Sim
Eliminação de mensagens duplicadas Sim Sim, usando o Dataflow
Enviar inscrições Não Sim, usando a exportação do Pub/Sub
Transações Sim Não
Armazenamento de mensagens Limitada pelo armazenamento de máquina disponível Ilimitado
Repetição da mensagem Sim Sim
Geração de registros e monitoramento Autogerenciado Automatizado com o Cloud Monitoring
Processamento de stream Sim com Kafka Streams, Apache Beam ou Dataproc. Sim com Beam ou Dataproc.

A tabela a seguir compara qual funcionalidade é auto-hospedada com o Kafka e qual é gerenciada pelo Google com o Pub/Sub Lite:

Recurso Kafka Pub/Sub Lite
Disponibilidade Implante manualmente o Kafka em locais adicionais. Implantado no mundo todo. Consulte os locais.
Recuperação de desastres Projete e mantenha seu próprio backup e replicação. Gerenciado pelo Google.
Gerenciamento de infraestrutura Implementar e operar manualmente máquinas virtuais (VMs) ou máquinas. Manter versões e patches consistentes. Gerenciado pelo Google.
Planejamento de capacidade Planeje manualmente as necessidades de armazenamento e computação com antecedência. Gerenciado pelo Google. É possível aumentar a computação e o armazenamento a qualquer momento.
Suporte Nenhuma. Equipe de plantão e suporte 24 horas disponíveis.

Comparação de custos do Kafka e do Pub/Sub Lite

A maneira como você estima e gerencia custos no Pub/Sub Lite é diferente do que no Kafka. Os custos de um cluster do Kafka no local ou na nuvem incluem o custo de máquinas, disco, rede, mensagens de entrada e mensagens de saída. Isso também inclui os custos indiretos de gerenciamento e manutenção desses sistemas e a infraestrutura relacionada. Ao gerenciar um cluster Kafka, você precisa fazer upgrade manual das máquinas, planejar a capacidade do cluster e implementar a recuperação de desastres que inclui planejamento e testes abrangentes. É preciso agregar todos esses custos para determinar o verdadeiro custo total de propriedade (TCO).

Os preços do Pub/Sub Lite incluem o custo de reserva (bytes publicados, bytes inscritos, bytes processados pelo proxy Kafka) e o custo do armazenamento provisionado. Você paga exatamente pelos recursos reservados, além das cobranças por mensagens de saída. Use a calculadora de preços para ter uma estimativa dos custos.

Fluxo de trabalho de migração

Para migrar um tópico de um cluster do Kafka para o Pub/Sub Lite, use as instruções a seguir.

Configurar recursos do Pub/Sub Lite

  1. Crie uma reserva do Pub/Sub Lite para a capacidade esperada de todos os tópicos que você está migrando.

    Use a calculadora de preços do Pub/Sub Lite para calcular as métricas de capacidade agregadas dos seus tópicos atuais do Kafka. Para mais informações sobre como criar reservas, consulte Criar e gerenciar reservas do Lite.

  2. Crie um tópico do Pub/Sub Lite para cada tópico correspondente no Kafka.

    Para mais informações sobre como criar tópicos do Lite, consulte Criar e gerenciar tópicos do Lite.

  3. Crie uma assinatura do Pub/Sub Lite para cada grupo de consumidor correspondente e par de tópicos no cluster do Kafka.

    Por exemplo, para um grupo de consumidores chamado consumers que consome de topic-a e topic-b, você precisa criar uma assinatura consumers-a anexada a topic-a e uma assinatura consumers-b anexada a topic-b. Para mais informações sobre como criar assinaturas, consulte Criar e gerenciar assinaturas do Lite.

Autenticar no Pub/Sub Lite

Escolha um dos métodos a seguir com base no tipo do seu cliente Kafka:

Clientes Kafka baseados em Java versão 3.1.0 ou mais recente com recriação

Para clientes Kafka baseados em Java da versão 3.1.0 ou posterior que podem ser recriados na instância em que você está executando o cliente Kafka:

  1. Instale o pacote com.google.cloud:pubsublite-kafka-auth.

  2. Consiga os parâmetros necessários para autenticar no Pub/Sub Lite com a ajuda de com.google.cloud.pubsublite.kafka.ClientParameters.getParams.

    O método getParams() (consulte um exemplo de código) inicializa as seguintes configurações JAAS e SASL como parâmetros para autenticação no Pub/Sub Lite:

    security.protocol=SASL_SSL
    sasl.mechanism=OAUTHBEARER
    sasl.oauthbearer.token.endpoint.url=http://localhost:14293
    sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.secured.OAuthBearerLoginCallbackHandler
    

Clientes Kafka baseados em Java com a versão 3.1.0 ou posterior sem recriação

Para clientes Kafka compatíveis com KIP-768, a autenticação OAUTHBEARER somente de configuração usa um script de arquivo secundário do Python. Essas versões incluem a versão 3.1.0 ou mais recente do Java de janeiro de 2022.

Siga estas etapas na instância em que você está executando o cliente Kafka:

  1. Instale o Python 3.6 ou mais recente.

    Consulte Como instalar o Python.

  2. Instale o pacote de autenticação do Google: pip install google-auth

    Ela simplifica os vários mecanismos de autenticação de servidor para servidor para acessar as APIs do Google. Consulte a página google-auth.

  3. Execute o script kafka_gcp_credentials.py.

    Este script inicia um servidor HTTP local e busca as credenciais padrão do Google Cloud no ambiente usando google.auth.default().

    A principal nas credenciais buscadas precisa ter a permissão pubsublite.locations.openKafkaStream para o projeto do Google Cloud que você está usando e o local a que você está se conectando. Os papéis de Editor do Pub/Sub Lite (roles/pubsublite.publisher) e de Assinante do Pub/Sub Lite (roles/pubsublite.subscriber) têm essa permissão necessária. Adicione esses papéis ao principal.

    As credenciais são usadas na autenticação SASL/OAUTHBEARER (em inglês) do cliente Kafka.

    Os seguintes parâmetros são obrigatórios nas suas propriedades para autenticar no Pub/Sub Lite do cliente Kafka:

    security.protocol=SASL_SSL
    sasl.mechanism=OAUTHBEARER
    sasl.oauthbearer.token.endpoint.url=localhost:14293
    sasl.login.callback.handler.class=org.apache.kafka.common.security.oauthbearer.secured.OAuthBearerLoginCallbackHandler
    sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule \
      required clientId="unused" clientSecret="unused" \
      extension_pubsubProject="PROJECT_ID";
    

    Substitua PROJECT_ID pelo ID do projeto que executa o Pub/Sub Lite.

Todos os outros clientes sem recriação

Para todos os outros clientes, siga estas etapas:

  1. Faça o download de um arquivo JSON de chave de conta de serviço para a conta de serviço que você pretende usar com o cliente.

  2. Codifique o arquivo da conta de serviço usando a codificação base64 para usar como sua string de autenticação.

    Em sistemas Linux ou macOS, é possível usar o comando base64, que geralmente é instalado por padrão, da seguinte maneira:

    base64 < my_service_account.json > password.txt
    

    Use o conteúdo do arquivo de senha para autenticação com os parâmetros a seguir.

    Java

    security.protocol=SASL_SSL
    sasl.mechanism=PLAIN
    sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
     username="PROJECT_ID" \
     password="contents of base64 encoded password file";
    

    Substitua PROJECT_ID pelo ID do projeto que executa o Pub/Sub.

    Librdkafka

    security.protocol=SASL_SSL
    sasl.mechanism=PLAIN
    sasl.username=PROJECT_ID
    sasl.password=contents of base64 encoded password file
    

    Substitua PROJECT_ID pelo ID do projeto que executa o Pub/Sub.

Clonar dados usando o Kafka Connect

A equipe do Pub/Sub Lite mantém uma implementação de um coletor do Kafka Connect. É possível configurar essa implementação para copiar dados de um tópico do Kafka para um tópico do Pub/Sub Lite usando um cluster do Kafka Connect.

Para configurar o conector para fazer a cópia dos dados, consulte Conector do Kafka do grupo do Pub/Sub.

Se você quiser garantir que a afinidade da partição não seja afetada pelo processo de migração, verifique se o tópico do kafka e o tópico do Pub/Sub Lite têm o mesmo número de partições e se a propriedade pubsublite.ordering.mode está definida como KAFKA. Isso faz com que o conector encaminhe mensagens para a partição do Pub/Sub Lite com o mesmo índice da partição do kafka em que foram originalmente publicadas.

Migrar consumidores

O modelo de recursos do Pub/Sub Lite é diferente do modelo do Kafka. Diferente de um grupo de consumidores, uma assinatura é um recurso explícito e está associada a exatamente um tópico. Devido a essa diferença, em qualquer lugar na API Kafka Consumer que exija a transmissão de um topic, o caminho completo da assinatura precisa ser transmitido.

Além das configurações de SASL para o cliente Kafka, as configurações a seguir também são necessárias ao usar a API Kafka Consumer para interagir com o Pub/Sub Lite.

bootstrap.servers=REGION-kafka-pubsub.googleapis.com:443
group.id=unused

Substitua REGION pela região onde sua assinatura do Pub/Sub Lite está.

Antes de iniciar o primeiro job de consumidor do Pub/Sub Lite para uma determinada assinatura, é possível iniciar uma operação de busca do administrador para definir o local inicial do consumidor.

Quando você inicia seus consumidores, eles se reconectam ao deslocamento atual no backlog da mensagem. Execute os clientes antigos e novos em paralelo desde que seja necessário verificar o comportamento deles. Em seguida, desative os clientes antigos do consumidor.

Migrar produtores

Além das configurações SASL para o cliente Kafka, o seguinte também é necessário como um parâmetro de produtor ao usar a API Kafka Producer para interagir com o Pub/Sub Lite.

bootstrap.servers=REGION-kafka-pubsub.googleapis.com:443

Substitua REGION pela região onde o tópico do Pub/Sub Lite está.

Depois de migrar todos os consumidores do tópico para leitura no Pub/Sub Lite, mova o tráfego de produtor para gravar diretamente no Pub/Sub Lite.

Migrar gradualmente os clientes do produtor para gravar no tópico do Pub/Sub Lite em vez do tópico do Kafka.

Reinicie os clientes do produtor para selecionar novas configurações.

Desativar o Kafka Connect

Depois de migrar todos os produtores para gravar diretamente no Pub/Sub Lite, o conector não copia mais dados.

É possível desativar a instância do Kafka Connect.

Resolver problemas de conexões do Kafka

Como os clientes do Kafka se comunicam por um protocolo de cabo personalizado, não podemos fornecer mensagens de erro para falhas em todas as solicitações. Confie nos códigos de erro enviados como parte da mensagem.

Para mais detalhes sobre erros que ocorrem no cliente, defina o nível de geração de registros do prefixo org.apache.kafka como FINEST.

Baixa capacidade de processamento e aumento do backlog

Há vários motivos para uma baixa capacidade e um backlog crescente. Um dos motivos pode ser a capacidade insuficiente.

É possível configurar a capacidade no nível do tópico ou usando reservas. Se a capacidade de processamento de assinatura e publicação não for suficiente, a capacidade correspondente de assinatura e publicação será limitada.

Esse erro de capacidade é indicado pela métrica topic/flow_control_status para editores e pela métrica subscription/flow_control_status para assinantes. A métrica fornece os seguintes estados:

  • NO_PARTITION_CAPACITY: essa mensagem indica que o limite de capacidade por partição foi atingido.

  • NO_RESERVATION_CAPACITY: essa mensagem indica que o limite de capacidade por reserva foi atingido.

É possível ver os gráficos de utilização para o tópico ou a publicação de reserva e assinar a cota, além de verificar se a utilização está em ou perto de 100%.

Para resolver esse problema, aumente a capacidade de capacidade do tópico ou da reserva.

Mensagem de erro de falha na autorização do tópico

A publicação usando a API Kafka exige que o agente de serviço do Lite tenha as permissões corretas para publicar no tópico do Pub/Sub Lite.

O erro TOPIC_AUTHORIZATION_FAILED será exibido no seu cliente caso você não tenha as permissões corretas para publicar no tópico do Pub/Sub Lite.

Para resolver o problema, verifique se o agente de serviço do Lite do projeto foi transmitido na configuração de autenticação.

Mensagem de erro de tema inválido

A assinatura usando a API Kafka requer a transmissão do caminho completo de assinatura para todos os lugares em que um topic é esperado na API Kafka Consumer.

O erro INVALID_TOPIC_EXCEPTION será exibido no cliente de consumidor se você não transmitir um caminho de assinatura bem formatado.

Solicitação inválida quando não usa reservas

Para usar o suporte ao protocolo de fio kafka, é necessário que todos os tópicos tenham uma reserva associada para que a cobrança pelo uso seja feita.