Nacos配置管理最佳實踐

程式設計師自由之路發表於2022-01-08

Nacos一個最常用的功能就是配置中心,在具體使用時往往是多個團隊,甚至整個公司的研發團隊都使用同一個Nacos服務。那麼使用時如何保證配置在各個團隊之間的隔離,又能保證配置管理的便捷性?下面就來介紹一個我使用下來比較好的實踐方式。

namespace的劃分

namespace的劃分需要根據具體的開發團隊規模來。

對於一些比較小的公司,開發人員比較少,可能就分成幾個小團隊,每個團隊各自完成自己的開發任務。

對於這種情況,namespace的劃分比較簡單,就是給每個開發團隊各自分配自己的namespace,團隊之間的配置互相隔離。

比如說,現在A公司有4個開發團隊,分別叫做T1、T2、T3和T4。

image-20220107164540877

然後需要將Nacos配置成需要認證登入。

nacos.core.auth.enabled=true
nacos.core.auth.caching.enabled=true

給每個開發團隊建立一個登入使用者

image-20220107165551697

給每個使用者設定許可權,只能訪問自己團隊的名稱空間(下面的角色ROLE_T1,只能訪問T1這個namespace)

image-20220107165855820

image-20220107170219464

經過上面的一系列配置之後,每個團隊就只能訪問自己的namespace了,起到了配置隔離的目的。

上面針對的是比較小的開發團隊。那如果開發人員很多呢?比如說像一些大的公司會分成很多BU,每個BU下面會有自己的許多開發團隊。針對這種情況,可以對每個BU進一步進行namespace劃分,比如說將BU1下面的開發劃分成T1、T2、T3,然後對每個團隊的名稱空間管理和上面的管理方案一致。

image-20220107171830082

對於一些大的事業部,上面的這種劃分方式其實是很“粗獷”的方式,其實更建議每個事業部維護自己的的Nacos服務,這樣可以進行更加精細的劃分。

groupId、dataId的分配

上面講了namespace的劃分。從上面的劃分規則中,我們可以看出來其實我們是按照團隊的維度來劃分namespace的(官網上面介紹namespace的主要作用是用來劃分租戶的,但是這個租戶是什麼概念並沒有具體說明,那就可以是團隊、可以是BU、甚至是個人,我們這裡以團隊的維度來劃分)。

那就引出一個問題了:當我們新增配置檔案時,需要指定groupId和dataId。其中groupId從名字上看好像就是團隊ID。那是不是說,在同一個namespace下的配置檔案的groupid都設定成一個?我覺得這樣不是一個好的實踐方式。

我們團隊是這樣規劃的。groupid取專案的名字,dataId取模組和環境的組合名字。

舉個例子:現在BU1-T1團隊在同時開發兩個專案:Project1和Project2,每個專案都是分多個模組的微服務專案,Project1下面有2個模組m1和m2,Project2下面分三個模組m1、m2和m3。

那麼可以進行如下的配置:

image-20220107174039316

好了,上面就是我在Nacos配置管理上面的實踐。

相關文章