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 2023-05-11 GMT+08:00

Limitação de solicitação 2.0

Uma política de limitação de solicitação 2.0 limita o número de vezes que uma API pode ser chamada dentro de um período de tempo específico. A limitação baseada em parâmetro, básica e excluída é suportada.

  • Limitação básica

    Limite as solicitações por API, usuário, aplicação ou endereço IP de origem. Essa função é equivalente a uma política de limitação de solicitações tradicional (consulte Limitação de solicitação), mas é incompatível com ela.

  • Limitação baseada em parâmetros

    Solicitações de aceleração com base em cabeçalhos, parâmetro de caminho, método, cadeias de consulta ou parâmetros do sistema.

  • Limitação excluída

    Solicitações de limitação com base em aplicações ou locatários específicos.

Diretrizes de uso

  • Uma política tradicional de limitação de solicitações torna-se inválida se uma política 2.0 de limitação de solicitações estiver vinculada à mesma API que a tradicional.
  • Você pode definir um máximo de 100 regras de limitação baseadas em parâmetros.
  • O conteúdo da política não pode exceder os caracteres 65.535.

Descrição do parâmetro

Tabela 1 Descrição do parâmetro

Parâmetro

Descrição

Throttling

É recomendado a limitação de alto desempenho.

  • High precision: melhor para cenários de baixa simultaneidade (o desempenho é afetado)
  • High performance: melhor para cenários de concorrência média (o desempenho é menos afetado, com pequenos erros ocasionais)
  • Single node: melhor para cenários de alta simultaneidade (limitação de solicitação dentro de cada nó; o desempenho é menos afetado, com pequenos erros ocasionais)

Policy Type

  • API específica

    Monitore e controle as solicitações de uma única API.

  • Compartilhamento de API

    Monitore e controle solicitações para todas as APIs vinculadas à política.

Period

Por quanto tempo você deseja limitar o número de chamadas de API. Este parâmetro pode ser usado em conjunto com os seguintes parâmetros:

  • Max. API Requests: limite o número máximo de vezes que uma API pode ser chamada em um período específico.
  • Max. User Requests: limite o número máximo de vezes que uma API pode ser chamada por um usuário dentro de um período específico.
  • Max. Credential Requests: limite o número máximo de vezes que uma API pode ser chamada por uma credencial dentro de um período específico.
  • Max. IP Address Requests: limite o número máximo de vezes que uma API pode ser chamada por um endereço IP dentro de um período específico.

Max. API Requests

O número máximo de vezes que cada API vinculada pode ser chamada dentro do período especificado.

Este parâmetro deve ser utilizado em conjunto com o Period.

Max. User Requests

O número máximo de vezes que cada API vinculada pode ser chamada por um usuário dentro do período especificado. Para APIs com autenticação do IAM, a limitação é baseada em um código de projeto; para APIs com autenticação de aplicação, a limitação é baseada em um código de conta. Para obter detalhes sobre o ID da conta e o ID do projeto, consulte a descrição sobre Excluded Tenants nesta tabela.

  • O valor deste parâmetro não pode exceder o de Max. API Requests.
  • Este parâmetro deve ser utilizado em conjunto com o Period.
  • Se houver muitos usuários na sua conta que acessam uma API, os limites de limitação de solicitações da API serão aplicados a todos esses usuários.

Max. Credential Requests

O número máximo de vezes que cada API vinculada pode ser chamada por uma credencial dentro do período especificado. Esse limite se aplica apenas a APIs acessadas por meio de autenticação de aplicação.

  • O valor deste parâmetro não pode exceder o de Max. API Requests.
  • Este parâmetro deve ser utilizado em conjunto com o Period.

Max. IP Address Requests

O número máximo de vezes que cada API vinculada pode ser chamada por um endereço IP dentro do período especificado.

  • O valor deste parâmetro não pode exceder o de Max. API Requests.
  • Este parâmetro deve ser utilizado em conjunto com o Period.

Parameter-based Throttling

Habilitar ou desabilitar a limitação baseada em parâmetro. Depois que essa função é ativada, as solicitações de API são reduzidas com base nos parâmetros definidos.

Parameters

Defina parâmetros para correspondência de regras.

  • Parameter Location: a localização de um parâmetro usado para correspondência de regras.
    • path: URI de solicitação da API. Este parâmetro é configurado por padrão.
    • method: método de solicitação da API. Este parâmetro é configurado por padrão.
    • header: a chave de um cabeçalho de solicitação.
    • query: a chave de uma cadeia de consulta.
    • system: um parâmetro do sistema.
  • Parameter Name: o nome de um parâmetro que corresponde ao valor especificado em uma regra.

Rules

Defina regras de limitação. Uma regra consiste em condições, uma limitação de solicitações de API e um período.

Para adicionar mais regras, clique em Add Rule.

  • Condições

    Clique em para definir expressões de condição. Para definir uma expressão, selecione um parâmetro e um operador e insira um valor.

    • =: igual a
    • !=: não igual a
    • pattern: expressão regular
    • enum: valores enumerados. Separe-os com vírgulas (,).
  • Máx. solicitações de API

    O número máximo de vezes que uma API pode ser chamada em um período de tempo específico.

  • Período

    Um período de tempo que será aplicado com o limite definido. Se este parâmetro não for especificado, será utilizado o período definido na área Police Information.

Por exemplo, configure a limitação baseada em parâmetro da seguinte forma: adicione o parâmetro Host e especifique o local como header; adicione a condição Host = www.abc.com, e defina o limite de limitação como 10 e o período como 60s. Para APIs cujo parâmetro Host no cabeçalho da solicitação é igual a www.abc.com, elas não podem ser chamadas novamente uma vez chamadas 10 vezes em 60s.

Excluded Throttling

Ativar ou desativar a limitação excluída. Depois que essa função é ativada, os limites para locatários e aplicações excluídas substituem o Max. User Requests e Max. App Requests definidas na área Basic Throttling.

Excluded Tenants

Tenant ID: um ID de conta ou um ID de projeto.

Threshold: o número máximo de vezes que um locatário específico pode acessar uma API dentro do período especificado. O limite não pode exceder o valor de Max. API Requests na área Basic Throttling.

Excluded Apps

Selecione uma aplicação e especifique o número máximo de vezes que a aplicação pode acessar uma API dentro do período especificado. O limite não pode exceder o valor de Max. API Requests na área Basic Throttling.

Exemplo de script

{
  "scope": "basic",
  "default_interval": 60,
  "default_time_unit": "second",
  "api_limit": 100,
  "app_limit": 50,
  "user_limit": 50,
  "ip_limit": 20,
  "specials": [
    {
      "type": "app",
      "policies": [
        {
          "key": "e9230d70c749408eb3d1e838850cdd23",
          "limit": 10
        }
      ]
    },
    {
      "type": "user",
      "policies": [
        {
          "key": "878f1b87f71c40a7a15db0998f358bb9",
          "limit": 10
        }
      ]
    }
  ],
  "algorithm": "counter",
  "parameters": [
    {
      "id": "3wuj354lpptv0toe0",
      "value": "reqPath",
      "type": "path",
      "name": "reqPath"
    },
    {
      "id": "53h7e7j11u38l3ocp",
      "value": "method",
      "type": "method",
      "name": "method"
    },
    {
      "id": "vv502bnb6g40td8u0",
      "value": "Host",
      "type": "header",
      "name": "Host"
    }
  ],
  "rules": [
    {
      "match_regex": "[\"Host\",\"==\",\"www.abc.com\"]",
      "rule_name": "u8mb",
      "time_unit": "second",
      "interval": 2,
      "limit": 5
    }
  ]
}