Todos los productos
Search
Centro de documentos

Microservices Engine:Service governance quick start (Java)

Última actualización: Sep 05, 2026

Adquiera experiencia práctica con las funciones principales de gobernanza de servicios de MSE Microservices Governance mediante el despliegue de una aplicación de demostración y la verificación de la versión canary, el inicio y apagado graceful, y la protección de tráfico.

Requisitos previos

Despliegue de la demostración

Descripción general de la demostración

La demostración utiliza Nacos como registro e incluye dos gateways: SpringCloudGateway y Zuul. Se recomienda SpringCloudGateway para proyectos nuevos, mientras que Zuul se proporciona por compatibilidad con sistemas heredados. Puede habilitar o deshabilitar cualquiera de los dos gateways. La ruta de llamada predeterminada es A->B->C, y tanto A como C cuentan con versiones canary. Puede obtener el código de la aplicación desde el repositorio de código.

Nombre de la aplicación

Versión del framework de servicio

Componentes

Demostración

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

Descarga del paquete Helm de la demostración

Descargue el paquete Helm de la demostración. Tanto el paquete Helm como las imágenes se actualizan periódicamente.

En la página Releases del repositorio de GitHub aliyun/alibabacloud-microservice-demo, localice la versión más reciente, por ejemplo, MSE Simple Demo V3.1.0. En la sección Assets, haga clic en mse-simple-demo.zip para descargar el archivo.

Despliegue mediante CloudShell en ACK

Despliegue de mse-simple-demo mediante CloudShell en ACK

  1. Empaquete los archivos de mse-simple-demo.

  2. Inicie sesión en la consola de administración de clústeres de ACK. Seleccione el clúster destino. En la página Cluster information, haga clic en Manage Cluster with Workbench.

  3. Cargue el paquete Helm.

    En la barra de herramientas de CloudShell, haga clic en el icono de gestión de archivos y seleccione Upload en el menú que aparece.

  4. Ejecute el comando unzip mse-simple-demo.zip para descomprimir la demostración.

  5. Ejecute el comando kubectl create namespace mse-demo para crear un namespace, el cual corresponde a --namespace.

Despliegue mediante Helm

Ejecute el siguiente comando de Helm para desplegar 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

Edite el archivo values.yaml o utilice los parámetros --set para sobrescribir los siguientes parámetros:

  • namespace: el namespace de Kubernetes donde se instalará la demostración. Opcional. Por lo general es default.

  • registry: el prefijo de la dirección de la imagen de contenedor. Si su clúster no puede extraer las imágenes de la demostración, sincronícelas con un repositorio de imágenes de su cuenta y modifique esta dirección.

  • images.version: la versión de la imagen. La versión más reciente es la 3.1.0.

  • mse.namespace: el namespace de microservices conectado a MSE Microservices Governance, útil para separar entornos. Valor predeterminado: mse-demo.

  • nacos.host: la dirección del registro de Nacos. La demostración inicia automáticamente un servidor de Nacos. Para registrar las aplicaciones de demostración en una dirección distinta de Nacos, configure este parámetro.

  • autoscaling: especifica si se habilita el escalado automático. Valor predeterminado: false. Antes de habilitar este parámetro, asegúrese de que el complemento kubernetes-cronhpa-controller esté instalado en el clúster.

  • resources.enable: especifica si se configura el ajuste de solicitudes de recursos. Valor predeterminado: true.

Verificación de funciones básicas

Versión canary de extremo a extremo

Ruta de navegación: Inicie sesión en la consola de MSE Microservices Governance y seleccione Microservices Governance > End-to-end Canary Release en la barra de navegación izquierda.

Creación de un grupo de lanes

En la página End-to-end Canary Release:

  1. Haga clic en Create Lane Group and Lane. Si ya existe un grupo de lanes en el namespace de microservices seleccionado, haga clic en + Create Lane Group.

  2. En la página Create Lane Group, configure los siguientes ajustes y haga clic en OK.

    • Lane Group Name: Introduzca un nombre, por ejemplo, demo.

    • Entry Type: Seleccione Java Service Gateway. También puede elegir Cloud Native API Gateway, MSE cloud-native gateway u otro gateway.

    • Lane Group Traffic Entry: Seleccione la aplicación de entrada de tráfico, por ejemplo, spring-cloud-gateway.

    • Applications in Lane Group: Seleccione las aplicaciones que participan en el grupo de lanes, por ejemplo, spring-cloud-a, spring-cloud-b y spring-cloud-c.

Creación de una lane

En la parte inferior de la página End-to-end Canary Release:

  1. Haga clic en Create First Split Lane. Si ya existe una lane en el namespace de microservices seleccionado, haga clic en Create Lane.

  2. En el panel Create Lane, configure los ajustes de la lane de tráfico y haga clic en OK.

    • Lane Name y Lane Tag: Establezca ambos valores en gray.

    • Confirm Matching Relationship: Incluya spring-cloud-a y spring-cloud-c.

    • Lane Status: Habilitado.

    • Grayscale Mode: Seleccione By Content.

    • Grayscale Condition: Seleccione All of the following conditions are met y agregue una fila de parámetro: establezca Parameter Type en Parameter, Parameter en name, Condition en == y Value en xiaoming.

      Una vez creada la lane, la sección Traffic Allocation de la página del producto del grupo de lanes muestra la información correspondiente, incluido el nombre de la lane (gray), la etiqueta, la lista de aplicaciones asociadas (spring-cloud-a y spring-cloud-c), la condición de coincidencia (param:[name]==xiaoming) y el estado de habilitación. El área de monitoreo de QPS superior muestra el número de solicitudes y las líneas de tendencia para el tráfico base y el tráfico canary.

Enrutamiento de solicitudes regulares a la versión base

Para encontrar la dirección SLB del gateway:

  1. Inicie sesión en la consola de Container Service for Kubernetes (ACK).

  2. Vaya a la página del producto del clúster que creó.

  3. En el panel de navegación izquierdo, seleccione Workload > Stateless.

  4. En la página Deployments, haga clic en spring-cloud-gateway.

  5. En la página de detalles, haga clic en Access Method.

  6. En la columna External Endpoint de la sección Service, anote la dirección IP y el puerto.

    En un navegador, visite la dirección SLB del gateway y envíe las siguientes solicitudes.

Introduzca /A/a en el cuadro de entrada y haga clic en Start Calling. La traza de llamada devuelta es A[192.168.100.48] [config=base] -> B -> C[192.168.100.235], donde el nodo B alterna entre las instancias 192.168.100.51 y 192.168.100.53. Esto indica que las solicitudes regulares utilizan el enrutamiento basado en etiquetas con la etiqueta config=base, y el tráfico se distribuye uniformemente entre las dos instancias base de B.

Solicite la ruta /A/dubbo sin una etiqueta canary (param:null) y haga clic en Start Calling. Los registros de la traza de llamada muestran que la mayoría de las solicitudes se enrutan a nodos base: A[192.168.100.48] -> B[192.168.100.53] -> C[192.168.100.235]. Algunas solicitudes pasan por B[192.168.100.51] y una solicitud se enruta al nodo canary Cgray[192.168.100.12].

Enrutamiento de solicitudes canary a la versión canary

Enter the URL: /A/a?name=xiaoming
2025-3-4 16:22:19 Returned Agray[192.168.100.52] [config=base] -> B[192.168.100.53] -> Cgray[192.168.100.12]
2025-3-4 16:22:20 Returned Agray[192.168.100.52] [config=base] -> B[192.168.100.53] -> Cgray[192.168.100.12]
2025-3-4 16:22:20 Returned Agray[192.168.100.52] [config=base] -> B[192.168.100.53] -> Cgray[192.168.100.12]
2025-3-4 16:22:21 Returned Agray[192.168.100.52] [config=base] -> B[192.168.100.51] -> Cgray[192.168.100.12]
2025-3-4 16:22:21 Returned Agray[192.168.100.52] [config=base] -> B[192.168.100.53] -> Cgray[192.168.100.12]
2025-3-4 16:22:22 Returned Agray[192.168.100.52] [config=base] -> B[192.168.100.51] -> Cgray[192.168.100.12]
2025-3-4 16:22:22 Returned Agray[192.168.100.52] [config=base] -> B[192.168.100.51] -> Cgray[192.168.100.12]
2025-3-4 16:22:23 Returned Agray[192.168.100.52] [config=base] -> B[192.168.100.51] -> Cgray[192.168.100.12]
2025-3-4 16:22:23 Returned Agray[192.168.100.52] [config=base] -> B[192.168.100.53] -> Cgray[192.168.100.12]

Acceda a la operación /A/dubbo?name=xiaoming. El registro de la traza de llamada canary es el siguiente:

2025-3-4 16:23:59 Returned Agray[192.168.100.52] -> B[192.168.100.51] param:null -> Cgray[192.168.100.12] param:null
2025-3-4 16:23:59 Returned Agray[192.168.100.52] -> B[192.168.100.51] param:null -> Cgray[192.168.100.12] param:null
2025-3-4 16:24:0 Returned Agray[192.168.100.52] -> B[192.168.100.53] param:null -> Cgray[192.168.100.12] param:null
2025-3-4 16:24:1 Returned Agray[192.168.100.52] -> B[192.168.100.53] param:null -> Cgray[192.168.100.12] param:null
2025-3-4 16:24:1 Returned Agray[192.168.100.52] -> B[192.168.100.51] param:null -> Cgray[192.168.100.12] param:null
2025-3-4 16:24:2 Returned Agray[192.168.100.52] -> B[192.168.100.53] param:null -> Cgray[192.168.100.12] param:null
2025-3-4 16:24:2 Returned Agray[192.168.100.52] -> B[192.168.100.51] param:null -> Cgray[192.168.100.12] param:null

Para obtener más información, consulte Implement end-to-end canary release based on a self-managed Spring Cloud Gateway or Zuul gateway.

Inicio y apagado graceful

Ruta de navegación: Inicie sesión en la consola de MSE Microservices Governance y seleccione Microservices Governance > Application Governance en la barra de navegación izquierda. En la página Applications, haga clic en la aplicación que desea gestionar para ir a la página de descripción general de la aplicación.

Configuración del inicio y apagado graceful

En la barra de navegación izquierda de la página de descripción general de la aplicación, seleccione Traffic Governance. Algunas capacidades de inicio y apagado graceful están disponibles de forma predeterminada. Para utilizar todas las funcionalidades, habilite y configure el inicio y apagado graceful en la consola.

En la página Traffic Governance, haga clic en la pestaña Graceful Start and Shutdown. En la sección Configuration Information, puede consultar el estado de habilitación de Graceful Start y Graceful Shutdown, así como el ajuste de Proactive Notification. Haga clic en Modify a la derecha para ajustar la configuración.

Consulta de eventos y procesos

La parte superior de la página Graceful Start and Shutdown muestra la configuración actual: el estado de habilitación del inicio graceful, la duración del registro diferido, la duración del calentamiento con poco tráfico, el estado de habilitación del apagado graceful y el estado de la notificación proactiva. En la pestaña Start/Shutdown Events, la lista de eventos a la izquierda muestra cada registro de evento, incluida la hora, el IP-PID del nodo, el nombre del evento (apagado de aplicación de microservices, registro de microservices, inicio de calentamiento de microservices o apagado graceful de microservices), el tipo de framework y los detalles del evento. Al hacer clic en un evento, como el apagado graceful de microservices, aparece a la derecha un gráfico de líneas de QPS del nodo correspondiente, donde se observa cómo el tráfico disminuye suavemente desde el nivel normal hasta 0 cuando el servicio se desconecta.

Para obtener más información, consulte Graceful Start and Shutdown.

Reglas de limitación de tráfico

Ruta de navegación: Inicie sesión en la consola de MSE Microservices Governance y seleccione Microservices Governance > Application Governance en la barra de navegación izquierda. En la página Applications, haga clic en la aplicación que desea gestionar para ir a la página de descripción general de la aplicación.

Configuración de una regla de limitación de tráfico

En la barra de navegación izquierda de la página de descripción general de la aplicación, seleccione Traffic Governance. En la página Traffic Governance, seleccione Traffic Protection > Interface Flow Control y luego haga clic en Add Rules.

En el paso Configure Protection Rule del asistente Add Throttling Protection Rule, la barra de información superior muestra el nombre de la API, el tipo de protección y el tipo de API. Configure los siguientes ajustes:

  • Enable: Active el interruptor para habilitar la regla.

  • Single-instance QPS Threshold: Establezca el límite máximo de solicitudes por segundo, por ejemplo, 5.

  • Throttling Effect: Seleccione Fail-fast o Wait in Queue. Fail-fast devuelve el mensaje de limitación predeterminado para el tráfico que supera el umbral.

    Haga clic en Show Advanced Options para expandir más ajustes. Una vez completada la configuración, haga clic en Next para avanzar al paso de configuración del comportamiento de protección.

Verificación del efecto de limitación

En un navegador, visite la dirección SLB del gateway y envíe la siguiente solicitud.

Establezca la URI de la solicitud en /A/flow y haga clic en Start Calling. La mayoría de las solicitudes devuelven Blocked by Sentinel (flow limiting), y solo unas pocas pasan y devuelven la traza de invocación del servicio Tracing Analysis: A[192.168.100.45][config=base] -> B[192.168.100.53] -> C[192.168.100.235].

La aplicación A tiene un solo nodo y su umbral de limitación por instancia es 5, por lo que el QPS de tráfico permitido se estabiliza en 5.

image

Para obtener más información, consulte What is traffic protection?.

Temas adicionales

Integración de aplicaciones

En esta demostración, la etiqueta msePilotAutoEnable: "on" se agrega explícitamente al Deployment de cada aplicación que se desea conectar. En producción, puede habilitar Microservices Governance para un namespace de un clúster de Kubernetes en el centro de operaciones de MSE para conectar aplicaciones de forma masiva.

Para obtener más información, consulte Connect Java applications in ACK and ACS clusters to MSE Microservices Governance.

Solicitudes de ejemplo

Las siguientes solicitudes de ejemplo utilizan localhost:20000 como dirección del gateway. Reemplace localhost:20000 con la dirección SLB y el puerto del gateway que obtuvo anteriormente. También puede enviar estas solicitudes desde dentro del pod del gateway.

Solicitudes de ejemplo

  # Regular 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]
  # Regular request (Feign)
  http://localhost:20000/A/aByFeign
  A[10.0.0.47][config=base] -> B[10.0.0.55]
  # Regular request (A sends requests directly to C, and then A requests B which requests C)
  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
  # Requests for throttling tests
  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

Configuración del escalado automático para la demostración

Si no se habilitó el inicio y apagado graceful durante el despliegue inicial pero desea observarlo posteriormente, habilítelo de la siguiente manera.

  • Para utilizar las funciones detalladas de inicio y apagado graceful, inicie sesión en la consola de Container Service for Kubernetes (ACK), vaya a la página de información del clúster, seleccione Operations Management > Add-ons en la barra de navegación izquierda, busque cronhpa en el cuadro de búsqueda y haga clic en Install.

  • Utilice el siguiente YAML para crear una tarea de escalado programado. El campo namespace debe coincidir con el namespace de Kubernetes que seleccionó al instalar el paquete 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 k8s namespace selected during helm install
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

Configuración de solicitudes automáticas del gateway

El envío automático de diversas solicitudes está habilitado de forma predeterminada. Para modificar la configuración, inicie sesión en la consola de Container Service for Kubernetes (ACK), vaya a la página de información del clúster y seleccione Workload > Stateless en el panel de navegación. En la página Deployments, haga clic en la aplicación spring-cloud-gateway. En la página del producto, haga clic en Edit en la esquina superior derecha. A continuación, configure las siguientes variables de entorno para controlar el envío automático de diversas solicitudes.

Clave de variable de entorno

Descripción

Valor predeterminado

enable.auto

Interruptor principal de generación automática de tráfico

true

enable.rpc.invoke

Interruptor para solicitudes Dubbo

true

enable.sql

Interruptor para solicitudes de base de datos

true

enable.sentinel.demo.flow

Interruptor para solicitudes relacionadas con reglas de Sentinel: las solicitudes flow prueban reglas de limitación; las solicitudes isolate generan concurrencia para probar reglas de aislamiento; las solicitudes params llevan el parámetro activo para probar reglas de puntos críticos.

true

enable.gray

Interruptor para solicitudes canary que utilizan etiquetas

false

demo.qps

Tasa de solicitudes en QPS. Controla la tasa de solicitudes de /a. Las tasas de otras solicitudes son relativas a este valor.

20