Nacos配置中心的配置文件的匹配規(guī)則及說明
Nacos配置中心配置文件的匹配
詳情見nacos的官方文檔
1.配置微服務配置中心文件
在 Nacos Spring Cloud 中,數(shù)據(jù)集(Data Id) 的配置完整格式如下:
${prefix}-${spring.profile.active}.${file-extension}
prefix
:就是配置的服務名,默認是你配置的,通俗的說就是服務注冊時注冊到服務中心的服務名的值:
spring: application: name: shop-coupon #服務名
spring.profile.active
:是配置開發(fā)環(huán)境的值,一個程序不可能總是在開發(fā)環(huán)境,可能需要切換到測試環(huán)境,上線環(huán)境,他們的配置文件都是不同的,所以為了方便環(huán)境切換,我們配置不同的開發(fā)環(huán)境文檔。
比如在application.yml中有配置dev,就是開發(fā)環(huán)境:
spring: profiles: active: dev #表示開發(fā)環(huán)境
最后我們需要指定配置文件類型,默認是properties。
我們可以自己指定文件類型,比如配置:
spring: cloud: nacos: config: file-extension: yaml #指定配置文件類型為yaml文件
指定好配置文件類型,我們最終在配置中心新增配置文件就是:shop-coupon-dev.yaml。
2.常用細節(jié)
1)、命名空間:配置隔離:
默認: public(保 留空間);默認新增的所有配置都在public空間。隔離開發(fā),測試,生產環(huán)境。
可以添加命名空間,然后在bootstrap.yml配置文件添加命名空間的id即可切換到對應的命名空間,使用對應空間下的配置文件:
cloud: nacos: config: namespace: a65a17de-e8f3-4d00-8d87-91549aaa0f02 #對應創(chuàng)建的命名空間的UUID
也可以基于微服務來創(chuàng)建命名空間,用每一個微服務名來命名,達到隔離每一個微服務的目的,哪一個微服務需要配置直接去對應的微服務空間下找配置即可,使得項目更加結構化。
2)、配置集:所有配置的集合。
3)、配置集ID:類似文件名。
Data ID:類似文件名
4)、配置分組:按時間等因素影響,可以去分組配置,比如雙11組,雙12組等等
- 默認所有的配置集都屬于: DEFAULT_ GROUP;我們也可以自己適配。
- 一般的建議是使用命名空間來隔離服務,即每個微服務創(chuàng)建一個命名空間,使用配置分組來區(qū)分環(huán)境:dev、test、prod等。
3.從一個配置中心加載多個配置集
將一個配置文件按功能拆分成不同的文件,然后在程序組合加載到一起組成一個完整的配置文件。
比如拆分一下配置:
server: port: 5001 spring: profiles: active: dev #表示開發(fā)環(huán)境 datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://139.224.67.81:3306/zunhui_sms?useUnicode=true&characterEncoding=utf-8&useSSL=false username: root password: root application: name: shop-coupon spring: application: name: shop-coupon cloud: nacos: config: server-addr: 127.0.0.1:8848 file-extension: yaml #指定配置文件類型為yaml文件 discovery: server-addr: 127.0.0.1:8848 mybatis-plus: mapper-locations: classpath/mapper/**/*.xml global-config: db-config: id-type: auto #配置id自增
就可以拆分成三個文件,一個關務數(shù)據(jù)源的datasource.yml的,一個關于mybatis的,剩下的一個other配置:
只需要在配置文件中使用ext-config就可以加載多個配置文件:
nacos作為配置中心的基本配置規(guī)則就是這些。
Nacos配置中心配置不成功問題
1.掃描包
首先在啟動類中尋找掃描包,有可能沒有把路徑填充成功
2.關于配置nacos
在配置中
spring: profiles: active: 要激活的環(huán)境信息 cloud: nacos: config: server-addr: 自己配置 file-extension: yaml或者yml namespace: 這里的命名空間需要看nacos具體配置 group: DEFAULT_GROUP一般都是默認組 application: name: 項目名稱
例如:
spring: profiles: test cloud: nacos: config: server-addr: 10.100.66.222:8084 namespace: 3bd056b5-8696-44dd-a87f-635057sdaax2 username: asdas password: sdadd file-extension: yml
上面是我司的實際代碼(以更改部分數(shù)據(jù))
具體的nacos內部配置
在這個過程中也遇到了一些問題
例如: 在添加配置后,選中的是yml配置,但是由于中間沒有加空格導致不生效,找了30多分鐘才發(fā)現(xiàn)這個問題
MAX_USE: 222
222前面是有空格的??!
3.為何沒有熱加載?
你可能會有疑惑,為什么nacos明明已經(jīng)修改好了變量的值,但卻在項目中發(fā)現(xiàn)原來的值并沒有修改完成呢?
其實可能只是忘記了一個注解
@RefreshScope
4.配置好為何還是沒有熱加載?
可能你也和我犯了同一個問題,那就是沒有將要修改的值交給spring統(tǒng)一進行管理,
也就是沒有加上類似@Controller,@Service,@Component等注解
如果已經(jīng)加上了的話,那么不要用new來創(chuàng)建對象,new出來的也不會實現(xiàn)熱加載,
只有==@Autowired==自動裝配的才可以保證同步nacos的配置
另外需要配置==@Component注解==而不是@Configuration注解,
@Componet 注解是原生的Bean
5.另一個坑
在nacos配置的過程中,想要對一個變量進行動態(tài)賦值,前面的步驟的坑都沒踩,但是還是不行
5.1 static
就是在要修改的值前面有static修飾,被修飾的話,是獨立與該類的,不與類的實例變量有依賴關系。
解決方法:
1. 將所有的static全部刪去
2. 可以使用lombok的Data注解
3. 之后使用到這個變量的地方都使用get變量名的方法
5.2 String和Integer
當我們從Nacos中獲取動態(tài)更新的值的時候,最好不用integer進行接收,不然可能會報錯
如圖的Integer就是無法接受nacos中的配置
感謝崔帥朋同學的提醒!讓為父了解了另一種情況
6.如何打開項目中的nacos
找到配置文檔的bootstrap.yml文件,在其中的nacos的addr后面加上/nacos放在瀏覽器中即可打開相應的nacos網(wǎng)站
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringMVC如何在生產環(huán)境禁用Swagger的方法
本篇文章主要介紹了SpringMVC如何在生產環(huán)境禁用Swagger的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02詳解SpringBoot使用RedisTemplate操作Redis的5種數(shù)據(jù)類型
本文主要介紹了SpringBoot使用RedisTemplate操作Redis的5種數(shù)據(jù)類型,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03Java SpringBoot詳解集成以及配置Swagger流程
Swagger 是一個規(guī)范和完整的框架,用于生成、描述、調用和可視化 RESTful 風格的 Web 服務。總體目標是使客戶端和文件系統(tǒng)作為服務器以同樣的速度來更新。文件的方法,參數(shù)和模型緊密集成到服務器端的代碼,允許API來始終保持同步2021-10-10Intellij IDEA 斷點不可用報錯 No executable 
這篇文章主要介紹了Intellij IDEA 斷點不可用報錯 No executable code found問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10SpringBoot 添加JSP 支持并附帶在IDEA下創(chuàng)建JSP文件【測試無誤】
這篇文章主要介紹了SpringBoot 添加JSP 支持并附帶在IDEA下創(chuàng)建JSP文件的相關知識,感興趣的朋友跟隨腳本之家小編一起學習吧2018-05-05