這篇文章帶給大家的內容是關於Nacos配置多環境管理的方法總結(詳細步驟),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
多重環境管理
在Nacos中,本身有多個不同管理層級的概念,包括:Data ID、Group、Namespace。只要利用這些層級概念的關係,就可以依照自己的需求來實現多環境的管理。
下面,我就來介紹一下,可以使用的幾種實作方式:
使用Data ID與profiles實作
Data ID在Nacos中,我們可以理解為就是一個Spring Cloud應用的設定檔名。透過上一篇《Spring Cloud Alibaba基礎教學:Nacos配置的載入規則詳解》,我們知道預設情況下Data ID的名稱格式是這樣的:${spring.application.name}.properties,即:以Spring Cloud應用命名的properties檔。
實際上,Data ID的規則中,也包含了環境邏輯,這點與Spring Cloud Config的設計類似。我們在應用程式啟動時,可以透過spring.profiles.active來指定具體的環境名稱,此時客戶端就會把要取得配置的Data ID組織為:${spring.application.name}-${spring.profiles .active}.properties。
實際上,更原始且最通用的匹配規則,是這樣的:${spring.cloud.nacos.config.prefix}-${spring.profile.active}.${spring.cloud. nacos.config.file-extension}。而上面的結果是因為${spring.cloud.nacos.config.prefix}和${spring.cloud.nacos.config.file-extension}都使用了預設值。
動手試試
我們可以用《Spring Cloud Alibaba基礎教學:使用Nacos作為配置中心》一文中的列子(可在文末倉庫中取得)為基礎,體驗一下這種區分環境的配置方式。
第一步:先在Nacos中,依照這個規則,建立兩個不同環境的設定內容。例如:
如上圖,我們為alibaba-nacos-config-client應用,定義了DEV和TEST的兩個獨立的環境配置。我們可以在裡面定義不同的內容值,以便後續驗證是否真實載入到了正確的配置。
第二步:在alibaba-nacos-config-client應用的設定檔中,增加環境設定:spring.profiles.active=DEV
##第三步:啟動應用,我們可以看到日誌中列印了,載入的設定檔:2019-01-30 15:25:18.216 INFO 96958 --- [ main] o.s.c.a.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: 'alibaba-nacos-config-client-DEV.properties', group: 'DEFAULT_GROUP'
2019-01-30 15:55:23.718 INFO 3216 --- [main] o.s.c.a.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: 'alibaba-nacos-config-client.properties', group: 'DEV_GROUP'
第三步:在alibaba-nacos-config-client應用的設定檔中,增加Namespace的指定配置,例如:spring.cloud.nacos.config.namespace=83eed625-d166-4619-b923-93df2088883a。
這裡要注意namespace的設定不是使用名稱,而是使用Namespace的ID。
第四步:啟動應用,透過存取localhost:8001/test接口,驗證一下返回內容是否正確。在這種方式下,目前版本的日誌並不會輸出與Namespace相關的訊息,所以還無法以此作為載入內容的判斷依據。
深入思考
上面我們分別利用Nacos配置管理功能中的幾個不同緯度來實現多環境的配置管理。從結果上而言,不論用哪一種方式,都能夠勝任需求,但是哪一種最好呢?
第一種:透過Data ID與profile實作。
優點:這種方式與Spring Cloud Config的實作非常像,用過Spring Cloud Config的用戶,可以毫無違和感的過渡過來,由於命名規則類似,所以要從Spring Cloud Config中做遷移也非常簡單。
缺點:這種方式在專案與環境多的時候,配置內容就會顯得非常混亂。配置清單中會看到各種不同應用,不同環境的配置交織在一起,非常不利於管理。
建議:專案不多時使用,或者可以結合Group對專案根據業務或組織架構做一些拆分規劃。
第二種:透過Group實現。
優點:透過Group依環境講各個應用程式的設定隔離開。可以非常方便的利用Data ID和Group的搜尋功能,分別從應用緯度和環境緯度來查看配置。
缺點:由於會佔用Group緯度,所以需要對Group的使用做好規劃,畢竟與業務上的一些配置分組起衝突等問題。
建議:這種方式雖然結構上比上一種更好一些,但是依然可能會有一些混亂,主要是在Group的管理上要做好規劃和控制。
第三種:透過Namespace實作。
優點:官方建議的方式,透過Namespace來區分不同的環境,釋放了Group的自由度,這樣可以讓Group的使用專注於做業務層面的分組管理。同時,Nacos控制頁面上對於Namespace也做了分組展示,不需要搜索,就可以隔離開不同的環境配置,非常容易使用。
缺點:沒有啥缺點,可能就是多引入一個概念,需要使用者去理解吧。
建議:直接用這種方式長遠上來說會比較省心。雖然可能對小團隊而言,專案不多,第一第二方式也夠了,但萬一後面做大了呢?
注意:不論用哪一種方式實現。對於指定環境的設定(spring.profiles.active=DEV、spring.cloud.nacos.config.group=DEV_GROUP、spring.cloud.nacos.config.namespace=83eed625-d166-4619-b923-93df2088883a),都不要設定在應用的bootstrap.properties中。而是在發布腳本的啟動指令中,用-Dspring.profiles.active=DEV的方式來動態指定,會更有彈性!
以上是Nacos配置多環境管理的方法摘要(詳細步驟)的詳細內容。更多資訊請關注PHP中文網其他相關文章!