A Custom Resource Definition (CRD) AverageLatencySchedulingPolicy configura o agendamento adaptativo de carga baseado em latência no Alibaba Cloud Service Mesh (ASM). Ela utiliza um algoritmo de Aumento Aditivo e Diminuição Multiplicativa (AIMD) para limitar as taxas de requisição com base na latência observada. Esse mecanismo protege os serviços contra sobrecarga e maximiza o throughput durante a recuperação.
Esta referência descreve todos os campos da CRD, agrupados por tipo de objeto.
AverageLatencySchedulingPolicySpec
Especificação de nível superior do recurso de política.
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
Sim |
Configuração principal do agendador. |
LoadSchedulingCore
Contêiner da configuração do algoritmo de agendamento de carga.
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
Sim |
Configuração do agendador de carga baseado em AIMD. |
Selector
Determina os fluxos de tráfego afetados pela política com base no ponto de controle, rótulos de fluxo, grupo de agentes e identidade do serviço.
control_point: ingress
label_matcher:
match_labels:
user_tier: gold
match_expressions:
- key: query
operator: In
values:
- insert
- delete
expression:
label_matches:
- label: user_agent
regex: ^(?!.*Chrome).*Safari
|
Campo |
Tipo |
Obrigatório |
Padrão |
Descrição |
|
|
string |
Não |
|
Local no serviço onde a política entra em vigor. Valores válidos: |
|
|
Não |
-- |
Seleciona fluxos de tráfego com base nos rótulos de fluxo. |
|
|
|
string |
Não |
|
Nome de Domínio Totalmente Qualificado (FQDN) do serviço de destino. |
LabelMatcher
Seleciona fluxos de tráfego por meio de um ou mais dos três métodos a seguir:
Correspondência de rótulos: correspondência exata de chave-valor.
Expressões de correspondência: correspondência baseada em operadores (
In,NotIn,Exists,DoesNotExist).Expressão arbitrária: combinações lógicas com suporte a regex.
Ao especificar vários métodos, o sistema os combina com um AND lógico. Um LabelMatcher vazio seleciona todas as requisições.
O exemplo a seguir exclua endpoints de verificação de integridade e métricas do agendamento. Esses endpoints não representam tráfego real de usuários e podem distorcer os cálculos de latência:
label_matcher:
match_list:
- key: http.target
operator: NotIn
values:
- /health
- /live
- /ready
- /metrics
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
Não |
Expressão lógica avaliada nos rótulos de fluxo. |
|
|
|
map[string]string |
Não |
Pares chave-valor para correspondência exata de rótulos. |
|
|
Não |
Lista de requisitos de correspondência baseados em operadores. |
Expression
Expressão lógica componível. Defina apenas um campo por objeto Expression.
# Match flows where label "foo" exists AND label "app" equals "frobnicator"
all:
of:
- label_exists: foo
- label_equals:
label: app
value: frobnicator
|
Campo |
Tipo |
Descrição |
|
|
Verdadeiro quando todas as subexpressões forem verdadeiras (AND lógico). |
|
|
|
Verdadeiro quando qualquer subexpressão for verdadeira (OR lógico). |
|
|
|
Verdadeiro quando o rótulo especificado for igual ao valor fornecido. |
|
|
|
string |
Verdadeiro quando existir um rótulo com o nome fornecido. |
|
|
Verdadeiro quando o rótulo especificado corresponder à expressão regular fornecida. |
|
|
|
Nega o resultado da subexpressão. |
ExpressionList
|
Campo |
Tipo |
Descrição |
|
|
Lista de subexpressões. |
EqualExpression
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
Chave do rótulo. |
|
|
string |
Não |
Valor do rótulo para correspondência. |
MatchesExpression
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
Chave do rótulo para correspondência. |
|
|
string |
Sim |
Padrão de expressão regular. Utiliza a sintaxe Go RE2. |
MatchRequirement
Correspondência de rótulos baseada em operadores, seguindo o mesmo padrão dos seletores de rótulos do Kubernetes.
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
Chave do rótulo. |
|
|
enum |
Sim |
Operador de correspondência. Valores válidos: |
|
|
[]string |
Condicional |
Valores de string para correspondência. Obrigatório para |
AimdLoadScheduler
O agendador de carga AIMD usa um controlador de gradiente para ajustar a taxa de tokens com base no desvio entre o sinal de latência observado e o ponto de ajuste. Em caso de sobrecarga do sistema, ele diminui multiplicativamente a taxa de tokens. Durante a recuperação, aumenta linearmente a taxa até que o sistema atinja o estado estacionário.
|
Campo |
Tipo |
Obrigatório |
Padrão |
Restrições |
Descrição |
|
|
Sim |
-- |
-- |
Parâmetros do controlador de gradiente. Consulte GradientControllerParameters. |
|
|
|
float64 |
Não |
|
Mínimo: |
Incremento linear aplicado ao multiplicador de carga a cada 10 segundos enquanto o sistema não estiver sobrecarregado, até atingir |
|
|
Sim |
-- |
-- |
Configuração do agendador de carga de trabalho e do seletor. Consulte LoadSchedulerParameters. |
|
|
|
float64 |
Não |
|
Mínimo: |
Multiplicador máximo de carga durante a recuperação de um estado de sobrecarga. Ao atingir esse valor, o agendador entra no modo de passagem direta — as requisições ignoram o agendador e vão diretamente para o serviço. O modo de passagem direta é desativado se o sistema ficar sobrecarregado novamente. Este campo protege o serviço contra picos de requisições durante a recuperação. |
GradientControllerParameters
O controlador de gradiente ajusta o multiplicador de carga com base na razão entre o sinal observado e o ponto de ajuste. O campo slope representa o expoente aplicado a essa razão e controla a agressividade da resposta do controlador.
|
Campo |
Tipo |
Obrigatório |
Padrão |
Descrição |
|
|
float64 |
Não |
|
Limite superior para o valor do gradiente. |
|
|
float64 |
Não |
|
Limite inferior para o valor do gradiente. |
|
|
float64 |
Não |
|
Expoente na razão sinal-ponto de ajuste. Controla a direção e a agressividade da resposta. |
**Como funciona o slope:**
|
Valor |
Comportamento |
|
|
Sinal muito alto --> aumenta a variável de controle. |
|
|
Sinal muito alto --> diminui a variável de controle. |
|
|
Sinal muito alto --> diminui gradualmente a variável de controle. |
Mantenha o valor absoluto de slope igual ou inferior a 1.
LoadSchedulerParameters
Configura o agendador de carga de trabalho baseado em Weighted Fair Queuing (WFQ) e especifica os fluxos de tráfego aos quais a política se aplica.
|
Campo |
Tipo |
Obrigatório |
Padrão |
Descrição |
|
|
Não |
-- |
Configuração do agendador de carga de trabalho baseado em WFQ. |
|
|
|
[] |
Sim |
-- |
Seletores que definem o escopo dos fluxos de tráfego gerenciados pelo agendador. |
|
|
bool |
Não |
|
Estima automaticamente o custo de tokens por fluxo com base na latência histórica. Os tokens correspondem à latência média dos fluxos em cada carga de trabalho nos últimos segundos. Útil para limitação de concorrência, onde |
Scheduler
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
Sim |
Definições de carga de trabalho para o agendador WFQ. |
SchedulerWorkload
Define uma carga de trabalho — um grupo de fluxos de tráfego que compartilham os mesmos parâmetros de agendamento.
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
|
Não |
Associa fluxos de tráfego a esta carga de trabalho com base nos rótulos de fluxo. |
|
|
string |
Sim |
Nome da carga de trabalho. |
|
|
Sim |
Parâmetros de agendamento para fluxos que correspondem ao seletor de rótulos. |
SchedulerWorkloadParameters
Controla a priorização e o enfileiramento dos fluxos de tráfego dentro de uma carga de trabalho.
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
float64 |
Não |
Prioridade. |
|
|
string |
Não |
Tempo limite dos fluxos de tráfego na carga de trabalho. |
|
|
float64 |
Não |
Custo para admitir um único fluxo. Geralmente definido como milissegundos de latência esperada (tempo até a resposta), ou configurado como |