摘要: 在傳統架構中,若是配置信息有變動,一般是登錄服務器手動修改配置來使配置生效。在微服務架構中,應用數和節點數因爲微服務化數量激增,致使發佈次數增長,配置變動難度加大,一般是將應用配置抽象出來放置在外部的配置中內心,從而實現配置變動的自動化,但這類原生方案會存在依賴嚴重、發佈延時高的問題。spring
在傳統架構中,若是配置信息有變動,一般是登錄服務器手動修改配置來使配置生效。在微服務架構中,應用數和節點數因爲微服務化數量激增,致使發佈次數增長,配置變動難度加大,一般是將應用配置抽象出來放置在外部的配置中內心,從而實現配置變動的自動化,但這類原生方案會存在依賴嚴重、發佈延時高的問題。bootstrap
以Spring Cloud爲例,其提供了Spring Cloud Config組件來默認對配置進行管理。安全
關於Spring Cloud Config的工做原理,以下圖所示:服務器
和傳統人肉到生產服務器上一臺臺手動修改配置的思路不一樣,在Spring Cloud中,當用戶配置發生變化時,用戶能夠在Git中修改配置,再經過Spring Cloud Config Server動態下發配置,從而在各個機器上動態生效。其整個流程大概以下:架構
至此,配置修改完成。併發
Spring Cloud Config組件成功的以配置中心思路解決了靜態配置繁瑣的運維問題,可是Spring Cloud Config仍存在如下問題:app
阿里雲應用配置管理服務ACM,做爲Nacos的雲上實現,能夠將以上的配置管理問題進行優化,配置修改將變得異常簡單和高效,以下圖所示。框架
整個操做流程分爲兩步:運維
ACM全面兼容Spring框架接口,包括Spring Framework、Spring Boot和Spring Cloud,其爲 Spring Cloud編寫的應用配置管理,和Spring Cloud Config對比,因爲極簡的架構,帶來了衆多的好處:curl
Spring Cloud用戶能夠基於Spring Cloud Config提供的接口將Spring Cloud應用的配置管理無縫遷移到ACM上,大幅度提高基於Spring Cloud框架的微服務應用的配置管理敏捷性。此外,相比於Spring Cloud Config,ACM還擁有多項實用功能,例如,雲上配置安全合規,配置灰度發佈和回滾等。
使用Spring Cloud的用戶在阿里雲上若是要從Spring Cloud Config切換成ACM方案,在程序業務層代碼無需任何改動,原生@Value標籤直接有效。用戶僅僅須要改動Spring Cloud應用的兩個編譯配置文件便可。
一、修改配置文件
在 bootstrap.properties中添加ACM的鏈接地址和認證信息,示例以下。其中,endpoint、namesspace、accessKey和secretKey等參數在ACM控制檯上能夠直接獲取。
指定spring.application.name和spring.coud.nacos.config.file之後,將決定ACM控制檯上配置名,如上例中,配置名爲com.alibaba.nacos.example.properties。
二、在 pom 中添加相關的nacos starter依賴
以下圖所示。
以上兩處修改完成以後,從新打包編譯Spring Cloud程序,便可將配置管理轉爲ACM託管。
以Spring Cloud代碼示例爲例,/echo 接口將返回動態配置參數 configValue 的值。
將如下代碼片斷示例打包運行,並在對應ACM控制檯上添加配置,設置對應配置名DataID (本例中爲com.alibaba.nacos.example.properties),並點擊發布。
最後在本地運行curl命令,假設http監控端口爲8080:
則將返回:
返回true值後,即配置成功。詳細的程序實例,可參照[ACM官方文檔]()。