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

Disjuntor

As políticas de disjuntores protegem seus serviços de back-end quando ocorre um problema de desempenho. Se o serviço de back-end de uma API expirar por N vezes consecutivas ou se a latência for longa, o mecanismo de downgrade de uma política de disjuntores 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 fecha e as solicitações se tornam normais.

Descrição do parâmetro

Tabela 1 Descrição do parâmetro

Parâmetro

Descrição

Policy Type

  • API específica

    Controlar solicitações para uma única API.

  • Compartilhamento de API

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

Circuit Breaker Type

Tipo de disparo do disjuntor.

  • Timeout downgrade: o disjuntor será acionado no tempo limite do back-end.
  • Condition downgrade: o disjuntor será disparado 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 disparo 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

O período para determinar quantas vezes as condições foram satisfeitas. Use este parâmetro junto com Threshold ou Min Percentage. Se o limite ou 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 para um único componente de gateway. Se o gateway tiver vários componentes, o acionamento para cada componente será determinado separadamente.

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

Um componente de gateway é um endereço de conexão do gateway. Para exibir o número de componentes de gateway, vá para a página Gateway Information do gateway e exiba 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

Tempo para o qual o disjuntor estará ligado. Quando o tempo é alcançado, o disjuntor será desligado.

Backend Downgrade

Determine se deve habilitar o downgrade do back-end.

  • Habilitar: solicitações de APIs que acionaram um downgrade serão encaminhadas para um back-end especificado.
  • Desabilitar: as solicitações de APIs que desencadearam 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á habilitado.

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 a seleção de 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 uma vez que recebeu uma resposta do back-end.

      Asynchronous: após receber uma solicitação de chamada, o FunctionGraph enfileira a solicitação e retorna o resultado após a solicitação ser processada com sucesso. O servidor processa as solicitações de enfileiramento uma a 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 disparo padrão e as configurações de downgrade configuradas acima.

  • Se uma regra personalizada for correspondida, as condições de disparo 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ê habilitou Downgrade Parameter Settings e adicionou regras rule01 e rule02 em sequência. E você desabilitou a Trigger Configuration e habilitou Backend Downgrade para rule01 e habilitou ambas as opções para rule02. Com essas configurações, o disjuntor primeiro verifica se as condições da rule01 são atendidas. Em caso afirmativo, o disjuntor é ativado com base nas configurações padrão porque nenhuma condição de disparo foi definida na rule01 e o downgrade do back-end configurado na 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
    }
  }]
}