全部產品
Search
文件中心

Microservices Engine:15分鐘完成服務治理能力快速體驗(Java版)

更新時間:Nov 01, 2025

本文介紹如何快速完成服務治理核心能力的體驗。

前提條件

說明

如果使用的是子賬戶,可以聯絡主賬戶臨時授予AliyunMSEFullAccess許可權,完成體驗後再移除,生產實踐中應按需授權許可權,有關服務治理授權請參見微服務治理中心授權

部署Demo

Demo介紹

該Demo使用Nacos作為註冊中心,存有兩個網關,分別為SpringCloudGateway和Zuul(兩者可選擇是否開啟),Demo的預設調用配置為A->B->C,其中A、C均有灰階版本。您可以在代碼倉庫擷取應用代碼。

應用程式名稱

服務架構版本

涉及組件

Demo

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

Helm包下載

下載Demo的Helm包,官方會定期更新該Helm包和鏡像。

image

部署方式

使用ACK的CloudShell部署mse-simple-demo

  1. 將mse-simple-demo檔案打包。

  2. 登入Container Service管理主控台選擇目的地組群,在叢集資訊頁面,單擊通過 Workbench 管理叢集

    image

  3. 上傳Helm包。

    image

  4. 使用命令unzip mse-simple-demo.zip解壓Demo。

  5. 使用命令kubectl create namespace mse-demo建立命名空間(對應--namespace)。

Helm方式部署mse-simple-demo

使用如下Helm命令部署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

其中可以修改的參數如下:

  • namespace: 要安裝到的K8s命名空間。可選,一般為default。

  • registry: 容器鏡像地址首碼。當您的叢集無法拉取 Demo 鏡像時,可以將 Demo 鏡像同步到您帳號下的鏡像倉庫並修改此地址。

  • images.version:鏡像版本,當前最新版本為 3.1.0。

  • mse.namespace: 接入MSE微服務治理的微服務命名空間,可以用來區分環境。預設值為mse-demo。

  • nacos.host: Nacos 註冊中心的地址。Demo 會自動拉起一個 Nacos Server,若您想將 Demo 應用註冊到其他 Nacos 地址,請配置此參數。

  • autoscaling:是否開啟自動調整。預設值為false,開啟此項前,請確認叢集已安裝 kubernetes-cronhpa-controller 組件。

  • resources.enable:是否設定resources的requests配置。預設值為true。

基礎功能驗證

全鏈路灰階

使用路徑:登入MSE治理中心控制台,在左側欄選擇治理中心>全鏈路灰階

建立泳道組

全鏈路灰階頁面:

  1. 單擊建立泳道組及泳道。如果您選擇的微服務空間內已經建立過泳道組,則單擊+建立泳道組

  2. 建立泳道組頁面,設定如下相關配置,然後單擊確定

image

建立泳道

全鏈路灰階頁面底部:

  1. 單擊點擊建立第一個分流泳道。如果您選擇的微服務空間內已經建立過泳道,則單擊建立泳道

  2. 建立泳道面板,設定流控泳道相關配置,然後單擊確定

    image

    image

普通請求走基礎版本

說明

Web頁面的地址為網關SLB的地址,可以在Container Service控制台對應建立的叢集詳情頁面找到工作負載>無狀態,在無狀態頁面單擊對應的spring-cloud-gateway網關進入詳情頁,單擊訪問方式,在訪問方式的服務 (Service)欄下的外部端點列可以看到IP地址和連接埠。

在瀏覽器中訪問網關的SLB地址,進行如下請求。

image

image

灰階請求走灰階版本

image

image

更多內容,請參見基於自建Spring Cloud Gateway或Zuul網關實現全鏈路灰階

無損上下線

使用路徑:登入MSE治理中心控制台,在左側欄選擇治理中心 > 應用治理 。在應用列表頁面單擊需要治理的應用,進入應用概覽頁面。

配置無損上下線

在應用概覽頁面的左側導覽列選擇流量治理。預設具備一部分無損上下線能力,需要完整能力可在控制台開啟並配置無損上下線相關配置。

image

查看事件以及流程

image

更多內容,請參見無損上下線

流控規則

使用路徑:登入MSE治理中心控制台,在左側欄選擇治理中心 > 應用治理。在應用列表頁面單擊需要治理的應用,進入應用概覽頁面。

配置流控規則

在應用概覽頁面的左側導覽列選擇流量治理。在流量治理頁面選擇流量防護 > 介面流控,然後單擊新增流控規則

image

限流效果

在瀏覽器中訪問網關的SLB地址,進行如下請求。

image

A有一個節點,單機限流5,通過QPS穩定5。

image

更多內容,請參見什麼是流量防護

請求樣本

說明

localhost需要換成網關SLB的地址,可以進入到網關的Pod中發起請求。

# 普通請求
http://localhost:20000/A/a
A[10.0.0.47][config=base] -> B[10.0.0.39] -> C[10.0.0.48]

# 灰階請求
http://localhost:20000/A/a?name=xiaoming
Agray[10.0.0.41][config=base] -> B[10.0.0.55] -> Cgray[10.0.0.30]

# 普通請求(Feign)
http://localhost:20000/A/aByFeign
A[10.0.0.47][config=base] -> B[10.0.0.55]

# 普通請求(a先後請求b和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請求
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灰階請求
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

# 限流測試用請求
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

# 資料庫請求
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 請求
http://localhost:20000/spring_boot

更多說明

應用接入

目前使用的方式是為每個需要接入的應用都顯式地在Deployment的Label中配置了msePilotAutoEnable: "on"進行接入。實際使用中,您可以通過MSE的營運中心給K8s叢集的命名空間開啟微服務治理,進行批量接入。

更多內容,請參見ACK和ACS微服務應用接入MSE治理中心(Java版)

無損上下線

說明

如果剛開始部署的時候沒有開啟無損上下線,但是後續的過程中想觀察,可以通過如下方式開啟。

  1. 如果您需要使用詳細的無損上下線功能,可以登入Container Service控制台的叢集資訊頁面,選擇左側導覽列的營運管理 > 組件管理,在搜尋方塊中搜尋cronhpa然後單擊安裝

  2. 使用如下YAML建立定時伸縮任務,其中Namespace欄位要和安裝Helm時選擇的K8s Namespace一致。

apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: CronHorizontalPodAutoscaler
metadata:
  labels:
    controller-tools.k8s.io: "1.0"
  name: cronhpa-deployment-spring-cloud-b
  namespace: mse-demo # 注意 namespace 欄位要和 helm install 時選擇的 k8s namespace 一致
spec:
  jobs:
  - name: 擴容
    schedule: 0 0/6 * * * *
    targetSize: 6
  - name: 縮容
    schedule: 0 5/6 * * * *
    targetSize: 2
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: spring-cloud-b

網關自動請求配置

預設開啟各種請求的自動發送,可以登入Container Service控制台的叢集資訊頁面,單擊導覽列工作負載 > 無狀態,進入無狀態頁面之後單擊spring-cloud-gateway應用。進入詳情頁之後,單擊頁面右上方編輯,可以配置如下環境變數來做到各種請求的自動發起配置。

環境變數key

含義

預設值

enable.auto

自動流量總開關

true

enable.rpc.invoke

Dubbo請求開關

true

enable.sql

資料庫請求開關

true

enable.sentinel.demo.flow

sentinel規則相關請求開關,其中

  • flow請求可測試限流規則

  • isolate會有一定並發量,可測試隔離規則

  • params攜帶參數hot,可測試熱點規則

true

enable.gray

打標方式灰階請求開關

false

demo.qps

請求速率qps(控制/a的請求速率,其他請求相對速率)

20

image.png