從Nacos配置中心獲取配置并實現多環(huán)境
微服務的配置很多是公用的雹熬,所以可以抽取公用的配置到nacos中。主要分幾步:在配置中心添加相關的配置文件姑尺、添加依賴灸眼、添加配置
Nacos配置支持運行時自動刷新應用中的配置,并且是全量的
配置過程
-
在配置中心添加配置
登錄nacos中心克懊。在public命名空間下添加common.yml忱辅。這里注意F咧!dataId必須是加上配置后綴的
比如:
person: name: alan
-
添加maven依賴
這里墙懂,我找了幾個網上的都是寫錯的橡卤,搞的我下不來依賴,一直不知道是什么回事损搬,所以要注意了
說明:
-
添加了maven依賴碧库,在不配置參數下,則默認加載namespace為public巧勤,group為DEFAULT_GROUP嵌灰、[applicationName].yml【具體根據配置的拓展名加載】、[applicationName]-[env].yml【具體根據配置的拓展名加載】颅悉。
比如:應用名為:serviceA沽瞭,環(huán)境:dev,則在引導啟動時加載:serviceA.yml剩瓶,serviceA-dev.yml驹溃。
nacos-config的配置必須寫在bootstrap.yml中,因為bootstrap.yml是引導啟動儒搭,在加載application.yml前加載了吠架。
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.1.0.RELEASE</version> </dependency>
-
-
在應用的bootstrap.yml中添加配置
spring: profiles: dev cloud: nacos: config: server-addr: 192.168.1.1:8848 file-extension: yaml shared-dataids: common.yml #這里支持多個配置使用,分割。比如:a.yml,b.yml refreshable-dataids: common.yml #自動刷新的配置搂鲫。這里支持多個配置使用,分割。比如:a.yml,b.yml
-
驗證磺平。
啟動應用魂仍,就會發(fā)現啟動日志把nacos加載的配置名稱:serviceA.yml,serviceA-dev.yml拣挪、common.yml都打印了日志擦酌,并且把配置內容都打印出來。
多環(huán)境方案
網上其他博主都說了很多并且很全面的方案菠劝,但是感覺不適合我赊舶。我主要想要實現下面的東西。
- 在nacos有一個所有微服務復用的配置
- 可以在一個文件里面指定多環(huán)境
網上說多環(huán)境可以使用namespace赶诊、groupId實現笼平,或者使用dataId后綴也是可以的。下面說下我的方案:
-
在bootstrap.yml添加多環(huán)境配置舔痪,多環(huán)境又bootstrap決定寓调,因為不同環(huán)境的nacos是不一樣的,所以在nacos指定多環(huán)境就沒有意義了
比如:
--- spring: profiles: dev cloud: nacos: config: server-addr: 192.168.8.127:8848 file-extension: yaml shared-dataids: common.yml refreshable-dataids: common.yml --- spring: profiles: test cloud: nacos: config: server-addr: 192.168.8.127:8848 file-extension: yaml shared-dataids: common.yml refreshable-dataids: common.yml --- spring: profiles: prod cloud: nacos: config: server-addr: 192.168.8.127:8848 file-extension: yaml shared-dataids: common.yml refreshable-dataids: common.yml
一些記錄
nacos自動刷新配置是全量刷新的锄码。但是一些鏈接信息是沒辦法刷新的(redis夺英、mysql)晌涕。
-
nacos不支持單文件多環(huán)境的配置,他會合并這些配置痛悯,并且讀取最后一個余黎。比如下面文件結構
--- spring: profiles: dev person: name: dev --- spring: profiles: test person: name: test --- spring: profiles: prod person: name: prod
拆分了多環(huán)境,但是在應用加載進來的時候载萌,貌似會合并驯耻,我也驗證了,確實會炒考,并且會使用最后一個配置可缚,也就是使用prod環(huán)境的配置。
如果spring-cloud-starter-alibaba-nacos-config依賴包一直沒辦法下載下來斋枢,請確認一下pom依賴是否寫對了帘靡。再不行就到maven倉庫找,比如阿里云的倉庫:https://maven.aliyun.com/mvn/search瓤帚,在這里你可以搜索包確認是否存在描姚,順便校驗包名又沒寫錯