Todos os produtos
Search
Central de documentação

Microservices Engine:Get started with service governance in 15 minutes (Java)

Última atualização: Jun 28, 2026

Este tópico descreve como usar os principais recursos do Microservices Governance para aplicações Java.

Pré-requisitos

Nota

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

pom.xml

SpringCloudGateway

spring-cloud-starter-gateway 4.1.2

spring-cloud-starter-gateway

pom.xml

A

Spring Cloud 2023.0.1

Dubbo 3.3.0

openfeign/httpclient/rocketmq/nacos/loadbalancer

pom.xml

B

Spring Cloud 2023.0.1

Dubbo 3.3.0

httpclient/mybatis/druid/nacos

pom.xml

C

Spring Cloud 2023.0.1

Dubbo 3.3.0

openfeign/httpclient/nacos

pom.xml

image.png

Baixe o pacote Helm

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

image

Métodos de implantação

Use o CloudShell do cluster ACK para implantar o mse-simple-demo

  1. Prepare o arquivo mse-simple-demo.

  2. Faça login no console do ACK. Selecione o cluster desejado e, na página Cluster Information, clique em Manage Cluster With Workbench.

    image

  3. Carregue o pacote Helm.

    image

  4. Execute o comando unzip mse-simple-demo.zip para descompactar o pacote de demonstração.

  5. Execute o comando kubectl create namespace mse-demo para 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:

  1. 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.

  2. Na página Create Lane Group, configure os parâmetros e clique em OK.

image

Crie uma faixa

Na parte inferior da página End-to-end Canary Release:

  1. Clique em Create First Split Lane. Se uma faixa já tiver sido criada no namespace de microsserviços selecionado, clique em Create Lane.

  2. No painel Create Lane, configure as definições da faixa e clique em OK.

    image

    image

Encaminhe solicitações comuns para as versões base

Nota

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.

image

image

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

image

image

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.

image

Visualize eventos e processos

image

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.

image

Efeito da limitação de taxa

No navegador, acesse o endereço do SLB do gateway e envie as seguintes solicitações.

image

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.

image

Para mais informações, consulte O que é proteção de tráfego?.

Solicitações de exemplo

Nota

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

Nota

Caso não tenha ativado a inicialização e o encerramento graceful durante a implantação, faça-o posteriormente seguindo os passos abaixo.

  1. 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 cronhpa na caixa de busca e clique em Install.

  2. Use o seguinte arquivo YAML para criar uma tarefa de dimensionamento agendado. O campo Namespace deve 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:

  • Solicitações de fluxo servem para testar regras de limitação de taxa.

  • Solicitações de isolamento possuem um nível específico de concorrência e permitem testar regras de isolamento.

  • O parâmetro hot em params possibilita o teste de regras de hot spot.

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

image.png