SpringCloud Nacos 配置中心
Nacos Config Center
上一篇介紹了 Spring Cloud 中配置中心的使用,地址:https://mp.weixin.qq.com/s/QcIaGAYUvPBIqJM8oMbVvQ
這一節介紹 Nacos 作為配置中心使用,不需要 Github
這裡首先需要注意,Nacos 在Spring、Spring Boot、Spring Cloud 這三種環境下的依賴、配置和使用方法都是不同的。這裡僅以 Spring Cloud + Nacos 為例,闡述 Spring Cloud 中使用 Nacos 作為服務註冊中心和配置中心。更具體的資料可以參考官方文件:https://nacos.io/zh-cn/docs/quick-start.html
一、Nacos Server 建立配置
啟動 Nacos Server 端,瀏覽器訪問。
在 Nacos 中建立三個配置檔案:consumer-demo.yaml
、consumer-demo-dev.yaml
、consumer-demo-prod.yaml
,內容略有區別。
consumer-demo.yml
二、Nacos-Consumer
建立一個 consumer-demo 專案,依賴如下:
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR3</spring-cloud.version>
<nacos.version>0.9.0.RELEASE</nacos.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${nacos.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${nacos.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<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>
</dependencyManagement>
在啟動類加上 @EnableDiscoveryClient 註解(這表示是啟用服務註冊,也可以不啟用而僅從 Nacos 讀取配置資訊)。
刪除 application.yml
配置資訊應寫在 bootstrap.properties
或 bootstrap.yml
檔案中:
spring:
application:
name: consumer-demo
cloud:
nacos:
config:
file-extension: yaml
server-addr: 127.0.0.1:8848
prefix: ${spring.application.name} # 預設值就是 spring.application.name
discovery:
server-addr: 127.0.0.1:8848
profiles:
active: dev
查詢的配置檔案,即 nacos 中的 dataId,應該是:${prefix}-${spring.profile.active}.${file-extension}
如果 ${active}
不存在,那麼會查詢: ${prefix}.${file-extension}
啟動專案,控制檯出現類似如下資訊:
2020-04-15 17:00:17.946 INFO 16392 --- [ main] o.s.c.a.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: 'consumer-demo.yaml', group: 'DEFAULT_GROUP'
2020-04-15 17:00:17.953 INFO 16392 --- [ main] o.s.c.a.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: 'consumer-demo-dev.yaml', group: 'DEFAULT_GROUP'
2020-04-15 17:00:17.955 INFO 16392 --- [ main] b.c.PropertySourceBootstrapConfiguration : Located property source: [BootstrapPropertySource {name='bootstrapProperties-consumer-demo-dev.yaml'}, BootstrapPropertySource {name='bootstrapProperties-consumer-demo.yaml'}]
2020-04-15 17:00:17.960 INFO 16392 --- [ main] c.e.c.ConsumerDemoApplication : The following profiles are active: dev
我們可以看到從 Nacos 載入了 consumer-demo.yaml 和 consumer-demo-dev.yaml
編寫一個測試介面:
@RefreshScope // 注意要加上 @RefreshScope 註解,否則即使 RefreshEventListener 檢測到配置資訊被更新了,下面的 msg 還是會保持之前的值
@RestController
@RequestMapping(value = "test")
public class TestAction {
@NacosValue("${msg}")
private String msg; // 用 @NacosValue 獲取不到值 (null)
@Value("${msg}")
private String vMsg; // 用 @Value 獲取到了值
@GetMapping(value = "")
public String hello() {
return msg + ":" + vMsg;
}
}
開啟瀏覽器,輸入 test 介面地址:
在 nacos 上修改一下 msg 的值,觀察控制檯,出現:
2020-04-15 17:11:43.355 INFO 16392 --- [-127.0.0.1_8848] o.s.c.e.event.RefreshEventListener : Refresh keys changed: [msg]
表明檢測到 msg 配置資訊改變。重新整理 test 介面,發現 msg 的值隨之改變了。
三、持久化
關閉 nacos server,重新啟動,發現上面建立的配置資訊沒有丟失,這說明 nacos 把配置資訊持久化儲存了。
Nacos 預設使用嵌入式資料庫,也支援修改資料來源為 MySQL
參考:
- 方誌朋 —— Spring Cloud Alibaba 教程:使用 Nacos 作為配置中心:https://blog.csdn.net/forezp/article/details/90729945
- 擼帝 —— Nacos Config 客戶端的使用:https://www.jianshu.com/p/d8ed2eb2041d
- Nacos 官方文件:https://nacos.io/zh-cn/docs/quick-start.html
相關文章
- Springcloud alibaba nacos配置中心SpringGCCloud
- springcloud alibaba-nacos配置中心SpringGCCloud
- SpringCloud+Nacos實現服務配置中心(Hoxton版本)SpringGCCloud
- Dubbo與SpringCloud Alibaba使用Nacos作為配置中心和註冊中心SpringGCCloud
- Nacos配置中心原理
- springcloud/springboot整合NACOS 做註冊和配置中心以及nacos原始碼分析GCCloudSpring Boot原始碼
- SpringCloud 配置管理:NacosSpringGCCloud
- Docker 搭建 Nacos 配置中心Docker
- SpringCloud入門(五)Nacos註冊中心(上)SpringGCCloud
- SpringCloud入門(六)Nacos註冊中心(下)SpringGCCloud
- 【Nacos】微服務配置中心介紹微服務
- SpringBoot使用Nacos配置中心Spring Boot
- nacos入門系列之配置中心
- Nacos註冊中心+配置管理
- 【On Nacos】SpringCloud 方式使用 NacosSpringGCCloud
- springcloud-註冊中心和配置中心SpringGCCloud
- SpringCloud-Alibaba之Nacos服務註冊中心SpringGCCloud
- SpringCloud Alibaba Nacos註冊中心原始碼淺析SpringGCCloud原始碼
- springboot整合nacos註冊中心和配置中心Spring Boot
- nacos統一配置中心原始碼解析原始碼
- 《springcloud 三》分散式配置中心SpringGCCloud分散式
- SpringCloud Config 配置中心SpringGCCloud
- springcloud(六):配置中心git示例SpringGCCloudGit
- 初探Nacos(四)-- SpringBoot下使用Nacos作為配置中心Spring Boot
- SpringCloud-NacosSpringGCCloud
- Java教程:nacos入門系列之配置中心Java
- Spring Cloud Alibaba(5)---Nacos(配置中心)SpringCloud
- Solon2 專案整合 Nacos 配置中心
- Nacos註冊與配置中心:使用詳講
- SpringCloud微服務實戰——搭建企業級開發框架(十):使用Nacos分散式配置中心SpringGCCloud微服務框架分散式
- SpringCloud之分散式配置中心(六)SpringGCCloud分散式
- SpringCloud Alibaba實戰(7:nacos註冊中心管理微服務)SpringGCCloud微服務
- 微服務實戰系列(四)-註冊中心springcloud alibaba nacos微服務SpringGCCloud
- 普通springcloud eureka 和 spring cloud Alibaba nacos 註冊中心SpringGCCloud
- 阿里巴巴 Nacos 分散式配置中心原理阿里分散式
- 阿里 Nacos 註冊中心 配置啟動說明阿里
- Nacos配置中心叢集原理及原始碼分析原始碼
- springcloud(七):配置中心svn示例和refreshSpringGCCloud