A CustomResourceDefinition (CRD) ConcurrencyLimitingPolicy integra o conjunto de agendamento de tráfego do Service Mesh (ASM). Esse recurso configura declarativamente o número máximo de requisições simultâneas para o tráfego global de um serviço em uma instância do ASM.
Funcionamento
O conjunto de agendamento de tráfego do ASM monitora as requisições em andamento com base no limiar definido em max_concurrency. O campo selectors determina a quais requisições a política se aplica. Quando você defina limit_by_label_key, o sistema agrupa as requisições por rótulo e cada grupo mantém sua própria contagem de concorrência independente.
Para lidar com casos extremos, como reinicializações de pods em que o evento de encerramento da requisição pode não ser registrado, max_inflight_duration estabelece um tempo limite. O sistema trata automaticamente como concluídas as requisições que excedem esse prazo, evitando que registros obsoletos consumam permanentemente slots de concorrência.
Exemplo de configuração
O YAML a seguir apresenta uma especificação spec mínima da ConcurrencyLimitingPolicy:
spec:
concurrency_limiter:
max_concurrency: 100
parameters:
max_inflight_duration: 60s
selectors:
- service: my-service.default.svc.cluster.local
port:
number: 8080
max_concurrency: 100-- Permite até 100 requisições simultâneas em andamento.max_inflight_duration: 60s-- Considera finalizada qualquer requisição não concluída em 60 segundos e libera seu slot de concorrência.selectors-- Aplica o limite ao tráfego correspondente ao serviço e à porta especificados.
ConcurrencyLimitingPolicySpec
A seção spec representa a configuração de nível superior da ConcurrencyLimitingPolicy.
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
concurrency_limiter |
Sim |
Configuração do limitador de concorrência. Consulte ConcurrencyLimiter. |
ConcurrencyLimiter
Define o limite de concorrência, as regras de correspondência e o comportamento de tratamento de requisições.
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
max_concurrency |
int64 |
Sim |
Número máximo permitido de requisições simultâneas em andamento. |
|
parameters |
Sim |
Parâmetros que controlam como o limitador de concorrência agrupa e rastreia requisições. Consulte ConcurrencyLimiterParameters. |
|
|
request_parameters |
Não |
Ações que o limitador de concorrência executa nas requisições. Utiliza o mesmo esquema da CRD RateLimitingPolicy. |
|
|
selectors |
[]Selector |
Sim |
Requisições às quais o limite de concorrência se aplica. |
ConcurrencyLimiterParameters
Controla como o limitador de concorrência rastreia requisições em andamento.
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
limit_by_label_key |
string |
Não |
Agrupa requisições por rótulo para rastreamento independente de concorrência. Quando definido, cada valor exclusivo de rótulo mantém seu próprio limite de concorrência. Para obter detalhes sobre a rotulagem de requisições, consulte Descrição dos rótulos de requisição. |
|
max_idle_time |
Duration |
Não |
Tempo máximo de ociosidade antes da liberação do registro de requisição em andamento para um rótulo específico. Se nenhuma requisição com determinado rótulo chegar dentro desse período, o sistema liberará o registro. Esse parâmetro entra em vigor apenas quando |
|
max_inflight_duration |
Duration |
Sim |
Tempo máximo durante o qual uma requisição é considerada em andamento. Após esse tempo limite, o sistema trata a requisição como concluída, independentemente de seu estado real. Isso evita que registros obsoletos, causados por eventos como reinicializações de pods, consumam permanentemente slots de concorrência. Defina este valor como o tempo máximo de resposta esperado para o seu serviço. |