【專題回顧】
【Nacos專題】Nacos 快速入門
【Nacos專題】Nacos 集群搭建
一帅戒、Nacos 配置中心簡(jiǎn)介
Nacos 既可以作為注冊(cè)中線蜘澜,提供服務(wù)注冊(cè)與發(fā)現(xiàn)响疚;又是配置中心,提供配置的動(dòng)態(tài)管理忿晕。Nacos 既能支持properties
類型的配置践盼,也能支持ymal
類型的配置。
為了滿足多租戶咕幻、多環(huán)境、多服務(wù)
配置隔離的需求锣吼,Nacos 提供了Data Id
蓝厌、Group
以及 Namespace
不同管理級(jí)別的概念,利用 Nacos 定義的層級(jí)關(guān)系读恃,用戶可以非常方便的管理多環(huán)境的配置。
Tips:Nacos 客戶端在啟動(dòng)的時(shí)候寺惫,首先需要從配置中心拉取配置肌蜻。在SpringBoot中,配置文件的加載順序
bootstrap
優(yōu)先級(jí)要高于application
蒋搜,因此,Nacos Config 相關(guān)的配置需要在bootstrap.properties
或者bootstrap.yaml
進(jìn)行配置育谬。
二帮哈、Data Id
Data Id
的完成格式如下:
${prefix}-${spring.profile.active}.${file-extension:properties}
完整的 Data Id
由 3 部分構(gòu)成,具體格式說(shuō)明如下:
- prefix:構(gòu)成
Data Id
的前綴咖刃,prefix
需要與項(xiàng)目中spring.cloud.nacos.config.prefix
配置項(xiàng)的值匹配憾筏。如果沒(méi)有配置spring.cloud.nacos.config.prefix
,則需要與項(xiàng)目中spring.application.name
配置項(xiàng)的值匹配枫浙。值得注意的是古拴,spring.cloud.nacos.config.prefix
必須在bootstrap.properties
文件中。 - spring.profile.active:構(gòu)成
Data Id
的中間部分紧帕,需要與項(xiàng)目中激活的profile
相對(duì)應(yīng) (即與spring.profile.active
的值匹配)桅打。如果項(xiàng)目中沒(méi)有配置spring.profile.active
,則 SpringBoot 會(huì)加載主配置文件,此時(shí)刻帚,在Data Id
中${spring.profile.active}
缺省,且與${prefix}
之間的連接符-
也不需要掂僵。 - file-extension:構(gòu)成
Data Id
的后綴,用來(lái)指定配置文件的格式幔睬,Nacos 默認(rèn)采用properties
類型的配置芹扭,此時(shí),Data Id
中的后綴是可以缺省的辅肾。如果想要采用yaml
類型的配置轮锥,Data Id
必須以.yaml
為后綴,同時(shí)需要將項(xiàng)目中spring.cloud.nacos.config.file-extension
配置項(xiàng)的值指定為yaml
舍杜。
示例:
如果Data Id
的值為nacos-config-dev.properties
既绩,則在 bootstrap.properties 配置如下:
spring.cloud.nacos.config.prefix=nacos-config
spring.cloud.nacos.config.file-extension=yaml
spring.profile.active=dev
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
如下圖所示,用Data Id
來(lái)區(qū)分開(kāi)發(fā)旁钧、測(cè)試互拾、生產(chǎn)環(huán)境配置:
三、Group
在分布式系統(tǒng)中寄猩,我們經(jīng)常會(huì)根據(jù)業(yè)務(wù)來(lái)對(duì)系統(tǒng)進(jìn)行水平拆分骑疆,業(yè)務(wù)獨(dú)立的模塊單獨(dú)構(gòu)成一個(gè)系統(tǒng),從而實(shí)現(xiàn)業(yè)務(wù)解耦泊柬。Nacos 的 Group
能夠很好的應(yīng)對(duì)分布式系統(tǒng)的配置管理诈火。Group
是 Data Id
的集合,按照業(yè)務(wù)系統(tǒng)來(lái)定義Group
刀崖,然后再在每個(gè)Group
下按照 dev
、test
亮钦、prod
來(lái)區(qū)分環(huán)境,這樣整個(gè)系統(tǒng)配置就非常的清晰明了蜡娶。
在 Nacos 服務(wù)端定義完分組后巡语,還需要在項(xiàng)目中通過(guò)spring.cloud.nacos.config.group
配置來(lái)指定分組, 這樣在項(xiàng)目啟動(dòng)的時(shí)候荤堪,就能拉取指定分組下的配置枢赔。
# 指定 group
spring.cloud.nacos.config.group=ORDER_SYSTEM
如下圖所示,為訂單系統(tǒng)創(chuàng)建分組:
四碎赢、Namespace
Namespace
是用于在多租戶之間進(jìn)行配置隔離速梗,不同的命名空間下,可以存在相同的Group
和 Data Id
枕赵,再配合 Nacos 的權(quán)限管理功能位隶,針對(duì)用戶角色(多組合),進(jìn)行Namespace
級(jí)別的讀寫權(quán)限控制篮昧。
Nacos 默認(rèn)命名空間為public
笋妥,當(dāng)在新建一個(gè)Namespace
時(shí),Nacos會(huì)生成一個(gè)唯一標(biāo)識(shí)UUID疚颊,在項(xiàng)目中通過(guò)spring.cloud.nacos.config.namespace
來(lái)指定命名空間。
# 指定 namespace
spring.cloud.nacos.config.namespace=83eed625-d166-4619-b923-93df2088883a