Este tópico descreve como usar os principais recursos do Microservices Governance para aplicações Java.
Pré-requisitos
-
Crie um cluster gerenciado do ACK.
NotaA configuração mínima necessária para um cluster Kubernetes é de 12 núcleos e 24 GiB de memória.
O cluster Kubernetes precisa ter conexão com a internet para baixar a demonstração do GitHub.
Exponha o servidor de API usando endereços IP elásticos (EIPs) para permitir o acesso via CloudShell.
Conecte uma aplicação de microsserviços em um cluster ACK ao MSE Governance Center.
Instale o componente ack-kubernetes-cronhpa-controller no cluster ACK. Para mais informações, consulte Instalar componentes.
Se você for um usuário RAM, solicite ao administrador da sua conta Alibaba Cloud que conceda temporariamente a permissão <a baseurl="t2314492_v4_2_0.xdita" data-node="4751410" data-root="45393" data-tag="xref" href="t2487291.xdita#" id="b5397d18a1u34">AliyunMSEFullAccess</a> e a remova após concluir este tutorial. Em ambientes de produção, conceda permissões conforme a necessidade. Para mais detalhes sobre autorização de administração de serviços, consulte Autorização de Administração de Microsserviços.
Implante a demonstração
Introdução à demonstração
A demonstração usa uma instância do Nacos como registro e inclui um gateway Spring Cloud e um gateway Zuul, ativáveis conforme necessário. O fluxo padrão de chamadas da aplicação é A -> B -> C. As aplicações A e C possuem versões de lançamento canário. Obtenha o código da aplicação no repositório de código.
|
Nome da aplicação |
Versão do framework de serviço |
Componente envolvido |
Demonstração |
|
Zuul |
Spring Cloud Greenwich |
zuul |
|
|
SpringCloudGateway |
spring-cloud-starter-gateway 4.1.2 |
spring-cloud-starter-gateway |
|
|
A |
Spring Cloud 2023.0.1 Dubbo 3.3.0 |
openfeign/httpclient/rocketmq/nacos/loadbalancer |
|
|
B |
Spring Cloud 2023.0.1 Dubbo 3.3.0 |
httpclient/mybatis/druid/nacos |
|
|
C |
Spring Cloud 2023.0.1 Dubbo 3.3.0 |
openfeign/httpclient/nacos |

Baixe o pacote Helm
Baixe o pacote Helm da demonstração. O pacote Helm e a imagem são atualizados regularmente.

Métodos de implantação
Use o CloudShell do cluster ACK para implantar o mse-simple-demo
Prepare o arquivo mse-simple-demo.
-
Faça login no console do ACK. Selecione o cluster desejado e, na página Cluster Information, clique em Manage Cluster With Workbench.

-
Carregue o pacote Helm.

Execute o comando
unzip mse-simple-demo.zippara descompactar o pacote de demonstração.Execute o comando
kubectl create namespace mse-demopara criar um namespace correspondente ao parâmetro --namespace.
Use o Helm para implantar o mse-simple-demo
Execute o seguinte comando Helm para implantar o mse-simple-demo.
helm upgrade mse-simple-demo mse-simple-demo \
--set mse.namespace=mse-demo \
--set gateway.springcloud=true \
--install \
--namespace mse-demo \
--values mse-simple-demo/values.yaml
É possível modificar os seguintes parâmetros:
namespace: Namespace do Kubernetes onde a demonstração será instalada. Este parâmetro é opcional. O valor padrão édefault.registry: Prefixo do endereço da imagem do contêiner. Caso seu cluster não consiga baixar a imagem de demonstração, sincronize a imagem para o repositório de imagens da sua conta e atualize este parâmetro com o novo endereço.images.version: Versão da imagem. A versão mais recente é a 3.1.0.mse.namespace: Namespace de microsserviços conectado ao MSE Microservices Governance. Use este parâmetro para diferenciar ambientes. O valor padrão é mse-demo.nacos.host: Endereço do registro Nacos. A demonstração inicia automaticamente um servidor Nacos. Configure este parâmetro caso deseje registrar as aplicações de demonstração em outro endereço Nacos.autoscaling: Define se o Auto Scaling deve ser ativado. O valor padrão é false. Antes de ativar esse recurso, verifique se o componente kubernetes-cronhpa-controller está instalado no cluster.resources.enable: Define se a configuração de solicitação de recursos deve ser aplicada. O valor padrão é true.
Verifique os recursos básicos
Lançamento canário de ponta a ponta
Faça login no console do MSE. No painel de navegação à esquerda, escolha Microservices Governance > End-to-end Canary Release.
Crie um grupo de faixas
Na página End-to-end Canary Release:
Clique em Create Lane Group and Lane. Se já existir um grupo de faixas no namespace de microsserviços selecionado, clique em + Create Lane Group.
Na página Create Lane Group, configure os parâmetros e clique em OK.

Crie uma faixa
Na parte inferior da página End-to-end Canary Release:
Clique em Create First Split Lane. Se uma faixa já tiver sido criada no namespace de microsserviços selecionado, clique em Create Lane.
-
No painel Create Lane, configure as definições da faixa e clique em OK.


Encaminhe solicitações comuns para as versões base
O endereço da página web corresponde ao endereço do SLB do gateway. Para encontrar esse endereço, acesse a página de detalhes do cluster no console do ACK. Escolha Workloads > Deployments. Na página Deployments, clique na implantação spring-cloud-gateway. Na página de detalhes exibida, clique na aba Access Method. Na seção Service, localize o endereço IP e a porta na coluna External Endpoint.
No navegador, acesse o endereço do SLB do gateway e envie as seguintes solicitações.


Encaminhe solicitações canário para as versões de lançamento canário


Para mais informações, consulte Implementar um lançamento canário de ponta a ponta baseado em Spring Cloud Gateway ou gateway Zuul autogerenciado.
Inicialização e encerramento graceful
Faça login no console do MSE. No painel de navegação à esquerda, escolha Microservices Governance > Application Governance. Na página Application List, clique no nome da aplicação desejada para acessar sua página de visão geral.
Configure a inicialização e o encerramento graceful
Na página de visão geral da aplicação, no painel de navegação à esquerda, selecione Traffic Governance. Por padrão, alguns recursos de inicialização e encerramento graceful estão disponíveis. Para usar todos os recursos, ative e configure as definições de inicialização e encerramento graceful no console.

Visualize eventos e processos

Para mais informações, consulte Inicialização e encerramento graceful.
Regras de limitação de taxa
Faça login no console do MSE. No painel de navegação à esquerda, escolha Microservices Governance > Application Governance. Na página Application List, clique no nome da aplicação desejada para acessar sua página de visão geral.
Configure uma regra de limitação de taxa
No painel de navegação à esquerda da página de visão geral da aplicação, selecione Traffic Governance. Na página Traffic Governance, selecione Flow Protection > Interface Throttling e clique em Add Throttling Rule.

Efeito da limitação de taxa
No navegador, acesse o endereço do SLB do gateway e envie as seguintes solicitações.

A aplicação A possui um nó. O limiar de limitação para um único nó está definido como 5, e as consultas por segundo (QPS) mantêm-se estáveis em 5.

Para mais informações, consulte O que é proteção de tráfego?.
Solicitações de exemplo
Substitua localhost pelo endereço do SLB do gateway. É possível enviar solicitações a partir do pod do gateway.
# Common request
http://localhost:20000/A/a
A[10.0.0.47][config=base] -> B[10.0.0.39] -> C[10.0.0.48]
# Canary request
http://localhost:20000/A/a?name=xiaoming
Agray[10.0.0.41][config=base] -> B[10.0.0.55] -> Cgray[10.0.0.30]
# Common request (Feign)
http://localhost:20000/A/aByFeign
A[10.0.0.47][config=base] -> B[10.0.0.55]
# Common request (A requests B and C sequentially)
http://localhost:20000/A/a2bc
A[10.0.0.47][config=base] -> C[10.0.0.48]
A[10.0.0.47][config=base] -> B[10.0.0.55] -> C[10.0.0.49]
# Dubbo request
http://localhost:20000/A/dubbo
A[10.0.0.44] -> B[10.0.0.39]name:A -> C[10.0.0.49] params:A
# Dubbo canary request
http://localhost:20000/A/dubbo?name=xiaoming
Agray[10.0.0.41] -> B[10.0.0.39]name:A -> Cgray[10.0.0.30] params:A
# Request for throttling test
http://localhost:20000/A/flow
A[10.0.0.17][config=base] -> B[10.0.0.39] sleepTime:9 -> C[10.0.0.48] sleepTime:8 code:200
http://localhost:20000/A/dubbo-flow
A[10.0.0.17] -> B[10.0.0.55]name:A -> C[10.0.0.48] params:A
http://localhost:20000/A/isolate
A[10.0.0.42][config=base] -> B[10.0.0.55] sleepTime:504 -> C[10.0.0.48] sleepTime:8 code:200
http://localhost:20000/A/dubbo-isolate
A[10.0.0.17] -> B[10.0.0.55]name:isolate -> C[10.0.0.49] params:isolate
http://localhost:20000/A/params/hot
A[10.0.0.17][config=base] params:hot -> B[10.0.0.55] sleepTime:5 params:hot -> C[10.0.0.49] sleepTime:6 params:hot code:200
http://localhost:20000/A/dubbo-params/hot
A[10.0.0.17] params:hot -> B[10.0.0.55]name:hot -> C[10.0.0.49] params:hot
# Database request
http://localhost:20000/A/sql?command=query&id=1
A[10.0.0.44][config=base] -> B[10.0.0.39] result:{"age":1,"email":"emailUpdate%40demo.com","id":1,"name":"name1Update"}
http://localhost:20000/A/sql?command=update&name=name1Update&email=emailUpd***@demo.com&age=1&id=1
A[10.0.0.44][config=base] -> B[10.0.0.55] result:true
# spring boot request
http://localhost:20000/spring_boot
Informações adicionais
Conexão da aplicação
Este método exige adicionar explicitamente o rótulo msePilotAutoEnable: "on" à implantação de cada aplicação que você deseja conectar. Na prática, é possível ativar a governança de microsserviços para todo um namespace do Kubernetes no MSE Operation Center e conectar as aplicações em lote.
Para mais informações, consulte Conectar aplicações de microsserviços ACK e ACS ao MSE Governance Center (Java).
Inicialização e encerramento graceful
Caso não tenha ativado a inicialização e o encerramento graceful durante a implantação, faça-o posteriormente seguindo os passos abaixo.
Para usar a inicialização e o encerramento graceful, faça login no console do ACK. No painel de navegação à esquerda da página Cluster Information, selecione Operations Management > Add-ons, pesquise por
cronhpana caixa de busca e clique em Install.Use o seguinte arquivo YAML para criar uma tarefa de dimensionamento agendado. O campo
Namespacedeve corresponder ao mesmo namespace do Kubernetes selecionado durante a instalação do Helm.
apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: CronHorizontalPodAutoscaler
metadata:
labels:
controller-tools.k8s.io: "1.0"
name: cronhpa-deployment-spring-cloud-b
namespace: mse-demo # Note: The namespace field must be the same as the Kubernetes namespace that you selected during the Helm installation.
spec:
jobs:
- name: scale-out
schedule: 0 0/6 * * * *
targetSize: 6
- name: scale-in
schedule: 0 5/6 * * * *
targetSize: 2
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: spring-cloud-b
Configuração automática de solicitações do gateway
O envio automático de solicitações vem ativado por padrão. Faça login no console do Container Service. Na barra de navegação, clique em Workloads > Stateless. Na página Stateless, clique na aplicação spring-cloud-gateway. Na página de detalhes, clique em Edit no canto superior direito e configure as seguintes variáveis de ambiente para as solicitações automáticas.
Chave da variável de ambiente | Descrição | Valor padrão |
enable.auto | Chave mestra para tráfego automático | true |
enable.rpc.invoke | Chave para solicitações Dubbo | true |
enable.sql | Chave para solicitações de banco de dados | true |
enable.sentinel.demo.flow | Chave para solicitações relacionadas a regras do Sentinel. Entre elas:
| true |
enable.gray | Chave para solicitações canário baseadas em tags | false |
demo.qps | Taxa de solicitações em QPS. Controla a taxa de solicitações para o caminho /a. As taxas dos demais caminhos são relativas a este valor. | 20 |
