搜尋
首頁Javajava教程Nacos配置多環境管理的方法摘要(詳細步驟)

這篇文章帶給大家的內容是關於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中,依照這個規則,建立兩個不同環境的設定內容。例如:

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'

使用Group實作

Group在Nacos中是用來對Data ID做集合管理的重要概念。所以,如果我們把一個環境的配置視為一個集合,那麼也就可以實現不同環境的組態管理。對於Group的用法並沒有固定的規定,所以我們在實際使用的時候,需要根據我們的具體需求,可以是架構運維上對多環境的管理,也可以是業務上對不同模組的參數管理。為了避免衝突,我們需要在架構設計之初,做好一定的規劃。這裡,我們先來談談如何用Group來實現多環境配置管理的具體實作方式。

動手試試看

第一步:先在Nacos中,透過區分Group來建立兩個不同環境的配置內容。例如:

Nacos配置多環境管理的方法摘要(詳細步驟)

如上圖,我們為alibaba-nacos-config-client應用,定義了DEV環境和TEST環境的兩個獨立的配置,這兩個匹配與上一個方法不同,它們的Data ID是完全相同的,只是GROUP不同。

第二步:在alibaba-nacos-config-client應用的設定檔中,增加Group的指定設定:spring.cloud.nacos.config.group=DEV_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'

使用Namespace實作

Namespace在本系列教學中,應該還是第一次出現。先來看看官方的概念說明:用來進行租戶粒度的配置隔離。不同的命名空間下,可以存在相同的Group或Data ID的配置。 Namespace的常用場景之一是不同環境的配置的區分隔離,例如:開發測試環境和生產環境的資源(如配置、服務)隔離等。

在官方的介紹中,就介紹了利用其可以作為環境的隔離使用,下面我們就來試試看吧!

動手試試看

第一步:先在Nacos中,依照環境名稱來建立多個Namespace。例如:

Nacos配置多環境管理的方法摘要(詳細步驟)

第二步:在設定清單的最上方,可以看到除了Public之外,多了幾個剛才建立的Namepsace。分別在DEV和TEST空間下為alibaba-nacos-config-client應用程式建立設定內容:

Nacos配置多環境管理的方法摘要(詳細步驟)

第三步:在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中文網其他相關文章!

陳述
本文轉載於:博客园。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。