Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Melhoria da eficiência de push do plano de controle com otimização adaptativa de xds

Última atualização: Jun 28, 2026

Se o plano de controle enviar grandes volumes de configurações irrelevantes de forma ineficiente, use o recurso de otimização adaptativa de xds para aprimorar a eficiência do push. Esse recurso analisa as relações de chamada entre serviços e gera automaticamente recursos de sidecar otimizados. Em seguida, envia apenas as configurações necessárias aos serviços correspondentes, o que reduz a comunicação de rede e melhora o desempenho e a capacidade de resposta da service mesh.

Importante
  • Para ativar a otimização adaptativa de xds, a instância do ASM deve estar na versão 1.15.3.63 ou posterior. Para obter mais informações sobre como atualizar uma instância, consulte Atualizar uma instância do ASM.

  • A otimização adaptativa de xds suporta apenas serviços que usam o protocolo HTTP.

Informações básicas

Por padrão, a service mesh não determina as dependências de chamada entre os serviços. Consequentemente, a configuração do sidecar armazena informações sobre todos os serviços no plano de dados. Qualquer alteração no plano de controle ou no plano de dados, como a criação de uma nova regra de serviço virtual, faz com que o plano de controle envie novas configurações para todos os sidecars no plano de dados.

Para resolver isso, ative a otimização adaptativa de xds e crie automaticamente recursos de sidecar que otimizam os pushes de configuração. Após a ativação desse recurso, um egress gateway chamado istio-axds-egressgateway é implantado no cluster. Todo o tráfego HTTP inicial é direcionado a esse egress gateway, que analisa automaticamente as dependências de serviço com base nos logs de acesso. Esse processo é totalmente automático. Para obter mais informações sobre os efeitos da aplicação de recursos de sidecar na otimização, consulte Otimização de push de configuração com recursos de sidecar.

Pré-requisitos

Etapa 1: Ativar a otimização adaptativa de xds

  1. Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  2. Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha Mesh Optimization Center > Adaptive xds optimization.

  3. Na página Adaptive xds optimization, ative a chave Enable adaptive xds optimization. Na caixa de diálogo Confirm, clique em OK.

    Após clicar em OK, o status Updating aparece abaixo da chave Enable adaptive xds optimization. Quando a atualização for concluída, a chave Enable adaptive xds optimization será ativada e uma lista de namespaces passíveis de otimização adaptativa será exibida abaixo dela.

Etapa 2: Ativar a otimização de namespace

Ao ativar a otimização adaptativa de xds para um namespace, o recurso otimiza automaticamente todos os serviços contidos nele usando recursos de sidecar. Alternativamente, ative esse recurso para um serviço específico adicionando a anotação asm.alibabacloud.com/asm-adaptive-xds: true às annotations do serviço.

  1. Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha Mesh Optimization Center > Adaptive xds optimization.

  2. Na página Adaptive xds optimization, na lista Select namespaces to be optimized, ative a chave ao lado do namespace do serviço alvo. Este exemplo usa o namespace default. Na caixa de diálogo Confirm, clique em OK.

  3. Na página de detalhes da instância do ASM, escolha Traffic Management Center > Sidecar Traffic Configuration no painel de navegação à esquerda.

  4. Na página Sidecar Traffic Configuration, visualize os detalhes dos recursos de sidecar.

    Recursos de sidecar criados automaticamente cujos nomes começam com axds ficam visíveis. Cada recurso de sidecar corresponde a um serviço na aplicação Bookinfo implantada como parte dos pré-requisitos. A página exibe quatro recursos de sidecar: axds-details (escopo app:details), axds-productpage (escopo app:productpage), axds-ratings (escopo app:ratings) e axds-reviews (escopo app:reviews). A origem (Source) de todos os recursos é System, e o Namespace é default.

Etapa 3: Acionar a otimização

  1. Obtenha o endereço IP do ingress gateway.

  2. Na barra de endereços do navegador, insira http://{IP address of the ingress gateway}/productpage para acessar a aplicação Bookinfo.

    Substitua {IP address of the ingress gateway} pelo endereço IP obtido na etapa anterior.

  3. Verifique o recurso de sidecar otimizado adaptativamente.

    1. Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha Traffic Management Center > Sidecar Traffic Configuration.

    2. Na página Sidecar Traffic Configuration, localize o recurso axds-productpage e clique em View YAML na coluna Actions. O exemplo a seguir ilustra essa configuração.

      apiVersion: networking.istio.io/v1beta1
      kind: Sidecar
      metadata:
        annotations:
          adapted-svc: productpage.default.svc.cluster.local
        creationTimestamp: '2024-01-05T07:52:56Z'
        generation: 4
        labels:
          asm-adaptive-xds-system: 'true'
          asm-system: 'true'
          provider: asm
        name: axds-productpage
        namespace: default
        resourceVersion: '23688435'
        uid: 753e3603-6bee-4dd1-b1fc-2e735a88****
      spec:
        egress:
          - hosts:
              - arms-prom/*
              - default/details.default.svc.cluster.local
              - default/kubernetes.default.svc.cluster.local
              - default/reviews.default.svc.cluster.local
              - istio-system/*
              - kube-system/*
        workloadSelector:
          labels:
            app: productpage

      Após acessar a aplicação Bookinfo, observe que o recurso Sidecar axds-productpage, gerado para otimizar o serviço productpage, adicionou automaticamente os serviços details e reviews, dos quais o serviço productpage depende, sem necessidade de configuração manual.

Otimização adaptativa de xds: comparação de desempenho

Os testes a seguir comparam o desempenho do plano de controle e do plano de dados no namespace asm-perf em dois cenários: com a otimização adaptativa de xds desativada e com ela ativada.

  • Dimensionar horizontalmente uma carga de trabalho: aumente as réplicas do deployment httpbin de 2 para 400.

  • Iniciar tráfego de teste: envie solicitações aleatórias da aplicação sleep para diferentes aplicações httpbin para acionar um novo push de configuração adaptativa.

  • Reiniciar uma carga de trabalho: acione uma nova implantação da aplicação httpbin para simular cenários de dimensionamento e atualização de carga de trabalho.

Etapa 1: Preparar o ambiente

  1. Clone o repositório de scripts de exemplo.

    git clone https://github.com/AliyunContainerService/asm-labs.git && \
      cd asm-labs/asm-perf/adativexds
  2. Configure o ambiente de teste.

    bash run.sh -s

    Este comando cria os seguintes recursos no cluster:

    • O namespace asm-perf.

    • As cargas de trabalho prometheus e grafana para monitoramento.

    • Uma aplicação sleep e uma aplicação httpbin com duas réplicas para receber pushes de configuração.

    Execute o comando a seguir para encaminhar uma porta ao painel de monitoramento. Em seguida, acesse o painel visitando localhost:3000.

    kubectl port-forward svc/grafana -n asm-perf 3000

Etapa 2: Comparar o desempenho

  1. Dimensione horizontalmente a carga de trabalho.

    bash run.sh -su

    Aguarde alguns instantes e verifique o painel. Os resultados esperados são:

    Sem otimização adaptativa de xds

    Utilização de CPU da aplicação Sleep

    image.png

    Uso de memória da aplicação Sleep

    image.png

    Largura de banda de rede da aplicação Sleep

    image.png

    Tráfego do plano de controle
    1. Na página Base Information da instância do ASM, registre o ID do CLB associado à CLB Instance for Exposing Istio Pilot.

    2. Faça login no console do Classic Load Balancer (CLB). Clique em ícone Monitoring do CLB correspondente, escolha Listener > Bandwidth/Traffic e visualize o gráfico Listener Traffic.

      image.png

    Quando os serviços na mesh sofrem alterações, o plano de controle envia novas configurações, o que gera sobrecarga de desempenho.

    Com otimização adaptativa de xds

    Utilização de CPU da aplicação Sleep

    image.png

    Uso de memória da aplicação Sleep

    image.png

    Largura de banda de rede da aplicação Sleep

    image.png

    Tráfego do plano de controle

    image.png

    Quando os serviços na mesh sofrem alterações, o plano de controle envia novas configurações, o que gera sobrecarga de desempenho. No entanto, o impacto no desempenho é menor em comparação ao cenário em que a otimização adaptativa de xds está desativada.

    Configuração de recursos de sidecar
    1. Visualize a configuração ativa de recursos de sidecar para a aplicação sleep.

      kubectl get sidecar axds-sleep -n asm-perf -o yaml

      Saída esperada:

      apiVersion: networking.istio.io/v1
      kind: Sidecar
      metadata:
        annotations:
          adapted-svc: sleep.asm-perf.svc.cluster.local
        creationTimestamp: "2025-04-03T03:09:42Z"
        generation: 2
        labels:
          asm-adaptive-xds-system: "true"
          asm-system: "true"
          provider: asm
        name: axds-sleep
        namespace: asm-perf
        resourceVersion: "14844729886"
        uid: 31dfc081-b0ec-403f-b420-91f3c3e5f8fb
      spec:
        egress:
        - hosts:
          - arms-prom/*
          - asm-perf/grafana.asm-perf.svc.cluster.local
          - default/kubernetes.default.svc.cluster.local
          - istio-system/*
          - kube-system/*
        workloadSelector:
          labels:
            app: sleep

      O campo spec.egress.hosts lista vários serviços. Isso significa que apenas alterações nesses serviços listados acionarão um novo push de configuração para a aplicação sleep. Para obter mais informações sobre o impacto de desempenho dos recursos de sidecar, consulte Otimização de push de configuração com recursos de sidecar.

  2. Inicie o tráfego de teste. Envie um total de 100 solicitações aleatórias da aplicação sleep para diferentes aplicações httpbin.

    bash run.sh -t

    Após a conclusão das solicitações, verifique o painel novamente.

    Sem otimização adaptativa de xds

    Utilização de CPU da aplicação Sleep

    image.png

    Uso de memória da aplicação Sleep

    image

    Largura de banda de rede da aplicação Sleep

    image

    Tráfego do plano de controle

    image

    Com a otimização adaptativa de xds desativada, iniciar tráfego a partir da aplicação sleep não afeta a entrega de configurações, pois cada carga de trabalho já possui a configuração completa.

    Com otimização adaptativa de xds

    Utilização de CPU da aplicação Sleep

    image

    Uso de memória da aplicação Sleep

    image

    Largura de banda de rede da aplicação Sleep

    image

    Tráfego do plano de controle

    image.png

    Iniciar tráfego a partir da aplicação sleep aciona pushes de configuração do plano de controle.

    Configuração de recursos de sidecar
    1. Visualize a configuração ativa de recursos de sidecar para a aplicação sleep.

      kubectl get sidecar axds-sleep -n asm-perf -o yaml

      Saída esperada:

      Saída esperada

      apiVersion: networking.istio.io/v1
      kind: Sidecar
      metadata:
        annotations:
          adapted-svc: sleep.asm-perf.svc.cluster.local
        creationTimestamp: "2025-04-03T05:26:00Z"
        generation: 90
        labels:
          asm-adaptive-xds-system: "true"
          asm-system: "true"
          provider: asm
        name: axds-sleep
        namespace: asm-perf
        resourceVersion: "14845598119"
        uid: a272cb0f-6e6a-492e-9ee1-b0d072813c19
      spec:
        egress:
        - hosts:
          - arms-prom/*
          - asm-perf/grafana.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v102.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v113.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v115.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v116.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v121.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v122.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v13.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v131.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v136.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v144.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v145.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v151.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v158.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v17.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v170.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v174.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v19.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v203.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v218.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v220.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v222.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v223.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v227.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v230.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v235.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v24.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v240.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v243.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v245.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v247.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v252.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v254.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v257.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v258.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v259.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v26.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v260.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v265.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v266.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v269.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v270.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v271.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v276.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v281.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v283.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v30.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v32.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v321.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v325.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v33.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v330.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v331.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v335.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v338.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v34.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v340.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v341.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v345.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v346.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v348.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v353.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v354.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v357.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v36.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v365.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v368.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v370.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v373.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v378.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v379.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v387.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v390.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v397.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v41.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v46.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v47.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v48.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v52.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v58.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v62.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v66.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v68.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v7.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v86.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v89.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v91.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v92.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v94.asm-perf.svc.cluster.local
          - default/kubernetes.default.svc.cluster.local
          - istio-system/*
          - kube-system/*
        workloadSelector:
          labels:
            app: sleep

      O campo spec.egress.hosts lista vários serviços. Isso significa que apenas alterações nesses serviços listados acionarão um novo push de configuração para a aplicação sleep. Para obter mais informações sobre o impacto de desempenho dos recursos de sidecar, consulte Otimização de push de configuração com recursos de sidecar.

  3. Reinicie a carga de trabalho.

    bash run.sh -r

    Depois que todas as cargas de trabalho forem reiniciadas, verifique as alterações no tráfego do plano de controle.

    Sem otimização adaptativa de xdsTráfego do plano de controle

    image

    Quando os serviços na mesh sofrem alterações, o plano de controle envia novas configurações, o que gera sobrecarga de desempenho.

    Com otimização adaptativa de xdsTráfego do plano de controle

    image

    Ao reiniciar cargas de trabalho, o volume de pushes de configuração é significativamente reduzido em comparação ao cenário em que a otimização adaptativa de xds está desativada.

  4. Restaure o ambiente de teste.

    bash run.sh -sd

    Os pods da aplicação httpbin levam cerca de dois minutos para reduzir de 400 para 2, restaurando o ambiente ao estado inicial.

Operações relacionadas

Desativar a otimização adaptativa de xds

  1. Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha Mesh Optimization Center > Adaptive xds optimization.

  2. Na página Adaptive xds optimization, desative a chave Enable adaptive xds optimization. Na caixa de diálogo Confirm, clique em OK.

    Após clicar em OK, o status Updating aparece abaixo da chave Enable adaptive xds optimization. Após a conclusão da atualização, a chave Enable adaptive xds optimization será desativada.

  3. Na página de detalhes da instância, no painel de navegação à esquerda, escolha Traffic Management Center > Sidecar Traffic Configuration.

    Os recursos de sidecar criados pela otimização adaptativa de xds foram excluídos.

Modificar a configuração do egress gateway

A ativação da otimização adaptativa de xds implanta um egress gateway chamado istio-axds-egressgateway no cluster ACK. Esse gateway fica visível na página Network > Services do cluster alvo no console do ACK. Todo o tráfego HTTP inicial é direcionado a esse egress gateway, que analisa automaticamente as dependências de serviço a partir dos logs de acesso. Modifique a configuração do egress gateway para lidar com diferentes cargas de tráfego conforme necessário.

  1. Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha Mesh Optimization Center > Adaptive xds optimization.

  2. Na página Adaptive xds optimization, clique em aba Egress Gateway Configuration. Modifique a configuração do egress gateway conforme necessário e clique em Update Settings.

    Após clicar em Update Settings, a service mesh entra brevemente em estado de atualização. Quando a atualização for concluída, o egress gateway será atualizado com a configuração especificada.

    Nota

    O ASM permite modificar as configurações de recursos do egress gateway, o número de réplicas do gateway, o status de auto scaling do HPA, os limiares de monitoramento de métricas do HPA e o número máximo e mínimo de réplicas do HPA.