javascript
Spring Cloud Alibaba入门教程-05【Alibaba微服务组件Nacos配置中心】
1. Nacos配置中心使用
官方文檔: https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config
Nacos 提供用于存儲(chǔ)配置和其他元數(shù)據(jù)的 key/value 存儲(chǔ),為分布式系統(tǒng)中的外部化配置提供服務(wù)器端和客戶端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 應(yīng)用的外部屬性配置。
1.維護(hù)性 2.時(shí)效性 3.安全性
springcloud config 對(duì)比
三大優(yōu)勢(shì):
springcloud config大部分場(chǎng)景結(jié)合git 使用, 動(dòng)態(tài)變更還需要依賴(lài)Spring Cloud Bus 消息總線來(lái)通過(guò)所有的客戶端變化.
springcloud config不提供可視化界面
nacos config使用長(zhǎng)輪詢(xún)更新配置, 一旦配置有變動(dòng)后,通知Provider的過(guò)程非常的迅速, 從速度上秒殺springcloud原來(lái)的config幾條街,
1.1 快速開(kāi)始
準(zhǔn)備配置,nacos server中新建nacos-config.properties
最佳實(shí)踐:
Namespace:代表不同環(huán)境,如開(kāi)發(fā)、測(cè)試、生產(chǎn)環(huán)境。
Group:代表某項(xiàng)目,如XX醫(yī)療項(xiàng)目、XX電商項(xiàng)目
DataId:每個(gè)項(xiàng)目下往往有若干個(gè)工程(微服務(wù)),每個(gè)配置集(DataId)是一個(gè)工程(微服務(wù))的主配置文件
1.2 搭建nacos-config服務(wù)
通過(guò) Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 實(shí)現(xiàn)配置的動(dòng)態(tài)變更
1)引入依賴(lài)
1 <dependency> 2 <groupId>com.alibaba.cloud</groupId> 3 <artifactId>spring‐cloud‐starter‐alibaba‐nacos‐config</artifactId> 4 </dependency>2)添加bootstrap.properties
1 spring.application.name=nacos‐config 2 # 配置中心地址 3 spring.cloud.nacos.config.server‐addr=127.0.0.1:8848 45 # dataid 為 yaml 的文件擴(kuò)展名配置方式 6 # `${spring.application.name}.${file‐extension:properties}` 7 spring.cloud.nacos.config.file‐extension=yaml 8 #profile粒度的配置 `${spring.application.name}‐${profile}.${file‐extension:properties}` 9 spring.profiles.active=prod1.3 Config相關(guān)配置
Nacos 數(shù)據(jù)模型 Key 由三元組唯一確定, Namespace默認(rèn)是空串,公共命名空間(public),分組默認(rèn)是 DEFAULT_GROUP
支持配置的動(dòng)態(tài)更新
ps:除了默認(rèn)的配置文件, 其他dataId都要加上后綴
支持profile粒度的配置
spring-cloud-starter-alibaba-nacos-config 在加載配置的時(shí)候,不僅僅加載了以 dataid 為 spring.application.name.{spring.application.name}.spring.application.name.{file-extension:properties} 為前綴的基礎(chǔ)配置,還加載了dataid為 spring.application.name?{spring.application.name}-spring.application.name?{profile}.${file-extension:properties} 的基礎(chǔ)配置。在日常開(kāi)發(fā)中如果遇到多套環(huán)境下的不同配置,可以通過(guò)Spring 提供的 ${spring.profiles.active} 這個(gè)配置項(xiàng)來(lái)配置。
1 spring.profiles.active=devprofile 的配置文件 大于 默認(rèn)配置的文件。 并且形成互補(bǔ)
ps:只有默認(rèn)的配置文件, 才會(huì)應(yīng)用profile
支持自定義 namespace 的配置
用于進(jìn)行租戶粒度的配置隔離。不同的命名空間下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用場(chǎng)景之一是不同環(huán)境的配置的區(qū)分隔離,例如開(kāi)發(fā)測(cè)試環(huán)境和生產(chǎn)環(huán)境的資源(如配置、服務(wù))隔離等。
在沒(méi)有明確指定 ${spring.cloud.nacos.config.namespace} 配置的情況下, 默認(rèn)使用的是 Nacos 上 Public 這個(gè) namespace。如果需要使用自定義的命名空間,可以通過(guò)以下配置來(lái)實(shí)現(xiàn):
1 spring.cloud.nacos.config.namespace=71bb9785‐231f‐4eca‐b4dc‐6be446e12ff8支持自定義 Group 的配置
Group是組織配置的維度之一。通過(guò)一個(gè)有意義的字符串(如 Buy 或 Trade )對(duì)配置集進(jìn)行分組,從而區(qū)分 Data ID 相同的配置集。當(dāng)您在 Nacos 上創(chuàng)建一個(gè)配置時(shí),如果未填寫(xiě)配置分組的名稱(chēng),則配置分組的名稱(chēng)默認(rèn)采用DEFAULT_GROUP 。配置分組的常見(jiàn)場(chǎng)景:不同的應(yīng)用或組件使用了相同的配置類(lèi)型,如 database_url 配置和MQ_topic 配置。
在沒(méi)有明確指定 ${spring.cloud.nacos.config.group} 配置的情況下,默認(rèn)是DEFAULT_GROUP 。如果需要自定義自己的Group,可以通過(guò)以下配置來(lái)實(shí)現(xiàn):
1 spring.cloud.nacos.config.group=DEVELOP_GROUP支持自定義擴(kuò)展的 Data Id 配置
Data ID 是組織劃分配置的維度之一。Data ID 通常用于組織劃分系統(tǒng)的配置集。一個(gè)系統(tǒng)或者應(yīng)用可以包含多個(gè)配置集,每個(gè)配置集都可以被一個(gè)有意義的名稱(chēng)標(biāo)識(shí)。Data ID 通常采用類(lèi) Java 包(如 com.taobao.tc.refund.log.level)的命名規(guī)則保證全局唯一性。此命名規(guī)則非強(qiáng)制。
通過(guò)自定義擴(kuò)展的 Data Id 配置,既可以解決多個(gè)應(yīng)用間配置共享的問(wèn)題,又可以支持一個(gè)應(yīng)用有多個(gè)配置文件。
1 # 自定義 Data Id 的配置 2 #不同工程的通用配置 支持共享的 DataId 3 spring.cloud.nacos.config.sharedConfigs[0].data‐id= common.yaml 4 spring.cloud.nacos.config.sharedConfigs[0].group=REFRESH_GROUP 5 spring.cloud.nacos.config.sharedConfigs[0].refresh=true 6 7 # config external configuration 8 # 支持一個(gè)應(yīng)用多個(gè) DataId 的配置 一定要加擴(kuò)展名 9 spring.cloud.nacos.config.extensionConfigs[0].data‐id=ext‐config‐common01.properties 10 spring.cloud.nacos.config.extensionConfigs[0].group=REFRESH_GROUP 11 spring.cloud.nacos.config.extensionConfigs[0].refresh=true 12 13 spring.cloud.nacos.config.extensionConfigs[1].data‐id=ext‐config‐common02.properties 14 spring.cloud.nacos.config.extensionConfigs[1].group=REFRESH_GROUP 15 spring.cloud.nacos.config.extensionConfigs[1].refresh=true1.4 配置的優(yōu)先級(jí)
Spring Cloud Alibaba Nacos Config 目前提供了三種配置能力從 Nacos 拉取相關(guān)的配置。
A: 通過(guò) spring.cloud.nacos.config.shared-configs 支持多個(gè)共享 Data Id 的配置
B: 通過(guò) spring.cloud.nacos.config.ext-config[n].data-id 的方式支持多個(gè)擴(kuò)展 Data Id 的配置
C: 通過(guò)內(nèi)部相關(guān)規(guī)則(應(yīng)用名、應(yīng)用名+ Profile )自動(dòng)生成相關(guān)的 Data Id 配置
當(dāng)三種方式共同使用時(shí),他們的一個(gè)優(yōu)先級(jí)關(guān)系是:A < B < C
優(yōu)先級(jí)從高到低:
nacosconfigproduct.yaml 精準(zhǔn)配置
nacosconfig.yaml 同工程不同環(huán)境的通用配置
extconfig: 不同工程 擴(kuò)展配置
shareddataids 不同工程通用配置
1.5 @RefreshScope
@Value注解可以獲取到配置中心的值,但是無(wú)法動(dòng)態(tài)感知修改后的值,需要利用@RefreshScope注解
1 @RestController 2 @RefreshScope 3 public class TestController { 4 5 @Value("${common.age}") 6 private String age; 7 8 @GetMapping("/common") 9 public String hello() { 10 return age; 11 } 12 13 }好了,今天就分享到這里了,文章相關(guān)資料+代碼及更多java學(xué)習(xí)資料,關(guān)注我,免費(fèi)領(lǐng)取
總結(jié)
以上是生活随笔為你收集整理的Spring Cloud Alibaba入门教程-05【Alibaba微服务组件Nacos配置中心】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 新媒体时代
- 下一篇: 计算机毕业设计及论文-原创(基于Spri