YARP Docsv2.3
Documentação/Tráfego e confiabilidade/Balanceamento de carga

Balanceamento de carga

Quando um cluster tem mais de um destino íntegro, o YARP escolhe qual deles atende cada requisição usando uma política de balanceamento de carga configurável.

Políticas

O YARP vem com várias políticas de balanceamento de carga integradas:

  • Round robin — percorre a lista de destinos em ordem, dando a cada um uma parcela igual do tráfego.
  • Menos requisições — envia cada requisição ao destino que atualmente tem o menor número de requisições em andamento.
  • Aleatório — escolhe um destino aleatoriamente.
  • Power of two choices — seleciona dois destinos aleatórios e escolhe o que tiver menos requisições em andamento, um bom padrão em escala, pois evita o efeito de manada que a seleção puramente aleatória pode causar.
  • Primeiro — sempre o primeiro destino disponível; útil principalmente para testes e cenários de A/B.

Definir a política de um cluster

O campo LoadBalancingPolicy em um cluster.

JSON{
  "Clusters": {
    "cluster1": {
      "LoadBalancingPolicy": "PowerOfTwoChoices",
      "Destinations": {
        "cluster1/destination1": { "Address": "https://localhost:10000/" },
        "cluster1/destination2": { "Address": "https://localhost:10010/" }
      }
    }
  }
}

Configuração

A política padrão é Power of two choices quando nenhuma é especificada. Somente destinos conhecidos como íntegros são considerados - veja Verificações de integridade de destino para saber como um destino é marcado como não íntegro e excluído da rotação.

Nota

O balanceamento de carga distribui requisições entre destinos; ele não fixa um determinado cliente ao mesmo destino entre requisições. Se é isso que você precisa, veja Afinidade de sessão.

Políticas personalizadas

Implemente ILoadBalancingPolicy e registre-o na DI para inserir sua própria lógica de seleção - o mesmo ponto de extensibilidade sobre o qual as próprias políticas integradas do YARP são construídas.

Adaptado do Microsoft Learn , licenciado sob CC BY 4.0 .