該技術類似Spring Cloud Config。
1 配置管理的意義
現實的痛點
- 不同環境,不同配置
- 配置屬性動態刷新
為解決痛點,常用方案是引入配置服務器,架構如下
- 引入依賴
- 寫配置(約定大于配置),要謹遵如下映射關系圖哦
- 創建新的bootstrap.yml配置文件
- 在NACOS操作面板配置
- 啟動內容中心
2 配置的動態刷新
修改配置后,應用可動態刷新配置,而無需重啟應用
- 添加 @RefreshScope 注解即可
回滾Bug
不要回滾到初始狀態! Nacos 至今未解決。
- https://github.com/alibaba/nacos/issues/186
- https://qithub.com/alibaba/nacos/issues/434
既然遲遲不修復,我們只能盡量避免使用歷史版本,而直接修改配置。
3 共享配置
3.1 相同應用內
所指定的 > 通用的
3.2 不同應用間
- 比如這段配置在用戶/內容中心都有,可以將其交給nacos管理共享配置
下面看NACOS配置共享的兩種方案:
shared-detaids
ext-config
優先級
shared-dataids < ext-config < 自動
4 引導上下文
4.1 用來連接配置服務器,讀取外部配置
bootstrap.yml就是引導上下文的配置文件。對于應用,就是來連接Nacos以讀取Nacos中的配置。
4.2 Application Context的父上下文
遠程配置(Nacos) & 本地配置優先級 默認情況下,遠程配置優先級較高哦
- 如下的配置文件必須放在遠程配置中才生效
5 數據持久化
5.1 作為服務發現組件
其數據都是存在本地路徑:
~/nacos/naming/public
5.2 作為配置服務器
數據分為如下兩部分
NACOS web ui中添加的配置數據:
$NACOS_ HOME/data/derby-data
- 如果想查看其具體內容,必須停止nacos,然后連接Derby這個Apache開發的內嵌數據庫,通過IDEA的數據源連接
- 配置屬性的快照 ~/nacos/config
6 Nacos配置管理最佳實踐
- 能放本地,不放遠程
- 盡量規避優先級
- 定規范,例如所有配置屬性都要加上注釋
- 配置管理人員盡量少(官方正在開發權限控制)