阿里雲賬號:基於阿里云云原生微服務架構的 Spring Cloud 項目部署教程

雲端 2026-05-28 阅读 16
2

市面上很多講微服務部署的教程,一上來就讓你在服務器上肉身搭建 Nginx、Nacos、sentinel、Zipkin…… 一套組合拳打完,服務器內存爆了不說,各種配置文件能把人折騰掉半條命。

在雲原生時代,還這麼玩就太低效了。 阿里雲已經把微服務底座(註冊中心、配置中心、網關、限流降級)全部做成了

雲原生託管服務

今天這篇教程不扯複雜的架構理論,不講廢話。 我們直接以一個標準的

Spring Cloud 微服務項目

為例,帶你用最接地氣的實戰方式,

基於阿里云云原生架構(MSE ACK/SAE),從零搞定微服務的部署與跑通

核心架構設計

在動手之前,先看一眼我們要實現的雲原生微服務部署拓撲:

【客戶端請求】

【阿里云云原生網關 (MSE)】 ──(自動發現服務)──> 【微服務註冊中心 (MSE Nacos)】

│ │

├───> 【微服務 A (輕量應用/SAE)】 <────────────────┤

│ │

└───> 【微服務 B (輕量應用/SAE)】 <────────────────┘

傳統的做法是自己在 ECS 上裝 Nacos 和 Gateway,而雲原生做法是直接使用阿里雲

MSE(微服務引擎)

SAE(Serverless 應用引擎)

。 這樣你不需要維護服務器底層,還能實現秒級彈性伸縮。

第一步:微服務代碼改造(適配雲原生)

要把本地運行的 Spring Cloud 項目搬上雲,首先要修改配置文件,讓它對接阿里雲的託管 Nacos。

1. 引入依賴

確保你的

Pom.xml

中引入了標準的 Spring Cloud Alibaba 依賴:

XML

<Dependency>

<GroupId>com.alibaba.cloud</groupId>

<ArtifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>

</Dependency>

<Dependency>

<GroupId>com.alibaba.cloud</groupId>

<ArtifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>

</Dependency>

2. 修改配置文件

在本地,我們通常把 Nacos 地址寫死成

Localhost:8848

。 但在雲原生部署中,我們

不要在代碼里寫死任何 IP 路徑

。 直接使用環境變量來動態注入:

YAML

# Bootstrap.yml 或 application.yml

Spring:

Application:

Name: order-service # 你的服務名

Cloud:

Nacos:

Discovery:

Server-addr: ${NACOS_SERVER_ADDR:localhost:8848} # 優先讀取環境變量

Namespace: ${NACOS_NAMESPACE:public}

設定:

Server-addr: ${NACOS_SERVER_ADDR:localhost:8848}

File-extension: yaml

💡為什麼要這樣寫? 通過 ${變量名:默認值} 的寫法,本地開發時如果不傳環境變量,依然走 localhost;而到了雲端,雲平台會自動幫我們注入真實的阿里雲集群地址,實現代碼「一套編譯,到處運行」。

第二步:在阿里雲開通並配置 MSE Nacos(1分鐘)

現在我們去阿里雲搞定微服務的「大腦」--注冊中心與配置中心。

登錄阿里雲控制台,搜索並進入 「微服務引擎 MSE」。

點擊 「實例管理」 $\rightarrow$ 「創建實例」,選擇 「Nacos」。

版本選擇:選最新的穩定版(如 Nacos 2.x)。 集群規格根據業務量選,個人測試或小項目選開發測試型(單節點)即可,生產環境必須選專業型(3節點高可用)。

創建完成後,進入該實例詳情頁。 你會看到兩個核心網絡地址:內網地址(類似 mse-xxxx-nacos-ctl.tbls.com:8848)公網地址(如果是公網調試需要開通,生產環境為了安全建議只用內網)

記錄下這個內網地址,它就是我們下一步要塞給微服務的變量。

第三步:使用 SAE 部署微服務組件(4分鐘)

微服務組件很多,如果用傳統的 K8s(ACK)去部署,你需要寫大量的 YAML 文件,還要懂 Pod、deployment 等概念。

這裡推薦使用更簡單的

SAE(無伺服器應用程式引擎)

,它免去了你維護 K8s 集群的痛苦,直接上傳 Jar 包或鏡像就能跑。

1. 打包項目

在本地項目根目錄下執行 Maven 命令,把微服務打包成標準的 Jar 包:

貝殼腳本

Mvn clean package -DskipTests

拿到打包好的

Order-service.jar

2. 在 SAE 中創建應用

進入阿里雲 「Serverless 應用引擎 SAE」 控制台。

點擊 「應用列表」 $\rightarrow$ 「創建應用」。

應用部署方式:選擇 「JAR包部署」(如果你熟悉 Docker,也可以選鏡像部署)。

運行時環境:選擇對應的 JDK 版本(如 Java 8 或 Java 11/17)。

上傳你剛剛打包好的 order-service.jar。

3. 注入環境變量(核心步驟)

在部署頁面的

「高級設置」

里,找到

「環境變量」

選項。 還記得我們在第一步代碼裡留出的空

位嗎? 在這裡把它補上:

鍵(Key)

值(Value)

NACOS_SERVER_ADDR

填入第二步中複製的 MSE Nacos 內網地址

NACOS_NAMESPACE

如果你在 Nacos 建了新命名空間就填 ID,沒有就填 public

4. 啟動應用

點擊確認創建並部署。 SAE 會自動在後台為你調度計算資源、拉起容器並運行 Jar 包。 等待 1~ 2 分鐘,看到狀態變為「運行中」,說明服務已經成功在雲端跑起來了。

你可以回過頭登錄

MSE Nacos 控制台

,在「服務管理」列表中刷新一下,就能看到

Order-service

已經成功註冊上來了!

第四步:配置雲原生網關實現外部訪問(2分鐘)

微服務在內網跑起來了,但外網用戶怎麼訪問? 我們需要一個統一的入口,即微服務網關。 阿里雲 MSE 提供了自帶的「雲原生網關」,完美替代了傳統的 Spring Cloud Gateway。

進入 MSE 控制台 $\rightarrow$ 雲原生網關 $\rightarrow$ 網關實例列表,點擊創建。

關聯你剛剛創建的 MSE Nacos 實例。

網關創建成功後,進入網關詳情頁,點擊左側的 「服務來源」 $\rightarrow$ 「添加服務來源」。 來源類型選擇 「MSE Nacos」,然後勾選你的 Nacos 實例。

點擊左側的 「路由配置」 $\rightarrow$ 「創建路由」:路由名稱:如 order-route。 匹配路徑:例如輸入 /order/。 目標服務:在下拉菜單裡直接選擇你在 Nacos 里注冊的 order-service。

點擊保存並發布。

此時,訪問雲原生網關提供的公網 IP 加路徑(如https://網關IP/order/create)

網關就會自動感知 Nacos 中的微服務節點,並把請求完美轉發過去。

實戰避坑與高級調優指南

白屏/無法註冊? 先查網絡安全組! MSE Nacos、SAE 應用必須處於同一個 VPC(虛擬私有雲)和同一個交換機下,它們之間才能通過內網互通。 如果你發現 SAE 里的微服務瘋狂報錯「連接 Nacos 超時」,立刻去檢查兩個產品的 VPC 屬性是否一致。

微服務優雅下線問題 微服務最怕發布新版本時導致正在訪問的用戶報錯。 阿里雲 SAE 自帶了優雅下線(無損下線)功能。 原

理:在微服務銷毀前,SAE 會主動向 MSE Nacos 發送註銷信號,讓網關不再把新流量轉過來,等舊請求處理完了再關閉容器。 怎麼用:在 SAE 應用的高級設置里,開啟「微服務無損下線」開關,完全不需要修改代碼。

內存溢出(OOM)報錯 很多新手把 JVM 內存和系統內存搞混。 如果在 SAE 裡購買了 1核 2G 規格的實例,不要在 JVM 參數里寫 -Xmx2g,因為系統本身運行也要吃內存。 黃金法則:JVM 的最大堆內存(-Xmx)應該設置為實例規格的 60% ~ 70% 左右。 例如 2G 規格的實例,JVM 參數建議配置為 -Xmx1300m。

恭喜你! 到這裡,一套高可用、可自動彈性伸縮的雲原生微服務體系就已經完全跑通了。 告別了繁瑣的中間件運維,你可以把全部精力都投入到業務代碼的編寫中了。

3
← 返回新闻中心