O desbalanceamento de partições ocorre quando as partições se distribuem de forma desigual entre os brokers no cluster do ApsaraMQ for Kafka. Os sintomas incluem:
Uso desigual de disco: Alguns discos operam com alta utilização, enquanto outros permanecem subutilizados, o que desperdiça desempenho e capacidade de armazenamento.
Limitação em nó único: Tópicos com tráfego excessivo em partições desbalanceadas acionam limitação em um único nó e reduzem o throughput geral do cluster.
Causa
O desbalanceamento de partições acontece quando um tópico é criado com uma quantidade de partições que não é múltiplo do número recomendado pelo sistema. O Kafka distribui as partições entre os brokers de forma round-robin; portanto, uma contagem de partições não alinhada faz com que alguns brokers armazenem mais partições do que outros.
Solução
Para corrigir o desbalanceamento de partições, ajuste a contagem de partições do tópico afetado para um múltiplo do número recomendado.
Adicionar partições não redistribui os dados existentes. Se seus produtores utilizarem particionamento baseado em chave (hash(key) % number_of_partitions), alterar a contagem de partições reorganiza o mapeamento entre chave e partição. Consumidores que dependem de atribuições específicas de partição podem ser afetados. Planeje essa alteração durante uma janela de baixo tráfego caso sua carga de trabalho dependa da ordenação por chave.
Pré-requisitos
Antes de começar, verifique se você tem:
Acesso ao console do ApsaraMQ for Kafka
O nome do tópico com partições desbalanceadas
A contagem de partições recomendada pelo sistema para sua instância
Ajustar partições para instâncias não serverless
Faça login no console do ApsaraMQ for Kafka. No painel de navegação à esquerda, clique em Instances.
Na barra de navegação superior, selecione a região onde sua instância está localizada. Na página Instances, clique no nome da instância.
No painel de navegação à esquerda, clique em Topics. Na página exibida, clique no nome do tópico com partições desbalanceadas.
Na página Topic Details, clique na aba Configuration Information.
Ao lado do parâmetro Partitions, clique em Increase Partitions.
No painel Increase Partitions, use as setas no campo Partitions para definir a contagem de partições como um múltiplo do número recomendado.
Caso não seja possível aumentar as partições de um tópico que utiliza armazenamento em nuvem, utilize o recurso de rebalanceamento de partições. O rebalanceamento redireciona novas gravações de dados para discos com menor uso. Após a expiração das mensagens no disco original, os dados são excluídos automaticamente e o uso do disco diminui. Para mais detalhes, consulte Rebalanceamento de partições e redirecionamento de tráfego.
Ajustar partições para instâncias serverless
Faça login no console do ApsaraMQ for Kafka. No painel de navegação à esquerda, clique em Instances.
Na barra de navegação superior, selecione a região onde sua instância está localizada. Na página Instances, clique no nome da instância.
No painel de navegação à esquerda, clique em Topics. Na página exibida, clique no nome do tópico com partições desbalanceadas.
Na página Topic Details, ao lado do parâmetro Partition Replicas, clique em Edit.
No painel Edit Partition, use as setas no campo Partition para definir a contagem de partições como um múltiplo do número recomendado.
Verificar o resultado
Após ajustar a contagem de partições, confirme a resolução do desbalanceamento:
Na página Topic Details, verifique se a nova contagem de partições é um múltiplo do número recomendado.
Monitore o uso de disco nos nós do cluster durante as próximas horas para confirmar a convergência dos níveis de utilização.
Verifique se os alertas de limitação em nós individuais cessaram.
Melhores práticas
Para evitar desbalanceamento de partições ao criar tópicos:
Sempre defina a contagem de partições como um múltiplo do número recomendado pelo sistema para sua instância.
Monitore periodicamente a distribuição de partições para identificar desequilíbrios precocemente, antes que causem pressão no disco ou limitação de tráfego.