spring cloud如何集成nacos配置中心
spring cloud集成nacos配置中心
一、添加依賴
<properties> <spring-cloud.version>Finchley.RELEASE</spring-cloud.version> <nacos.version>0.9.0.RELEASE</nacos.version> </properties> <!-- 配置管理功能依賴 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>${nacos.version}</version> </dependency>
二、添加bootstrap.yml配置文件
(*nacos配置中心讀取不到application.yml)
spring: profiles: active: dev cloud: nacos: config: server-addr: 127.0.0.1:8848 # 配置中心-指定命名空間 namespace: babc3933-84ef-43c8-8171-af2ce2fbf6e4 # 指定配置文件后綴 file-extension: yaml #配置組 group: DEFAULT_GROUP
三、添加遠程配置
1. 使用已有命名空間或者添加命名空間
2. namespace:命名空間的ID
3. 新建配置DateId 規(guī)則如下:
${prefix}-${spring.profile.active}.${file-extension}
*注意帶文件后綴
4. 配置格式選擇yaml
5. 在配置內(nèi)容中寫入配置
nacos作為SpringCloud配置中心
一、背景介紹
在分布式系統(tǒng)中動態(tài)配置中,可以避免重復(fù)重啟服務(wù),動態(tài)更改服務(wù)參數(shù)等。一句話非常重要。 另外一篇文章也是這樣說的,哈哈。 Nacos作為Spring 推薦的分布式調(diào)度系統(tǒng)其也具備配置中心的功能, 我們也可以利用其作為配置中心,其client端主動定時發(fā)起與配置中心同步機制,實現(xiàn)動態(tài)配置的的更新。
環(huán)境依賴:
名稱 | 值 |
---|---|
JDK | 1.8 |
Consul | 1.5.2 |
SpringCloud | Greenwich.SR1 |
Nacos | 1.1.0 |
二、項目實戰(zhàn)
1) pom依賴(主要)
<properties> <java.version>1.8</java.version> <spring-cloud.version>Greenwich.SR1</spring-cloud.version> <spring-cloud-alibaba.version>0.9.0.RELEASE</spring-cloud-alibaba.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring-cloud-alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencyManagement> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
2)配置文件
application.properties #0表示服務(wù)器隨機端口 server.port=8090 #本次演示的kv的默認值(老板默認給你0元) company.pay.money=0
bootstrap.properties
#服務(wù)名稱 spring.application.name=waiter-service #consul 地址 spring.cloud.consul.host=localhost #consul 端口 spring.cloud.consul.port=8500 spring.cloud.consul.discovery.prefer-ip-address=true #nacos config server 地址 spring.cloud.nacos.config.server-addr=127.0.0.1:8848 #nacos 配置中心功能,默認true spring.cloud.nacos.config.enabled=true #nacos config server 動態(tài)配置文件格式 spring.cloud.nacos.config.file-extension=yaml
3)動態(tài)參數(shù)接收類
@ConfigurationProperties("company.pay") @RefreshScope @Data @Component public class PayMoneyProperties { //key結(jié)尾部分,以小數(shù)點為間隔 Integer money ; }
備注:
- ConfigurationProperties 表示這個類關(guān)聯(lián)動態(tài)配置,“company.pay”表示key的前綴部分。
- @RefreshScope 表示動態(tài)刷新config server 值
- @Component 表示將該類加載到IOC容器中
在實戰(zhàn)中嘗試用@Value的方式獲取動態(tài),只能實現(xiàn)服務(wù)重啟后獲取動態(tài)的config server 的值
4)對外接口(便于直觀驗證)
方式一:
@RestController @RequestMapping("nacos) public class NacosConfigController { @Autowired private PayMoneyProperties payMoneyProperties ; @RequestMapping("/pay/money") public Object getConfig(HttpRequest request){ String money ="項目順利上線,老板開始發(fā)獎金:"; return money + payMoneyProperties.getMoney(); } }
方式二:
@RestController @RequestMapping("nacos") //啟用動態(tài)配置刷新 @RefreshScope public class NacosConfigController { //獲取配置的值 @Value("${company.pay.money}") private String moneyConfig; @RequestMapping("/pay/money") public Object getZkConfig(HttpRequest request){ String money ="項目順利上線,老板開始發(fā)獎金:"; return money +moneyConfig; } }
5)啟動項目
上圖可以通過日志看出config server 的連接信息,默認拉取nacos上 項目名稱.yaml 為Data ID 的文件。
6)nacos config server 還沒設(shè)置對應(yīng)節(jié)點值時演示(獲取的是本地配置文件值)
備注:Spring boot 在加載配置順序:本地配置文件 --> Config Server -->application
7) nacos 中創(chuàng)建數(shù)據(jù)節(jié)點
請求地址:http://localhost:8848/nacos
創(chuàng)建數(shù)據(jù):Data ID:waiter-service.yaml
注意:YAML數(shù)據(jù)中,通過空格、“:” 表示數(shù)據(jù)層級關(guān)系, 在設(shè)置這個值前,可以在網(wǎng)上校驗一下YAML內(nèi)容的有效性;
8)驗證項目里是有有收到動態(tài)配置
如下圖,表示已經(jīng)通知到項目更新的值
在驗證接口中請求一下對應(yīng)接口,發(fā)現(xiàn)值已經(jīng)和nacos config server 中動態(tài)設(shè)置的值相同了
三、總結(jié)
1)nacos作為注冊中心相比 consul 、zookeeper 作為注冊中心,有了更友好的web頁面,支持監(jiān)聽節(jié)點信息查詢、配置歷史版本查詢、修改對比 等功能
2)client 會定時拉取nacos config server 值,與本地值對比
相關(guān)文章
springboot使用alibaba的druid數(shù)據(jù)庫連接池錯誤的問題及解決
這篇文章主要介紹了springboot使用alibaba的druid數(shù)據(jù)庫連接池錯誤的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02Java Spring MVC 上傳下載文件配置及controller方法詳解
這篇文章主要介紹了Java Spring MVC 上傳下載文件配置及controller方法詳解,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下2016-09-09