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

Disjuntor

As políticas de disjuntor protegem seus serviços de back-end quando ocorre um problema de desempenho. Se o serviço de back-end de uma API atingir o tempo limite por N vezes consecutivas ou se a latência for longa, o mecanismo de downgrade de uma política de disjuntor será acionado para retornar um erro ao chamador da API ou encaminhar solicitações para um back-end especificado. Depois que o serviço de back-end se recupera, o disjuntor se fecha e as solicitações se tornam normais.

Se o gateway não oferecer suporte a essa política, entre em contato com o suporte técnico para atualizar o gateway para a versão mais recente.

Descrição do parâmetro

Tabela 1 Descrição do parâmetro

Parâmetro

Descrição

Policy Type

  • API-specific

    Controlar solicitações para uma única API.

  • API-sharing

    Controlar solicitações para todas as APIs vinculadas à política.

Circuit Breaker Type

Tipo de acionamento do disjuntor.

  • Timeout downgrade: o disjuntor será acionado no tempo limite do back-end.
  • Condition downgrade: o disjuntor será acionado quando as condições de correspondência configuradas forem atendidas.

Condition Type

Modo de acionamento do disjuntor.

  • Count: quando o número de solicitações que atendem às condições dentro de uma janela de tempo especificada atinge o limite, o disjuntor é acionado imediatamente.
  • Percentage: quando a porcentagem de solicitações que atendem às condições dentro de uma janela de tempo especificada atinge o limite, o disjuntor é acionado após a expiração da janela de tempo.

Match Condition

Este parâmetro só é necessário quando Circuit Breaker Type é definido como Condition downgrade.

Configure condições de acionamento para o disjuntor.

  • Response Error Codes: o disjuntor será acionado se o back-end responder com códigos de status especificados.
  • Response Latency: o disjuntor será acionado se a latência da resposta do back-end atingir um limite especificado.

Time Window (s)

O período para determinar quantas vezes as condições foram atendidas. Use este parâmetro junto com Threshold ou Min Percentage. Se o limite ou a porcentagem for atingido, o disjuntor é acionado.

Threshold

Este parâmetro é necessário somente quando Condition Type é definido como Count.

Defina o limite para acionar o disjuntor. Use este parâmetro junto com Time Window. Uma vez que o número de solicitações de back-end que atendem às condições dentro da janela de tempo atinge o limite, o disjuntor é acionado.

NOTA:

Uma política de disjuntor é acionada por um único componente de gateway. Se o seu gateway tiver vários componentes, o acionamento para cada componente será determinado separadamente.

Se o limite for atingido dentro da janela de tempo de um componente de gateway, as solicitações enviadas a esse componente acionam o disjuntor e os outros componentes de gateway ainda encaminham as solicitações normalmente.

Um componente de gateway é um endereço de conexão do seu gateway. Para visualizar o número de componentes de gateway, vá para a página Gateway Information do gateway e visualize o número de endereços IP em Private Network Access IP.

Min Calls

Este parâmetro só é necessário quando Condition Type é definido como Percentage.

Defina o número mínimo de chamadas de API que acionarão o disjuntor dentro do período de tempo. O disjuntor não será acionado se o número de chamadas de API dentro do período de tempo for menor que esse valor.

Min Percentage (%)

Este parâmetro só é necessário quando Condition Type é definido como Percentage.

Defina o limite para acionar o disjuntor. Use este parâmetro junto com Time Window. Uma vez que a porcentagem de solicitações de back-end que atendem às condições dentro da janela de tempo atinge o limite, o disjuntor é acionado.

Control Duration (s)

Tempo durante o qual o disjuntor ficará ligado. Quando o tempo for atingido, o disjuntor será desligado.

Backend Downgrade

Determine se deve ativar o downgrade do back-end.

  • Ativar: as solicitações de APIs que acionaram um downgrade serão encaminhadas para um back-end especificado.
  • Desativar: as solicitações de APIs que acionaram um downgrade não serão encaminhadas para nenhum back-end. Em vez disso, uma mensagem de erro indicando que o serviço não está disponível será retornada.

Backend Type

Este parâmetro é necessário apenas quando o Backend Downgrade está ativado.

Especifique o tipo de back-end para o qual as solicitações serão encaminhadas quando o disjuntor estiver ligado.

  • Mock: a resposta definida será retornada.
    • Status Code: o código de status a ser incluído na resposta
    • Response: o corpo da resposta, que está no formato JSON
    • Response Header: parâmetros de cabeçalho a serem incluídos na resposta
  • HTTP&HTTPS: as solicitações de back-end serão encaminhadas para um serviço de back-end HTTP&HTTPS especificado.
    • Load Balance Channel: determine se deve usar um canal de balanceamento de carga para acessar o serviço de back-end. Se sim, crie um canal de balanceamento de carga com antecedência.
    • Backend URL: endereço do serviço de back-end para encaminhar solicitações.
    • Timeout (ms): tempo limite de solicitação de back-end. O valor padrão é 5000 ms.
  • FunctionGraph: as solicitações de back-end serão encaminhadas para uma função especificada.
    • Function URN: o identificador único de uma função. Clique em Select para selecionar uma função.
    • Function Name: exibido automaticamente após você selecionar uma função.
    • Version: versão da função a ser usada para receber solicitações de back-end.
    • Invocation Mode: o modo em que a função é invocada.

      Synchronous: ao receber uma solicitação de invocação, o FunctionGraph processa imediatamente a solicitação e retorna um resultado. O cliente fecha a conexão assim que recebe uma resposta do back-end.

      Asynchronous: depois de receber uma solicitação de invocação, o FunctionGraph coloca a solicitação na fila e retorna o resultado após a solicitação ser processada com sucesso. O servidor processa as solicitações de enfileiramento uma por uma quando está ocioso. O cliente não se preocupa com o resultado da invocação.

    • Timeout (ms): tempo limite de solicitação de back-end. O valor padrão é 5000 ms.
  • Passthrough: as solicitações de back-end serão encaminhadas para o back-end da API original.

    Para adicionar parâmetros de cabeçalho a solicitações de back-end, clique em Add Parameter.

Downgrade Parameter Settings

Determine se deve ativar a configuração do parâmetro de downgrade. Depois que essa opção for ativada, as regras personalizadas terão precedência sobre as condições de acionamento padrão e as configurações de downgrade configuradas acima.

  • Se uma regra personalizada for correspondida, as condições de acionamento e as configurações de downgrade definidas na regra serão aplicadas. Se a regra personalizada correspondente não contiver nenhuma condição de acionamento ou configurações de downgrade, as configurações padrão em Trigger Configuration e Backend Downgrade serão aplicadas.
  • Se nenhuma regra personalizada for correspondida, as configurações padrão serão aplicadas.

Parameters

Defina parâmetros para correspondência de regras.

  • Parameter Location: posição de um parâmetro nas solicitações da API.
  • Parameter Name: nome de um parâmetro usado para correspondência de regras.

Por padrão, o sistema fornece os parâmetros reqPath (caminho de solicitação) e method (método de solicitação). Clique em Add Parameter para adicionar parâmetros.

Rules

Personalize as regras de correspondência para o disjuntor. Clique em Add Rule para adicionar regras. O sistema combina regras de cima para baixo. Ajuste a prioridade da regra movendo as regras para cima ou para baixo.

  • Conditions: clique em para definir expressões de condição. Se houver três ou mais expressões, você pode colocá-las em camadas clicando em Set Lower Level.
    • =: igual a
    • !=: não igual a
    • pattern: expressão regular
    • enum: valores enumerados. Separe-os com vírgulas (,).
  • Para obter detalhes sobre como configurar as condições de acionamento e o downgrade do back-end, consulte as instruções para as configurações padrão acima.

Exemplo: você ativou Downgrade Parameter Settings e adicionou regras rule01 e rule02 em sequência. E você desativou Trigger Configuration e ativou Backend Downgrade para rule01 e ativou ambas as opções para rule02. Com essas configurações, o disjuntor primeiro verifica se as condições da rule01 são atendidas. Se sim, o disjuntor é ativado com base nas configurações padrão porque nenhuma condição de acionamento foi definida em rule01 e o downgrade do back-end configurado em rule01 é executado. Se não, a verificação é continuada para a rule02.

Exemplo de script

{
  "breaker_condition":{
    "breaker_type":"timeout",
    "breaker_mode":"counter",
    "unhealthy_threshold":30,
    "time_window":15,
    "open_breaker_time":15,
    "unhealthy_percentage":51,
    "min_call_threshold":20
  },
  "scope":"share",
  "downgrade_default":{
    "type":"http",
    "passthrough_infos":null,
    "func_info":null,
    "mock_info":null,
    "http_info":{
      "isVpc":false,
      "vpc_channel_id":"",
      "address":"10.10.10.10",
      "scheme":"HTTP",
      "method":"GET",
      "path":"/demo",
      "timeout":5000
    },
    "http_vpc_info":null
  },
  "downgrade_parameters":[
  {
    "name":"reqPath",
    "type":"path",
    "value":"path",
    "disabled":true,
    "focused":true,
    "id":"92002eqbpilg6g"
  },
  {
    "name":"method",
    "type":"method",
    "value":"method",
    "disabled":true,
    "focused":true,
    "id":"tuvxetsdqvcos8"
  }],
  "downgrade_rules":[
  {
    "rule_name":"rule-test1",
    "parameters":[
      "reqPath",
      "method"
    ],
    "match_regex":"[\"reqPath\",\"==\",\"/test\"]",
    "downgrade_backend":{
      "type":"mock",
      "passthrough_infos":null,
      "func_info":null,
      "mock_info":{
        "status_code":200,
        "result_content":"{status: ok}",
        "headers":[]
      },
      "http_info":null,
      "http_vpc_info":null
    },
    "breaker_condition":{
      "breaker_type":"timeout",
      "breaker_mode":"percentage",
      "unhealthy_threshold":30,
      "time_window":15,
      "open_breaker_time":15,
      "unhealthy_percentage":51,
      "min_call_threshold":20
    }
  }]
}