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.
Atualizado em 2024-09-09 GMT+08:00

Evitação do acúmulo de mensagens

Introdução

O Kafka divide cada tópico em várias partições para armazenamento distribuído de mensagens. Dentro do mesmo grupo de consumidores, cada consumidor pode consumir várias partições ao mesmo tempo, mas cada partição pode ser consumida por apenas um consumidor de cada vez.

As mensagens não processadas se acumulam se o consumo do cliente for mais lento do que o envio do servidor. As mensagens acumuladas não podem ser consumidas a tempo.

Causas da acumulação

A seguir estão algumas das principais causas:

  • Os produtores produzem mensagens rápido demais para que os consumidores as acompanhem.
  • Consumidores incapazes (baixa simultaneidade e longo processamento) causam menor eficiência de consumo do que a produção.
  • Consumidores anormais (falha e erro de rede) não podem consumir mensagens.
  • Partições de tópicos inadequadas ou nenhum consumo em novas partições.
  • O reequilíbrio frequente de tópicos reduz a eficiência do consumo.

Solução

A acumulação pode ser evitada pelo consumidor, produtor e servidor.

  • Consumidor
    • Adicione consumidores (para simultaneidade de consumo) com base nas necessidades reais. Use o mesmo número de consumidores que o número de partições ou garanta que o número de partições seja um múltiplo inteiro do número de consumidores.
    • Acelere o consumo otimizando a lógica de processamento do consumidor (computação menos complicada, invocação de API e leitura de banco de dados).
    • Aumente o número de mensagens em cada sondagem: a velocidade de sondagem/processamento deve ser igual ou superior à velocidade de produção.
  • Produtor

    Anexe um sufixo aleatório a cada chave de mensagem para que as mensagens possam ser distribuídas uniformemente em partições.

    Em cenários reais, anexar um sufixo aleatório a cada chave de mensagem compromete a sequência global de mensagens. Decida se um sufixo é exigido pelo seu serviço.

  • Servidor
    • Defina o número de partições de tópicos corretamente. Adicione partições sem afetar a eficiência do processamento.
    • Interrompa a produção quando as mensagens estiverem se acumulando ou encaminhe-as para outros tópicos.