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-01-10 GMT+08:00

Reatribuição de partições

Cenário

A reatribuição de partição é reatribuir réplicas de uma partição a diferentes brokers para resolver o problema da carga desbalanceada do broker.

A reatribuição de partição é necessária nos seguintes cenários:

  • Depois que a quantidade de broker é aumentada para uma instância, as réplicas das partições de tópico originais são migradas para os novos brokers.
  • A partição líder é degradada para ser um seguidor em um broker fortemente carregado.
  • O número de réplicas é aumentado ou diminuído.

O console do DMS for Kafka fornece reatribuição automática e manual. A reatribuição automática é recomendada porque garante que os líderes sejam distribuídos uniformemente.

Impacto da operação

  • A reatribuição de partição em tópicos com uma grande quantidade de dados consome uma grande quantidade de largura de banda de rede e armazenamento. Como resultado, as solicitações de serviço podem expirar ou a latência pode aumentar. Portanto, é recomendável que você realize a reatribuição durante o horário fora do horário de pico. Compare a carga de instância atual com base nas especificações da instância para decidir se a capacidade restante da instância pode oferecer suporte à reatribuição de partição. Não reatribuir partições quando houver largura de banda insuficiente ou quando o uso da CPU for maior que 90%.
  • Uma limitação refere-se ao limite superior da largura de banda para replicação de um tópico, para garantir que outros tópicos na instância não sejam afetados. Observe que as limitações se aplicam à replicação acionada pela produção normal de mensagens e pela reatribuição de partição. Se a limitação for muito pequena, a produção normal de mensagens pode ser afetada e a reatribuição de partição pode nunca ser concluída.
  • Não é possível excluir tópicos cujas tarefas de reatribuição foram iniciadas. Caso contrário, as tarefas nunca serão concluídas.
  • Não é possível modificar a quantidade de partição de tópicos cujas tarefas de reatribuição foram iniciadas.
  • As tarefas de reatribuição não podem ser interrompidas manualmente. Por favor, aguarde até que elas sejam concluídas.
  • Se uma tarefa de reatribuição de partição agendada tiver sido configurada, nenhuma outra reatribuição poderá ser executada até que essa tarefa existente seja executada.
  • Após a reatribuição da partição, os metadados do tópico mudam. Se o produtor não suportar o mecanismo de repetição, alguns pedidos falharão, fazendo com que algumas mensagens não sejam produzidas.
  • A reatribuição leva muito tempo se o tópico tiver uma grande quantidade de dados. É aconselhável diminuir o tempo de envelhecimento do tópico com base no consumo do tópico para que os dados históricos do tópico possam ser excluídos em tempo hábil para acelerar a migração.

Preparar para reatribuição de partição

  • Para reduzir a quantidade de dados a serem migrados, diminua o tempo de envelhecimento do tópico sem afetar os serviços e aguarde o envelhecimento das mensagens. Depois que a reatribuição for concluída, você poderá restaurar o tempo de envelhecimento.
  • Certifique-se de que o broker de destino tenha capacidade de disco suficiente. Se a capacidade de disco restante do broker de destino estiver próxima da quantidade de dados a serem migrados para o broker, expanda a capacidade de disco antes da reatribuição.

Reatribuição automática

  1. Faça logon no console de gerenciamento.
  2. Clique em no canto superior esquerdo para selecionar uma região.

    Selecione a região onde sua instância do Kafka está localizada.

  3. Clique em e escolha Middleware > Distributed Message Service (for Kafka) para abrir o console do DMS for Kafka.
  4. Clique na instância do Kafka desejada para exibir os detalhes da instância.
  5. No painel de navegação, escolha a guia Topics.
  6. Reatribua partições usando um dos seguintes métodos:

    • Selecione um ou mais tópicos e escolha Reassign > Auto acima da lista de tópicos.
    • Na linha que contém o tópico desejado, escolha More > Reassign > Auto.

  7. Defina parâmetros de reatribuição automática.

    • Na área Brokers, selecione os brokers aos quais atribuir as réplicas de partição do tópico.
    • Na área Topics, insira o número de réplicas a serem reatribuídas automaticamente. O número de réplicas deve ser menor ou igual ao número de brokers.
    • Especifique throttle. O valor padrão é -1, indicando que não há limitação (recomendado se a carga da instância for leve). Se uma limitação for necessária, é aconselhável defini-la para um valor maior ou igual à largura de banda total de produção do tópico a ser reatribuído multiplicado pelo número máximo de réplicas do tópico a ser reatribuído. Para mais detalhes, consulte Calcular uma limitação.
    • Para Execute, especifique quando executar a reatribuição. Now significa executá-la imediatamente. As scheduled significa executá-la no horário agendado.
    Figura 1 Definir parâmetros de reatribuição automática

  8. Clique em OK. A lista de tópicos é exibida.

    No canto superior esquerdo da lista de tópicos, clique em View details para exibir o status da tarefa de reatribuição na página Background Tasks exibida.

    • Para uma tarefa de reatribuição não agendada, selecione Background tasks no canto superior direito da página Background Tasks para exibir o status da tarefa. Quando o status da tarefa for Successful, a reatribuição foi concluída.
    • Para uma tarefa de reatribuição agendada, selecione Scheduled tasks no canto superior direito da página Background Tasks para exibir o status da tarefa. Quando o status da tarefa é Pending, a reatribuição não foi executada. Quando o status da tarefa for Successful, a reatribuição foi concluída. Selecione Background tasks no canto superior direito da página para exibir o status da tarefa. Quando o status da tarefa for Successful, a reatribuição foi concluída.
    Figura 2 Página de tarefas em segundo plano
    • Não é possível excluir tópicos cujas tarefas de reatribuição foram iniciadas. Caso contrário, as tarefas nunca serão concluídas.
    • Não é possível modificar a quantidade de partição de tópicos cujas tarefas de reatribuição foram iniciadas.
    • As tarefas de reatribuição não podem ser interrompidas manualmente. Por favor, aguarde até que elas sejam concluídas.
    • Se uma tarefa de reatribuição de partição agendada tiver sido configurada, nenhuma outra reatribuição poderá ser executada até que essa tarefa existente seja executada.

Reatribuição manual

  1. Faça logon no console de gerenciamento.
  2. Clique em no canto superior esquerdo para selecionar uma região.

    Selecione a região onde sua instância do Kafka está localizada.

  3. Clique em e escolha Middleware > Distributed Message Service (for Kafka) para abrir o console do DMS for Kafka.
  4. Clique na instância do Kafka desejada para exibir os detalhes da instância.
  5. No painel de navegação, escolha a guia Topics.
  6. Reatribua partições usando um dos seguintes métodos:

    • Selecione um tópico e escolha Reassign > Manual acima da lista de tópicos. A reatribuição manual não oferece suporte a operações em lote.
    • Na linha que contém o tópico desejado, escolha More > Reassign > Manual.

  7. Defina parâmetros de reatribuição manual.

    • No canto superior direito da caixa de diálogo Manual, clique em Delete Replica ou Add Replica para reduzir ou aumentar o número de réplicas para cada partição do tópico.
    • Sob o nome da réplica a ser reatribuída, clique no nome do broker ou e selecione o broker de destino para o qual migrar a réplica. Atribua réplicas da mesma partição a diferentes brokers.
    • Especifique throttle. O valor padrão é -1, indicando que não há limitação (recomendado se a carga da instância for leve). Se uma limitação for necessária, é aconselhável defini-la para um valor maior ou igual à largura de banda total de produção do tópico a ser reatribuído multiplicado pelo número máximo de réplicas do tópico a ser reatribuído. Para mais detalhes, consulte Calcular uma limitação.
    • Para Execute, especifique quando executar a reatribuição. Now significa executá-la imediatamente. As scheduled significa executá-la no horário agendado.
    Figura 3 Configurar parâmetros de reatribuição manual

  8. Clique em OK. A lista de tópicos é exibida.

    No canto superior esquerdo da lista de tópicos, clique em View details para exibir o status da tarefa de reatribuição na página Background Tasks exibida.

    • Para uma tarefa de reatribuição não agendada, selecione Background tasks no canto superior direito da página Background Tasks para exibir o status da tarefa. Quando o status da tarefa for Successful, a reatribuição foi concluída.
    • Para uma tarefa de reatribuição agendada, selecione Scheduled tasks no canto superior direito da página Background Tasks para exibir o status da tarefa. Quando o status da tarefa é Pending, a reatribuição não foi executada. Quando o status da tarefa for Successful, a reatribuição foi concluída. Selecione Background tasks no canto superior direito da página para exibir o status da tarefa. Quando o status da tarefa for Successful, a reatribuição foi concluída.
    Figura 4 Página de tarefas em segundo plano
    • Não é possível excluir tópicos cujas tarefas de reatribuição foram iniciadas. Caso contrário, as tarefas nunca serão concluídas.
    • Não é possível modificar a quantidade de partição de tópicos cujas tarefas de reatribuição foram iniciadas.
    • As tarefas de reatribuição não podem ser interrompidas manualmente. Por favor, aguarde até que elas sejam concluídas.
    • Se uma tarefa de reatribuição de partição agendada tiver sido configurada, nenhuma outra reatribuição poderá ser executada até que essa tarefa existente seja executada.

Reagendar a reatribuição de partição

  1. No canto superior direito da página Background Tasks, selecione Scheduled tasks e um segmento de tempo para procurar a tarefa desejada.

    Figura 5 Selecionar tarefas agendadas e um segmento de tempo

  2. Na linha que contém a tarefa desejada, clique em Modify.
  3. Na caixa de diálogo Change Schedule, altere o agendamento ou cancele a tarefa agendada.

    • Para alterar o cronograma, selecione um horário e clique em OK.
    • Para cancelar a tarefa, selecione Cancel (como mostrado na Figura 6) e clique em OK.
      Figura 6 Cancelar uma tarefa de reatribuição agendada

Calcular uma limitação

As limitações são afetadas pela duração da execução da reatribuição, distribuição líder/seguidor de réplicas de partição e taxa de produção de mensagens.

  • Uma limitação limita o tráfego de replicação de todas as partições em um broker.
  • Réplicas adicionadas após a atribuição são consideradas seguidores, e réplicas existentes são consideradas líderes. As limitações sobre líderes e seguidores são separadas.
  • As limitações não distinguem entre a replicação causada pela produção normal de mensagens e aquela causada pela reatribuição de partição. Portanto, o tráfego gerado em ambos os casos é estrangulado.

Suponha que a tarefa de reatribuição de partição precisa ser concluída dentro de 200s e cada réplica tem 100 MB de dados. Calcule a limitação nos seguintes cenários:

Cenário 1: o Tópico 1 tem duas partições e duas réplicas, e o Tópico 2 tem uma partição e uma réplica. Todas as réplicas do líder estão no mesmo broker. Uma réplica precisa ser adicionada para o Tópico 1 e Tópico 2, respectivamente.

Tabela 1 Distribuição da réplica antes da reatribuição

Nome do tópico

Nome da partição

Broker da réplica de líder

Broker da réplica de seguidor

Tópico 1

0

0

0, 1

Tópico 1

1

0

0, 2

Tópico 2

0

0

0

Tabela 2 Distribuição de réplica após reatribuição

Nome do tópico

Nome da partição

Broker da réplica de líder

Broker da réplica de seguidor

Tópico 1

0

0

0, 1, 2

Tópico 1

1

0

0, 1, 2

Tópico 2

0

0

0, 2

Figura 7 Cenário de reatribuição 1

Conforme mostrado em Figura 7, três réplicas buscam dados do Broker 0. Cada réplica no Broker 0 tem 100 MB de dados. O Broker 0 tem apenas réplicas de líder, e o Broker 1 e o Broker 2 têm apenas réplicas de seguidor.

  • Largura de banda exigida pelo Broker 0 para completar a reatribuição de partição dentro de 200s = (100 MB + 100 MB + 100 MB + 100 MB)/200s = 1,5 MB/s
  • Largura de banda exigida pelo Broker 1 para completar a reatribuição da partição dentro de 200s = 100 MB/200s = 0,5 MB/s
  • Largura de banda exigida pelo Broker 2 para completar a reatribuição de partição dentro de 200s = (100 MB + 100 MB)/200s = 1 MB/s

Em conclusão, para concluir a tarefa de reatribuição de partição dentro de 200s, defina a limitação para um valor maior ou igual a 1,5 MB/s.

Cenário 2: o Tópico 1 tem duas partições e uma réplica, e o Tópico 2 tem duas partições e uma réplica. As réplicas de líder estão em brokers diferentes. Uma réplica precisa ser adicionada para o Tópico 1 e Tópico 2, respectivamente.

Tabela 3 Distribuição da réplica antes da reatribuição

Nome do tópico

Nome da partição

Broker da réplica de líder

Broker da réplica de seguidor

Tópico 1

0

0

0

Tópico 1

1

1

1

Tópico 2

0

1

1

Tópico 2

1

2

2

Tabela 4 Distribuição de réplica após reatribuição

Nome do tópico

Nome da partição

Broker da réplica de líder

Broker da réplica de seguidor

Tópico 1

0

0

0, 2

Tópico 1

1

1

1, 2

Tópico 2

0

1

1, 2

Tópico 2

1

2

2, 0

Figura 8 Cenário de reatribuição 2

Conforme mostrado em Figura 8, o Broker 1 tem apenas réplicas de líder, e o Broker 0 e o Broker 2 têm réplicas de líder e seguidor. As réplicas líder e seguidor no Broker 0 e no Broker 2 são controladas separadamente.

  • Largura de banda exigida pelo Broker 0 (líder) para completar a reatribuição da partição dentro de 200s = 100 MB/200s = 0,5 MB/s
  • Largura de banda exigida pelo Broker 0 (seguidor) para completar a reatribuição da partição dentro de 200s = 100 MB/200s = 0,5 MB/s
  • Largura de banda exigida pelo Broker 1 para completar a reatribuição de partição dentro de 200s = (100 MB + 100 MB)/200s = 1 MB/s
  • Largura de banda exigida pelo Broker 2 (líder) para completar a reatribuição da partição dentro de 200s = 100 MB/200s = 0,5 MB/s
  • Largura de banda exigida pelo Broker 2 (seguidor) para completar a reatribuição da partição dentro de 200s = (100 MB + 100 MB + 100 MB)/200s = 1,5 MB/s

Em conclusão, para concluir a tarefa de reatribuição de partição dentro de 200s, defina a limitação para um valor maior ou igual a 1,5 MB/s.

Cenário 3: tanto o Tópico 1 como o Tópico 2 têm uma partição e duas réplicas. Todas as réplicas do líder estão no mesmo broker. Uma réplica precisa ser adicionada ao Tópico 1. As mensagens são produzidas no Tópico 1, causando replicação.

Tabela 5 Distribuição da réplica antes da reatribuição

Nome do tópico

Nome da partição

Broker da réplica de líder

Broker da réplica de seguidor

Tópico 1

0

0

0, 1

Tópico 2

0

0

0, 1

Tabela 6 Distribuição de réplica após reatribuição

Nome do tópico

Nome da partição

Broker da réplica de líder

Broker da réplica de seguidor

Tópico 1

0

0

0, 1, 2

Tópico 2

0

0

0, 1

Figura 9 Cenário de reatribuição 3

Conforme mostrado em Figura 9, uma réplica precisa buscar dados do Broker 0 para reatribuição de partição e a outra réplica precisa buscar dados do Broker 0 para produção de mensagens. Como a limitação não distingue entre a produção de mensagens e a reatribuição de partição, o tráfego causado por ambos é limitado e contado.

  • Largura de banda exigida pelo Broker 0 para concluir a reatribuição de partição dentro de 200s = (100 MB + 700 KB/s x 200s)/200s + 700 KB/s = 1,9 MB/s
  • Largura de banda exigida pelo Broker 2 para completar a reatribuição da partição dentro de 200s = 100 MB/200s = 0,5 MB/s

Em conclusão, para concluir a tarefa de reatribuição de partição dentro de 200s, defina a limitação para um valor maior ou igual a 1,9 MB/s.