Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda/ Distributed Message Service for Kafka/ Perguntas frequentes/ Mensagens/ Por que a pesquisa de mensagens geralmente falha durante o rebalanceamento?
Atualizado em 2023-08-25 GMT+08:00

Por que a pesquisa de mensagens geralmente falha durante o rebalanceamento?

O rebalanceamento é um processo em que partições de tópicos são realocadas para um grupo de consumidores.

Em casos normais, o rebalanceamento ocorre inevitavelmente quando um consumidor é adicionado ou removido de um grupo de consumidores. No entanto, se um consumidor for considerado anormal e removido do grupo de consumidores, a recuperação da mensagem poderá falhar.

Isso pode acontecer nos seguintes cenários:

  1. As solicitações de pulsação não são enviadas a tempo.

    Um consumidor envia solicitações de pulsação ao agente no intervalo especificado por heartbeat.interval.ms. Se o agente não receber nenhuma solicitação de pulsação do consumidor dentro do período especificado por session.timeout.ms, o agente considera que o consumidor é anormal e remove o consumidor do grupo de consumidores, acionando o rebalanceamento.

  2. O intervalo entre as recuperações é muito longo.

    O número máximo de mensagens que um consumidor pode recuperar por vez é especificado por max.poll.records. Na maioria dos casos, um cliente processa os dados recuperados antes de iniciar a próxima recuperação. O processamento pode ser prolongado quando um grande número de mensagens é recuperado de cada vez e não pode ser processado dentro do tempo especificado por max.poll.interval.ms ou quando ocorre uma exceção durante o processo (por exemplo, os dados precisam ser gravados no banco de dados de back-end, mas a pressão do banco de dados de back-end é muito alta, resultando em alta latência). Se o consumidor não enviar a próxima solicitação de recuperação dentro do prazo especificado por max.poll.interval.ms, o agente considera que o consumidor está inativo e o remove do grupo de consumidores, desencadeando o rebalanceamento.

Soluções e métodos de solução de problemas

Cenário 1: as solicitações de pulsação não são enviadas a tempo.

Solução: no cliente consumidor, defina o valor de session.timeout.ms como três vezes o valor de heartbeat.interval.ms.

Cenário 2: o intervalo entre as recuperações é muito longo.

Métodos de solução de problemas:

  1. Verifique o tempo necessário para processar uma única mensagem e se o tempo necessário para processar um número especificado (max.poll.records) de mensagens excede o tempo especificado por max.poll.interval.ms.
  2. Verifique se o processamento de mensagens requer conexões de rede, como gravar dados no banco de dados e chamar APIs de back-end, e se o back-end é normal em cenários de rebalanceamento.

Solução: no cliente consumidor, diminua o valor de max.poll.records.