摘要:第二步在應(yīng)用的配置文件中,增加環(huán)境配置第三步啟動(dòng)應(yīng)用,我們可以看到日志中打印了,加載的配置文件使用實(shí)現(xiàn)在中是用來(lái)對(duì)做集合管理的重要概念。深入思考上面我們分別利用配置管理功能中的幾個(gè)不同緯度來(lái)實(shí)現(xiàn)多環(huán)境的配置管理。
前情回顧:
《Spring Cloud Alibaba基礎(chǔ)教程:使用Nacos實(shí)現(xiàn)服務(wù)注冊(cè)與發(fā)現(xiàn)》
《Spring Cloud Alibaba基礎(chǔ)教程:支持的幾種服務(wù)消費(fèi)方式》
《Spring Cloud Alibaba基礎(chǔ)教程:使用Nacos作為配置中心》
《Spring Cloud Alibaba基礎(chǔ)教程:Nacos配置的加載規(guī)則詳解》
通過(guò)之前兩篇對(duì)Nacos配置管理功能的介紹,已經(jīng)學(xué)會(huì)了在Nacos中如何加入配置以及Spring Cloud應(yīng)用如何通過(guò)配置來(lái)加載到對(duì)應(yīng)的內(nèi)容。接下來(lái),我們討論一個(gè)在使用配置中心時(shí),都需要關(guān)注的一個(gè)問(wèn)題:多環(huán)境的配置如何實(shí)現(xiàn)與管理?
多環(huán)境管理在Nacos中,本身有多個(gè)不同管理級(jí)別的概念,包括:Data ID、Group、Namespace。只要利用好這些層級(jí)概念的關(guān)系,就可以根據(jù)自己的需要來(lái)實(shí)現(xiàn)多環(huán)境的管理。
下面,我就來(lái)介紹一下,可以使用的幾種實(shí)現(xiàn)方式:
使用Data ID與profiles實(shí)現(xiàn)Data ID在Nacos中,我們可以理解為就是一個(gè)Spring Cloud應(yīng)用的配置文件名。通過(guò)上一篇《Spring Cloud Alibaba基礎(chǔ)教程:Nacos配置的加載規(guī)則詳解》,我們知道默認(rèn)情況下Data ID的名稱格式是這樣的:${spring.application.name}.properties,即:以Spring Cloud應(yīng)用命名的properties文件。
實(shí)際上,Data ID的規(guī)則中,還包含了環(huán)境邏輯,這一點(diǎn)與Spring Cloud Config的設(shè)計(jì)類似。我們?cè)趹?yīng)用啟動(dòng)時(shí),可以通過(guò)spring.profiles.active來(lái)指定具體的環(huán)境名稱,此時(shí)客戶端就會(huì)把要獲取配置的Data ID組織為:${spring.application.name}-${spring.profiles.active}.properties。
實(shí)際上,更原始且最通用的匹配規(guī)則,是這樣的:${spring.cloud.nacos.config.prefix}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}。而上面的結(jié)果是因?yàn)?b>${spring.cloud.nacos.config.prefix}和${spring.cloud.nacos.config.file-extension}都使用了默認(rèn)值。
動(dòng)手試一試
我們可以用《Spring Cloud Alibaba基礎(chǔ)教程:使用Nacos作為配置中心》一文中的列子(可在文末倉(cāng)庫(kù)中獲取)為基礎(chǔ),體驗(yàn)一下這種區(qū)分環(huán)境的配置方式。
第一步:先在Nacos中,根據(jù)這個(gè)規(guī)則,創(chuàng)建兩個(gè)不同環(huán)境的配置內(nèi)容。比如:
如上圖,我們?yōu)?b>alibaba-nacos-config-client應(yīng)用,定義了DEV和TEST的兩個(gè)獨(dú)立的環(huán)境配置。我們可以在里面定義不同的內(nèi)容值,以便后續(xù)驗(yàn)證是否真實(shí)加載到了正確的配置。
第二步:在alibaba-nacos-config-client應(yīng)用的配置文件中,增加環(huán)境配置:spring.profiles.active=DEV
第三步:?jiǎn)?dòng)應(yīng)用,我們可以看到日志中打印了,加載的配置文件:
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實(shí)現(xiàn)
Group在Nacos中是用來(lái)對(duì)Data ID做集合管理的重要概念。所以,如果我們把一個(gè)環(huán)境的配置視為一個(gè)集合,那么也就可以實(shí)現(xiàn)不同環(huán)境的配置管理。對(duì)于Group的用法并沒(méi)有固定的規(guī)定,所以我們?cè)趯?shí)際使用的時(shí)候,需要根據(jù)我們的具體需求,可以是架構(gòu)運(yùn)維上對(duì)多環(huán)境的管理,也可以是業(yè)務(wù)上對(duì)不同模塊的參數(shù)管理。為了避免沖突,我們需要在架構(gòu)設(shè)計(jì)之初,做好一定的規(guī)劃。這里,我們先來(lái)說(shuō)說(shuō)如何用Group來(lái)實(shí)現(xiàn)多環(huán)境配置管理的具體實(shí)現(xiàn)方式。
動(dòng)手試一試
第一步:先在Nacos中,通過(guò)區(qū)分Group來(lái)創(chuàng)建兩個(gè)不同環(huán)境的配置內(nèi)容。比如:
如上圖,我們?yōu)?b>alibaba-nacos-config-client應(yīng)用,定義了DEV環(huán)境和TEST環(huán)境的兩個(gè)獨(dú)立的配置,這兩個(gè)匹配與上一種方法不同,它們的Data ID是完全相同的,只是GROUP不同。
第二步:在alibaba-nacos-config-client應(yīng)用的配置文件中,增加Group的指定配置:spring.cloud.nacos.config.group=DEV_GROUP
第三步:?jiǎn)?dòng)應(yīng)用,我們可以看到日志中打印了,加載的配置文件:
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實(shí)現(xiàn)
Namespace在本系列教程中,應(yīng)該還是第一次出現(xiàn)。先來(lái)看看官方的概念說(shuō)明:用于進(jìn)行租戶粒度的配置隔離。不同的命名空間下,可以存在相同的Group或Data ID的配置。Namespace的常用場(chǎng)景之一是不同環(huán)境的配置的區(qū)分隔離,例如:開發(fā)測(cè)試環(huán)境和生產(chǎn)環(huán)境的資源(如配置、服務(wù))隔離等。
在官方的介紹中,就介紹了利用其可以作為環(huán)境的隔離使用,下面我們就來(lái)試一下吧!
動(dòng)手試一試
第一步:先在Nacos中,根據(jù)環(huán)境名稱來(lái)創(chuàng)建多個(gè)Namespace。比如:
第二步:在配置列表的最上方,可以看到除了Public之外,多了幾個(gè)剛才創(chuàng)建的Namepsace。分別在DEV和TEST空間下為alibaba-nacos-config-client應(yīng)用創(chuàng)建配置內(nèi)容:
第三步:在alibaba-nacos-config-client應(yīng)用的配置文件中,增加Namespace的指定配置,比如:spring.cloud.nacos.config.namespace=83eed625-d166-4619-b923-93df2088883a。
這里需要注意namespace的配置不是使用名稱,而是使用Namespace的ID。
第四步:?jiǎn)?dòng)應(yīng)用,通過(guò)訪問(wèn)localhost:8001/test接口,驗(yàn)證一下返回內(nèi)容是否正確。這種方式下,目前版本的日志并不會(huì)輸出與Namespace相關(guān)的信息,所以還無(wú)法以此作為加載內(nèi)容的判斷依據(jù)。
深入思考上面我們分別利用Nacos配置管理功能中的幾個(gè)不同緯度來(lái)實(shí)現(xiàn)多環(huán)境的配置管理。從結(jié)果上而言,不論用哪一種方式,都能夠勝任需求,但是哪一種最好呢?
第一種:通過(guò)Data ID與profile實(shí)現(xiàn)。
優(yōu)點(diǎn):這種方式與Spring Cloud Config的實(shí)現(xiàn)非常像,用過(guò)Spring Cloud Config的用戶,可以毫無(wú)違和感的過(guò)渡過(guò)來(lái),由于命名規(guī)則類似,所以要從Spring Cloud Config中做遷移也非常簡(jiǎn)單。
缺點(diǎn):這種方式在項(xiàng)目與環(huán)境多的時(shí)候,配置內(nèi)容就會(huì)顯得非常混亂。配置列表中會(huì)看到各種不同應(yīng)用,不同環(huán)境的配置交織在一起,非常不利于管理。
建議:項(xiàng)目不多時(shí)使用,或者可以結(jié)合Group對(duì)項(xiàng)目根據(jù)業(yè)務(wù)或者組織架構(gòu)做一些拆分規(guī)劃。
第二種:通過(guò)Group實(shí)現(xiàn)。
優(yōu)點(diǎn):通過(guò)Group按環(huán)境講各個(gè)應(yīng)用的配置隔離開。可以非常方便的利用Data ID和Group的搜索功能,分別從應(yīng)用緯度和環(huán)境緯度來(lái)查看配置。
缺點(diǎn):由于會(huì)占用Group緯度,所以需要對(duì)Group的使用做好規(guī)劃,畢竟與業(yè)務(wù)上的一些配置分組起沖突等問(wèn)題。
建議:這種方式雖然結(jié)構(gòu)上比上一種更好一些,但是依然可能會(huì)有一些混亂,主要是在Group的管理上要做好規(guī)劃和控制。
第三種:通過(guò)Namespace實(shí)現(xiàn)。
優(yōu)點(diǎn):官方建議的方式,通過(guò)Namespace來(lái)區(qū)分不同的環(huán)境,釋放了Group的自由度,這樣可以讓Group的使用專注于做業(yè)務(wù)層面的分組管理。同時(shí),Nacos控制頁(yè)面上對(duì)于Namespace也做了分組展示,不需要搜索,就可以隔離開不同的環(huán)境配置,非常易用。
缺點(diǎn):沒(méi)有啥缺點(diǎn),可能就是多引入一個(gè)概念,需要用戶去理解吧。
建議:直接用這種方式長(zhǎng)遠(yuǎn)上來(lái)說(shuō)會(huì)比較省心。雖然可能對(duì)小團(tuán)隊(duì)而言,項(xiàng)目不多,第一第二方式也夠了,但是萬(wàn)一后面做大了呢?
注意:不論用哪一種方式實(shí)現(xiàn)。對(duì)于指定環(huán)境的配置(spring.profiles.active=DEV、spring.cloud.nacos.config.group=DEV_GROUP、spring.cloud.nacos.config.namespace=83eed625-d166-4619-b923-93df2088883a),都不要配置在應(yīng)用的bootstrap.properties中。而是在發(fā)布腳本的啟動(dòng)命令中,用-Dspring.profiles.active=DEV的方式來(lái)動(dòng)態(tài)指定,會(huì)更加靈活!。參考資料
Nacos官方文檔
代碼示例本文示例讀者可以通過(guò)查看下面?zhèn)}庫(kù)的中的alibaba-nacos-config-client項(xiàng)目:
Github:https://github.com/dyc87112/SpringCloud-Learning/
Gitee:https://gitee.com/didispace/SpringCloud-Learning/
如果您對(duì)這些感興趣,歡迎star、follow、收藏、轉(zhuǎn)發(fā)給予支持!
以下專題教程也許您會(huì)有興趣Spring Boot基礎(chǔ)教程
Spring Cloud基礎(chǔ)教程
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/11977.html
摘要:之前開放過(guò)一臺(tái)公益給大家,以方便大家在閱讀我博客中教程時(shí)候做實(shí)驗(yàn)。由于目前在連載,所以對(duì)應(yīng)的也部署了一臺(tái),并且也開放出來(lái),給大家學(xué)習(xí)測(cè)試之用。 之前開放過(guò)一臺(tái)公益Eureka Server給大家,以方便大家在閱讀我博客中教程時(shí)候做實(shí)驗(yàn)。由于目前在連載Spring Cloud Alibaba,所以對(duì)應(yīng)的也部署了一臺(tái)Nacos,并且也開放出來(lái),給大家學(xué)習(xí)測(cè)試之用。 Nacos控制臺(tái) ...
摘要:下表整理了目前的版本與版本的兼容關(guān)系還未所以,不論您是在讀我的基礎(chǔ)教程基礎(chǔ)教程還是正在連載的系列教程。 這篇博文是臨時(shí)增加出來(lái)的內(nèi)容,主要是由于最近連載《Spring Cloud Alibaba基礎(chǔ)教程》系列的時(shí)候,碰到讀者咨詢的大量問(wèn)題中存在一個(gè)比較普遍的問(wèn)題:版本的選擇。其實(shí)這類問(wèn)題,在之前寫Spring Cloud基礎(chǔ)教程的時(shí)候,就已經(jīng)發(fā)過(guò)一篇《聊聊Spring Cloud版本的...
摘要:最近對(duì)基礎(chǔ)教程系列的催更比較多,說(shuō)一下最近的近況因?yàn)榇蛩阋黄鸶隆T俅危瑢?duì)于中國(guó)用戶來(lái)說(shuō),還有一個(gè)非常特殊的意義它將曾經(jīng)紅極一時(shí)的,以及阿里巴巴的強(qiáng)力消息中間件融入體系。 最近對(duì)《Spring Cloud Alibaba基礎(chǔ)教程》系列的催更比較多,說(shuō)一下最近的近況:因?yàn)榇蛩鉙pring Boot 2.x一起更新。所以一直在改博客Spring Boot專題頁(yè)和Git倉(cāng)庫(kù)的組織。由于前端技...
摘要:在搭建集群之前,我們需要先修改的數(shù)據(jù)持久化配置為存儲(chǔ)。所以,如果啟動(dòng)多個(gè)默認(rèn)配置下的節(jié)點(diǎn),數(shù)據(jù)存儲(chǔ)是存在一致性問(wèn)題的。為了解決這個(gè)問(wèn)題,采用了集中式存儲(chǔ)的方式來(lái)支持集群化部署,目前只要支持的存儲(chǔ)。 前情回顧: 《Spring Cloud Alibaba基礎(chǔ)教程:使用Nacos實(shí)現(xiàn)服務(wù)注冊(cè)與發(fā)現(xiàn)》 《Spring Cloud Alibaba基礎(chǔ)教程:支持的幾種服務(wù)消費(fèi)方式》 《Spri...
摘要:下面通過(guò)這篇,詳細(xì)介紹當(dāng)使用作為配置中心之后,如何實(shí)現(xiàn)中修改規(guī)則同步到。關(guān)于下面改造的原理和分析可以見上一篇中修改規(guī)則同步到的頭兩節(jié)內(nèi)容,這里不重復(fù)介紹了。但是由于考慮到與的結(jié)合使用,略作修改。主要就是中存儲(chǔ)配置的和不要弄錯(cuò)。 上一篇我們介紹了如何通過(guò)改造Sentinel Dashboard來(lái)實(shí)現(xiàn)修改規(guī)則之后自動(dòng)同步到Apollo。下面通過(guò)這篇,詳細(xì)介紹當(dāng)使用Nacos作為配置中心之后...
閱讀 3399·2021-11-24 10:30
閱讀 3269·2021-11-22 15:29
閱讀 3705·2021-10-28 09:32
閱讀 1253·2021-09-07 10:22
閱讀 3336·2019-08-30 15:55
閱讀 3619·2019-08-30 15:54
閱讀 3493·2019-08-30 15:54
閱讀 2832·2019-08-30 15:44