日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Cloud Alibaba - 17 Nacos Config 配置中心 应用篇

發(fā)布時(shí)間:2025/3/21 javascript 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Cloud Alibaba - 17 Nacos Config 配置中心 应用篇 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • Nacos配置中心基礎(chǔ)概念
    • 配置服務(wù) (Configuration Service)
    • 配置管理 (Configuration Management)
    • 配置項(xiàng)
    • 配置集
    • 配置集 ID
    • 配置分組
    • 配置快照
  • 配置中心的核心功能
  • 實(shí)現(xiàn)配置中心要解決的問題
  • 微服務(wù)接入配置步驟
    • Step1 搞依賴包
    • Step2 搞配置文件
    • Step3 Nacos Config 增加配置
    • Step4 驗(yàn)證
  • Another 栗子 (不停機(jī)生效新值)
    • 業(yè)務(wù)場(chǎng)景
    • Step1 Nacos Config 新增配置項(xiàng)
    • Step2 @Value 解析對(duì)應(yīng)的值
    • Step3 Controller上添加@RefreshScope進(jìn)行動(dòng)態(tài)刷新
    • Step4 驗(yàn)證
  • 源碼


Nacos配置中心基礎(chǔ)概念

https://nacos.io/zh-cn/docs/concepts.html

在系統(tǒng)開發(fā)過程中通常會(huì)將一些需要變更的參數(shù)、變量等從代碼中分離出來獨(dú)立管理,以獨(dú)立的配置文件的形式存在。目的是讓靜態(tài)的系統(tǒng)工件或者交付物(如 WAR,JAR 包等)更好地和實(shí)際的物理運(yùn)行環(huán)境進(jìn)行適配。配置管理一般包含在系統(tǒng)部署的過程中,由系統(tǒng)管理員或者運(yùn)維人員完成這個(gè)步驟。配置變更是調(diào)整系統(tǒng)運(yùn)行時(shí)的行為的有效手段之一。


配置服務(wù) (Configuration Service)

在服務(wù)或者應(yīng)用運(yùn)行過程中,提供動(dòng)態(tài)配置或者元數(shù)據(jù)以及配置管理的服務(wù)提供者。

配置管理 (Configuration Management)

在數(shù)據(jù)中心中,系統(tǒng)中所有配置的編輯、存儲(chǔ)、分發(fā)、變更管理、歷史版本管理、變更審計(jì)等所有與配置相關(guān)的活動(dòng)統(tǒng)稱為配置管理。


配置項(xiàng)

一個(gè)具體的可配置的參數(shù)與其值域,通常以 param-key=param-value 的形式存在。例如我們常配置系統(tǒng)的日志輸出級(jí)別(logLevel=INFO|WARN|ERROR) 就是一個(gè)配置項(xiàng)。


配置集

一組相關(guān)或者不相關(guān)的配置項(xiàng)的集合稱為配置集。在系統(tǒng)中,一個(gè)配置文件通常就是一個(gè)配置集,包含了系統(tǒng)各個(gè)方面的配置。例如,一個(gè)配置集可能包含了數(shù)據(jù)源、線程池、日志級(jí)別等配置項(xiàng)。


配置集 ID

Nacos 中的某個(gè)配置集的 ID。配置集 ID 是組織劃分配置的維度之一。Data ID 通常用于組織劃分系統(tǒng)的配置集。一個(gè)系統(tǒng)或者應(yīng)用可以包含多個(gè)配置集,每個(gè)配置集都可以被一個(gè)有意義的名稱標(biāo)識(shí)。Data ID 通常采用類 Java 包(如 com.taobao.tc.refund.log.level)的命名規(guī)則保證全局唯一性。此命名規(guī)則非強(qiáng)制。


配置分組

Nacos 中的一組配置集,是組織配置的維度之一。通過一個(gè)有意義的字符串(如 Buy 或 Trade )對(duì)配置集進(jìn)行分組,從而區(qū)分 Data ID 相同的配置集。當(dāng)您在 Nacos 上創(chuàng)建一個(gè)配置時(shí),如果未填寫配置分組的名稱,則配置分組的名稱默認(rèn)采用 DEFAULT_GROUP 。配置分組的常見場(chǎng)景:不同的應(yīng)用或組件使用了相同的配置類型,如 database_url 配置和 MQ_topic 配置。


配置快照

Nacos 的客戶端 SDK 會(huì)在本地生成配置的快照。當(dāng)客戶端無法連接到 Nacos Server 時(shí),可以使用配置快照顯示系統(tǒng)的整體容災(zāi)能力。配置快照類似于 Git 中的本地 commit,也類似于緩存,會(huì)在適當(dāng)?shù)臅r(shí)機(jī)更新,但是并沒有緩存過期(expiration)的概念。


配置中心的核心功能

  • 不同環(huán)境不同配置
  • 配置屬性動(dòng)態(tài)刷新


實(shí)現(xiàn)配置中心要解決的問題

我們看看上圖,由幾個(gè)問題要解決

  • 微服務(wù)怎么知道配置中心的地址 ?
  • 微服務(wù)到底需要連接哪個(gè)環(huán)境 ?
  • 怎么找到nacos config上的對(duì)應(yīng)的配置文件 ?


微服務(wù)接入配置步驟

我們建立一個(gè)工程 artisan-cloud-nacos-config ,假設(shè)這個(gè)工程 要從配置中心上拉取配置 。

不要被這個(gè)工程的名字給迷惑了,其實(shí)就是我們普通的微服務(wù),比如ORDER 、PRODUCT服務(wù)要接入配置中,就需要這么搞

Step1 搞依賴包

<!--加入nocas-client--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-nacos-discovery</artifactId></dependency><!-- 配置中心nacos-config --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-nacos-config</artifactId></dependency>

Step2 搞配置文件

編寫配置文件,需要寫一個(gè)bootstrap.yml配置文件

spring:cloud:nacos:config: # 這里是 config , 服務(wù)注冊(cè)的這個(gè)地方是 discoveryserver-addr: 1.117.97.88:8848file-extension: ymlapplication: # 表示當(dāng)前微服務(wù)需要向配置中心索要artisan-config-center的配置name: artisan-config-centerprofiles: # 表示我需要向配置中心索要artisan-config-center的開發(fā)環(huán)境的配置active: dev
  • server-addr: 1.117.97.88:8848 表示我微服務(wù)怎么去找我的配置中心
  • spring.application.name=artisan-config-center 表示當(dāng)前微服務(wù)需要向配置中心索要artisan-config-center的配置
  • spring.profiles.active=dev表示我需要向配置中心索要artisan-config-center的dev環(huán)境的配置

索要文件的格式為

${application.name}- ${spring.profiles.active}.${file-extension}

同樣的,我們這個(gè)服務(wù)也要注冊(cè)到Nacos


Step3 Nacos Config 增加配置

新建配置


Step4 驗(yàn)證

啟動(dòng)服務(wù),觀察日志

2022-02-04 12:37:50.945 INFO 14772 --- [ main] c.a.c.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: 'artisan-config-center-dev.yml', group: 'DEFAULT_GROUP', data: server:port: 5678 2022-02-04 12:37:50.948 INFO 14772 --- [ main] b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='artisan-config-center-dev.yml'}, NacosPropertySource {name='artisan-config-center.yml'}, NacosPropertySource {name='artisan-config-center'}]}


Another 栗子 (不停機(jī)生效新值)

業(yè)務(wù)場(chǎng)景

我們有個(gè)新業(yè)務(wù)上線, 業(yè)務(wù)需要,保留原來老邏輯的代碼,所有我們打算搞個(gè)一個(gè)開關(guān)變isNewPath 來控制,為了以防萬一,如果新功能上了生產(chǎn)后,發(fā)現(xiàn)有bug,怎么做到修改isNewBusi的值不需要重啟 ?


Step1 Nacos Config 新增配置項(xiàng)

在上個(gè)工程的基礎(chǔ)上,我們來增加這個(gè)功能


Step2 @Value 解析對(duì)應(yīng)的值

import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;@RestController @RefreshScope @Slf4j public class OrderInfoController {@Value("${isNewPath}")private Boolean isNewPath;@RequestMapping("/selectOrderInfoById/{orderNo}")public Object selectOrderInfoById(@PathVariable("orderNo") String orderNo) {log.info("是否業(yè)務(wù)走新邏輯:{}", isNewPath);if (isNewPath) {return "查詢訂單執(zhí)行新邏輯->execute new logic : " + orderNo;}return "查詢訂單執(zhí)行老邏輯->execute old logic : " + orderNo;}}

Step3 Controller上添加@RefreshScope進(jìn)行動(dòng)態(tài)刷新

Step4 驗(yàn)證

啟動(dòng)服務(wù),觀察拉取的配置中心的配置項(xiàng)

2022-02-04 13:30:27.453 INFO 21040 --- [ main] c.a.c.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: 'artisan-config-center-dev.yml', group: 'DEFAULT_GROUP', data: server:port: 5678 # 是否走新業(yè)務(wù)邏輯的開關(guān) isNewPath: true

我們看到是true , 訪問下試試呢

Nacos Config上修改值為false ,觀察日志,重新測(cè)試

看下應(yīng)用的日志

2022-02-04 13:32:29.234 INFO 21040 --- [.117.97.88_8848] o.s.cloud.commons.util.InetUtils : Cannot determine local hostname 2022-02-04 13:32:29.273 INFO 21040 --- [.117.97.88_8848] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$de53a9bf] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2022-02-04 13:32:30.791 INFO 21040 --- [.117.97.88_8848] o.s.cloud.commons.util.InetUtils : Cannot determine local hostname 2022-02-04 13:32:30.884 WARN 21040 --- [.117.97.88_8848] c.a.c.n.c.NacosPropertySourceBuilder : Ignore the empty nacos configuration and get it based on dataId[artisan-config-center] & group[DEFAULT_GROUP] 2022-02-04 13:32:30.952 WARN 21040 --- [.117.97.88_8848] c.a.c.n.c.NacosPropertySourceBuilder : Ignore the empty nacos configuration and get it based on dataId[artisan-config-center.yml] & group[DEFAULT_GROUP] 2022-02-04 13:32:31.012 INFO 21040 --- [.117.97.88_8848] c.a.c.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: 'artisan-config-center-dev.yml', group: 'DEFAULT_GROUP', data: server:port: 5678 # 是否走新業(yè)務(wù)邏輯的開關(guān) isNewPath: false 2022-02-04 13:32:31.013 INFO 21040 --- [.117.97.88_8848] b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='artisan-config-center-dev.yml'}, NacosPropertySource {name='artisan-config-center.yml'}, NacosPropertySource {name='artisan-config-center'}]} 2022-02-04 13:32:31.014 INFO 21040 --- [.117.97.88_8848] o.s.boot.SpringApplication : The following profiles are active: dev 2022-02-04 13:32:31.023 INFO 21040 --- [.117.97.88_8848] o.s.boot.SpringApplication : Started application in 3.29 seconds (JVM running for 128.768) 2022-02-04 13:32:31.040 INFO 21040 --- [.117.97.88_8848] o.s.c.e.event.RefreshEventListener : Refresh keys changed: [isNewPath]

已經(jīng)獲取到了最新值 , isNewPath: false ,并且 Refresh keys changed: [isNewPath]

我們不重啟應(yīng)用,直接訪問


咦,不停機(jī)走了老邏輯


源碼

https://github.com/yangshangwei/SpringCloudAlibabMaster

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的Spring Cloud Alibaba - 17 Nacos Config 配置中心 应用篇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。