目錄
基本介紹?
概述
動(dòng)態(tài)配置服務(wù)
多配置格式編輯器?
微服務(wù)拉取配置流程
Data ID
@RefreshScope
配置共享的優(yōu)先級(jí)
實(shí)戰(zhàn)使用
簡(jiǎn)單的共享配置
開(kāi)發(fā)環(huán)境的共享配置
環(huán)境隔離-命名空間Namespace
業(yè)務(wù)隔離-Group分組
基本介紹?
概述
Nacos除了可以做注冊(cè)中心,同樣可以做配置管理來(lái)使用。
所謂配置中心:一般SpringBoot項(xiàng)目都使用在resources下創(chuàng)建類似
application.yml
之類的配置文件來(lái)管理整個(gè)項(xiàng)目的一些配置信息
當(dāng)微服務(wù)部署的實(shí)例越來(lái)越多,達(dá)到數(shù)十、數(shù)百時(shí),逐個(gè)修改微服務(wù)配置就會(huì)讓人抓狂,而且很容易出錯(cuò)。我們需要一種統(tǒng)一配置管理方案,可以集中管理所有實(shí)例的配置。
采用本地靜態(tài)配置,無(wú)法保證實(shí)時(shí)性:修改配置不靈活且需要經(jīng)過(guò)較長(zhǎng)的測(cè)試發(fā)布周期,無(wú)法盡快通知到客戶端,還有些配置對(duì)實(shí)時(shí)性要求很高,比方說(shuō)主備切換配置或者碰上故障需要修改配置,這時(shí)通過(guò)傳統(tǒng)的靜態(tài)配置或者重新發(fā)布的方式去配置,那么響應(yīng)速度是非常慢的,業(yè)務(wù)風(fēng)險(xiǎn)非常大?
動(dòng)態(tài)配置服務(wù)
- 動(dòng)態(tài)配置服務(wù)可以讓您以中心化、外部化和動(dòng)態(tài)化的方式管理所有環(huán)境的應(yīng)用配置和服務(wù)配置。
- 動(dòng)態(tài)配置消除了配置變更時(shí)重新部署應(yīng)用和服務(wù)的需要,讓配置管理變得更加高效和敏捷。
- 配置中心化管理讓實(shí)現(xiàn)無(wú)狀態(tài)服務(wù)變得更簡(jiǎn)單,讓服務(wù)按需彈性擴(kuò)展變得更容易。 Nacos 提供了一個(gè)簡(jiǎn)潔易用的UI (控制臺(tái)樣例 Demo) 幫助您管理所有的服務(wù)和應(yīng)用的配置。Nacos 還提供包括配置版本跟蹤、金絲雀發(fā)布、一鍵回滾配置以及客戶端配置更新?tīng)顟B(tài)跟蹤在內(nèi)的一系列開(kāi)箱即用的配置管理特性,幫助您更安全地在生產(chǎn)環(huán)境中管理配置變更和降低配置變更帶來(lái)的風(fēng)險(xiǎn)。
多配置格式編輯器?
Nacos支持 YAML、Properties、TEXT、JSON、XML、HTML 等常見(jiàn)配置格式在線編輯、語(yǔ)法高亮、格式校驗(yàn),幫助用戶高效編輯的同時(shí)大幅降低格式錯(cuò)誤帶來(lái)的風(fēng)險(xiǎn)。
Nacos支持配置標(biāo)簽的能力,幫助用戶更好、更靈活的做到基于標(biāo)簽的配置分類及管理。同時(shí)支持用戶對(duì)配置及其變更進(jìn)行描述,方便多人或者跨團(tuán)隊(duì)協(xié)作管理配置。
微服務(wù)拉取配置流程
微服務(wù)要拉取nacos中管理的配置,并且與本地的application.yml配置合并,才能完成項(xiàng)目啟動(dòng)。但如果尚未讀取application.yml,又如何得知nacos地址呢?
因此spring引入了一種新的配置文件:bootstrap.yaml文件,會(huì)在application.yml之前被讀取
springboot中配置文件的加載是存在優(yōu)先級(jí)順序的,bootstrap優(yōu)先級(jí)高于application?
Data ID
公式:${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
- prefix 默認(rèn)為 spring.application.name 的值
- spring.profile.active 即為當(dāng)前環(huán)境對(duì)應(yīng)的 profile,可以通過(guò)配置項(xiàng) spring.profile.active 來(lái)配置。
- file-exetension 為配置內(nèi)容的數(shù)據(jù)格式,可以通過(guò)配置項(xiàng) spring.cloud.nacos.config.file-extension 來(lái)配置
?通俗一點(diǎn)就是 “前綴-環(huán)境-擴(kuò)展名”
spring:
application:
name: studentservice # 服務(wù)名稱
profiles:
active: dev #開(kāi)發(fā)環(huán)境,這里是dev
cloud:
nacos:
server-addr: localhost:8848 # Nacos地址
config:
file-extension: yaml # 文件后綴名
@RefreshScope
?SpringCloud 使用?@RefreshScope
注解,實(shí)現(xiàn)配置文件的動(dòng)態(tài)加載。?@RefreshScope 注解是一個(gè)基于 Spring Cloud Config 的注解。它允許 Spring Boot 應(yīng)用程序在運(yùn)行時(shí)動(dòng)態(tài)地刷新配置,而無(wú)需重啟應(yīng)用程序。使用 @RefreshScope 注解,可以在不停止應(yīng)用程序的情況下修改配置。
?在 Spring Boot 中,@RefreshScope 注解是基于 Spring Cloud Config 實(shí)現(xiàn)的。Spring Cloud Config 是一個(gè)用于集中化配置管理的工具。它可以將配置存儲(chǔ)在 Git、SVN 或本地文件系統(tǒng)中,并將其提供給多個(gè)應(yīng)用程序。
當(dāng)應(yīng)用程序中使用了 @RefreshScope 注解時(shí),Spring Boot 將會(huì)監(jiān)控配置文件的變化。當(dāng)配置文件發(fā)生變化時(shí),Spring Boot 將會(huì)重新加載配置并重新初始化相關(guān)的 Bean。這樣,就可以在應(yīng)用程序運(yùn)行時(shí)動(dòng)態(tài)地修改配置。
配置共享的優(yōu)先級(jí)
當(dāng)nacos、服務(wù)本地同時(shí)出現(xiàn)相同屬性時(shí),優(yōu)先級(jí)有高低之分:
實(shí)戰(zhàn)使用
簡(jiǎn)單的共享配置
不區(qū)分工作環(huán)境,即不設(shè)置profiles.active,則在Nacos中的配置文件只需要spring.application.name.spring.cloud.nacos.config.file-extension
代碼示例:
pom主要依賴
<!--nacos配置管理依賴-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
bootstrap.yaml
spring:
application:
name: studentservice # 服務(wù)名稱
cloud:
nacos:
server-addr: localhost:8848 # Nacos地址
config:
file-extension: yaml # 文件后綴名
?application.yaml
server:
port: 8002
version: kk
?controller配置類
@RestController
@RefreshScope
public class StudentController implements Serializable {
@Value("${version}")
String version;
@GetMapping("/version")
public String version(){
return version;
}
}
啟動(dòng)項(xiàng)目以后可以訪問(wèn)下/version得到的是kkk
在Nacos中創(chuàng)建一個(gè)配置文件名為:
?發(fā)布以后再次訪問(wèn)/version得到是yy
開(kāi)發(fā)環(huán)境的共享配置
實(shí)際開(kāi)發(fā)中,通常一個(gè)系統(tǒng)會(huì)準(zhǔn)備
- dev開(kāi)發(fā)環(huán)境
- test測(cè)試環(huán)境
- prod生產(chǎn)環(huán)境。
如何保證指定環(huán)境啟動(dòng)時(shí)服務(wù)能正確讀取到Nacos上相應(yīng)環(huán)境的配置文件呢?
我們只要區(qū)分工作環(huán)境,這次需要設(shè)置profiles.active。
修改bootstrap.yaml文件
spring:
application:
name: studentservice # 服務(wù)名稱
profiles:
active: dev #開(kāi)發(fā)環(huán)境,這里是dev
cloud:
nacos:
server-addr: localhost:8848 # Nacos地址
config:
file-extension: yaml # 文件后綴名
?在Nacos中創(chuàng)建一個(gè)配置文件名為:
?發(fā)布以后再次訪問(wèn)/version得到是wwww
環(huán)境隔離-命名空間Namespace
一個(gè)大型分布式微服務(wù)系統(tǒng)會(huì)有很多微服務(wù)子項(xiàng)目,每個(gè)微服務(wù)項(xiàng)目又都會(huì)有相應(yīng)的開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境、預(yù)發(fā)環(huán)境、正式環(huán)境,那怎么對(duì)這些微服務(wù)配置進(jìn)行管理呢?
Nacos 引入命名空間 Namespace 的概念來(lái)進(jìn)行多環(huán)境配置和服務(wù)的管理及隔離。例如,你可能存在本地開(kāi)發(fā)環(huán)境dev、測(cè)試環(huán)境test、生產(chǎn)環(huán)境prod 三個(gè)不同的環(huán)境,那么可以創(chuàng)建三個(gè)不同的 Namespace 區(qū)分不同的環(huán)境。
?成功創(chuàng)建新命名空間后,就可以在 springboot 的配置文件配置命名空間的 id 切換到對(duì)應(yīng)的命名空間,并獲取對(duì)應(yīng)空間下的配置文件,但在沒(méi)有指定命名空間配置的情況下,默認(rèn)的配置都是在 public 空間中,指定命名空間的方式如下:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-770860.html
cloud:
nacos:
config:
namespace:483bb765-a42d-4112-90bc-50b8dff768b1
業(yè)務(wù)隔離-Group分組
Group 也可以實(shí)現(xiàn)環(huán)境隔離的功能,但 Group 設(shè)計(jì)的目的主要是做同一個(gè)環(huán)境中的不同服務(wù)分組,把不同的微服務(wù)的配置文件劃分到同一個(gè)分組里面去,Nacos 如果不指定 Group,則默認(rèn)的分組是 DEFAULT_GROUP。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-770860.html
spring:
cloud:
nacos:
config:
group: xxxx
到了這里,關(guān)于SpringCloud之Nacos配置中心解讀的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!