SpringCloud將Nacos作為配置中心實現(xiàn)流程詳解
1、引入依賴
<dependencies>
<!--nacos-config-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--nacos-discovery-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--web + actuator-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>YML的類別
Nacos同springcloud-config一樣,在項目初始化時,要保證先從配置中心進(jìn)行配置拉取,拉取配置之后,才能保證項目的正常啟動。springboot中配置文件的加載是存在優(yōu)先級順序的,bootstrap優(yōu)先級高于application
注意點 在Cloud高版本中(例如:2021.0.3),你可能還需要引入以下依賴
<!-- bootstrap 啟動器:解決Cloud高版本下不先加載bootstrap.properties問題
see github issue:https://github.com/alibaba/spring-cloud-alibaba/issues/1994
-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
2、配置Bootstrap.yml
# nacos配置
server:
port: 3377spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服務(wù)注冊中心地址
config:
server-addr: localhost:8848 #Nacos作為配置中心地址
file-extension: yaml #指定yaml格式的配置
group: TEST_GROUP
namespace: ea7be215-37d0-4175-958c-a8af3545f115
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
共享配置 & 多配置文件
spring:
application:
name: nacos-config-multi
main:
allow-bean-definition-overriding: true
cloud:
nacos:
username: ${nacos.username}
password: ${nacos.password}
config:
server-addr: ${nacos.server-addr}
namespace: ${nacos.namespace}
# 用于共享的配置文件
shared-configs:
- data-id: common-mysql.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP- data-id: common-redis.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP- data-id: common-base.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP# 常規(guī)配置文件
# 優(yōu)先級大于 shared-configs,在 shared-configs 之后加載
extension-configs:
- data-id: nacos-config-advanced.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP
refresh: true- data-id: nacos-config-base.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP
refresh: true
3、配置application.yml
spring:
profiles:
active: dev # 表示開發(fā)環(huán)境
4、Controller測試接口
/**
* 配置客戶端控制器
*
* @author LiJunYi
* @RefreshScope 支持Nacos的動態(tài)刷新功能
*/
@RestController
@RefreshScope
public class ConfigClientController
{
@Value("${config.info}")
private String configInfo;
@GetMapping("/config/info")
public String getConfigInfo() {
return configInfo;
}
}在Nacos中添加配置信息
匹配規(guī)則-理論
之所以需要配置 spring.application.name ,是因為它是構(gòu)成 Nacos 配置管理 dataId 字段的一部分。
dataId的完整格式
${prefix}-${spring.profile.active}.${file-extension}
1、prefix 默認(rèn)為 spring.application.name 的值,也可以通過配置項spring.cloud.nacos.config.prefix來配置。
2、spring.profile.active即為當(dāng)前環(huán)境對應(yīng)的 profile。注意:當(dāng)spring.profile.active為空時,對應(yīng)的連接符 – 也將不存在datald的拼接格式變成${prefix}.${file-extension}
3、file-exetension 為配置內(nèi)容的數(shù)據(jù)格式, 可以通過配置項spring.cloud .nacos.config.file-extension來配置。 目前只支持properties和yaml類型。
最后公式:

配置新增

Namespace+Group+DatalD講解
三者關(guān)系
類似Java里面的 package名和類名, 最外層的 namespace 是可以用于區(qū)分部署環(huán)境的,Group 和 DataID 邏輯上區(qū)分兩個目標(biāo)對象。
三者情況

默認(rèn)情況:
Namespace = public,Group = DEFAULT_GROUP,默認(rèn)Cluster 是 DEFAULT
Nacos 默認(rèn)的命名空間是 public ,Namespace 主要用來實現(xiàn)隔離。
比方說我們現(xiàn)在有三個環(huán)境:開發(fā)、測試、生產(chǎn)環(huán)境,我們就可以創(chuàng)建三個Namespace ,不同的Namespace之間是隔離的。
Group 默認(rèn)是 DEFAULT_GROUP,Group 可以把不同的微服務(wù)劃分到同一個分組里面去
Sevice 就是微服務(wù);一個Service可以包含多個Cluster(集群),Nacos默認(rèn)Cluster是DEFAULT, Cluster是對指定微服務(wù)的一個虛擬劃分。
比方說為了容災(zāi),將Service微服務(wù)分別部署在了杭州機房和廣州機房,這時就可以給杭州機房的 Service微服務(wù)起一個集群名稱(Hz),給廣州機房的Service微服務(wù)起一個集群名稱(GZ), 還可以盡量讓同一個機房的微服務(wù)互相調(diào)用,以提升性能。
最后是Instance,就是微服務(wù)的實例。
實例-三種方案加載配置
1、dataId方案
指定spring.profile.active和配置文件的DatalD來使不同環(huán)境下讀取不同的配置
默認(rèn)空間+默認(rèn)分組+新建dev和test兩個Datald
通過spring.profile.active屬性就能進(jìn)行多環(huán)境下配置文件的讀取
新建兩個不同的配置

YML

2、Group方案
Nacos配置詳情

YML

3、Namespace方案
Nacos新增命名空間


bootstrao.yml
# nacos配置
server:
port: 3377spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服務(wù)注冊中心地址
config:
server-addr: localhost:8848 #Nacos作為配置中心地址
file-extension: yaml #指定yaml格式的配置
group: TEST_GROUP
namespace: ea7be215-37d0-4175-958c-a8af3545f115
Nacos作為配置中心的內(nèi)容主要就是這些,更多詳細(xì)知識點可以查閱官方文檔哦。
到此這篇關(guān)于SpringCloud將Nacos作為配置中心實現(xiàn)流程詳解的文章就介紹到這了,更多相關(guān)SpringCloud Nacos內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringMVC @RequestBody 為null問題的排查及解決
這篇文章主要介紹了SpringMVC @RequestBody 為null問題的排查及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
springboot項目如何設(shè)置session的過期時間
這篇文章主要介紹了springboot項目如何設(shè)置session的過期時間,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01
Spring MVC請求參數(shù)接收的全面總結(jié)教程
這篇文章主要給大家總結(jié)介紹了關(guān)于Spring MVC請求參數(shù)接收的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08
詳解Spring DeferredResult異步操作使用場景
本文主要介紹了Spring DeferredResult異步操作使用場景,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10
SpringBoot跨域Access-Control-Allow-Origin實現(xiàn)解析
這篇文章主要介紹了SpringBoot跨域Access-Control-Allow-Origin實現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12

