Spring Cloud Nacos配置管理方案
Spring Cloud Nacos
Nacos全稱Dynamic Naming and Configuration Service,它可以用于RPC框架中服務(wù)的注冊與發(fā)現(xiàn),也可以作為配置中心管理應(yīng)用的配置.
服務(wù)注冊與發(fā)現(xiàn)
使用過RPC框架同學(xué)對服務(wù)注冊與發(fā)現(xiàn)并不陌生,比如Dubbo默認(rèn)使用Zookeeper作為注冊中心,完成服務(wù)的注冊與發(fā)現(xiàn),而Nacos 同樣可以充當(dāng)注冊中心的角色。
Nacos 提供了多種健康檢查機(jī)制,確保請求總是被健康的服務(wù)器處理。
配置管理
Nacos 還可以作為配置中心,在運(yùn)行時(shí)動態(tài)修改配置,而無需重啟應(yīng)用
對于配置的修改進(jìn)行歷史版本管理,便于回滾和審計(jì)。
同時(shí)Nacos對多環(huán)境支持,即不同的環(huán)境(如開發(fā)、測試、生產(chǎn))有不同的配置
Nacos 優(yōu)勢
Nacos具有數(shù)據(jù)模型簡單,提供了簡單便捷的控制臺界面,支持多種語言 如 Java/Golang/Python等優(yōu)勢,使得在Spring Cloud 微服務(wù)組件中占有重要的一席之地
Nacos 安裝與使用
jdk 安裝 與配置
Nacos 依賴JDK環(huán)境, 建議使用JDK 1.8 ,安裝完成配置好環(huán)境變量。
Nocas 配置中心使用
官網(wǎng)下載2.x版本,本文下載的是nacos-server-2.4.3.tar.gz
Nacos 部署方式
- 單機(jī)模式
- 集群模式
- 多集群模式
解壓后,進(jìn)入nacos/bin 目錄 執(zhí)行 , -m standalone 參數(shù)指定以單機(jī)模式部署。啟動成功后輸入 http://ip:8848/nacos
進(jìn)入控制臺,可以在控制臺進(jìn)行配置的增刪查改
tar -zxvf nacos-server-2.4.3.tar.gz ./startup.sh -m standalone
Nacos 接入
Nacos 支持多種方式對接
- Open API
- Java SDK
- Nacos Spring
- Nacos Spring Boot
- Nacos Spring Cloud
Open API 方式
可以通過CURL命令發(fā)送指定請求,實(shí)現(xiàn)配置的增刪查改
獲取配置
請求URL /nacos/v1/cs/configs
請求參數(shù)
名稱 | 類型 | 是否必須 | 描述 |
---|---|---|---|
tenant | string | 否 | 租戶信息,對應(yīng) Nacos 的命名空間ID字段。 |
dataId | string | 是 | 配置 ID。 |
group | string | 是 | 配置分組。 |
通過CURL 查詢配置
curl -X GET 'http://127.0.0.1:8848/nacos/v2/cs/config?dataId=codetonight.ak&group=nacos-demo&namespaceId=public'
返回
{"code":0,"message":"success","data":"akserert123"}
發(fā)布配置
請求 URL /nacos/v1/cs/configs
請求參數(shù)
名稱 | 類型 | 是否必須 | 描述 |
---|---|---|---|
tenant | string | 否 | 租戶信息,對應(yīng) Nacos 的命名空間ID字段 |
dataId | string | 是 | 配置 ID |
group | string | 是 | 配置分組 |
content | string | 是 | 配置內(nèi)容 |
type | String | 否 | 配置類型 |
通過CURL 發(fā)布配置
curl -d 'dataId=nacos.example' \ -d 'group=DEFAULT_GROUP' \ -d 'namespaceId=public' \ -d 'content=contentTest' \ -X POST 'http://127.0.0.1:8848/nacos/v2/cs/config'
Java SDK
如果你的項(xiàng)目不是基于Spring Boot ,你也可以使用Nacos-client,
當(dāng)然這種方式使用起來就不那么優(yōu)雅。
如果你愿意,也可以按照Open API格式構(gòu)造Http 請求,與Nacos交互,這也是Nacos 很容易支持其他語言的原因,因?yàn)樗С諳pen API,
其他語言只要構(gòu)造對應(yīng)的Http請求即可。
Nacos-client 需要引入Pom依賴,Java代碼也很簡單,這種使用方式比較少。
<dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>${nacos.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.36</version> <!-- 請?zhí)鎿Q為實(shí)際版本號 --> </dependency>
String serverAddr = "http://localhost:8848"; String dataId = "nacos.example"; String group = "DEFAULT_GROUP"; Properties properties = new Properties(); properties.put("serverAddr", serverAddr); ConfigService configService = NacosFactory.createConfigService(properties); String content = configService.getConfig(dataId, group, 5000); System.out.println(content); configService.addListener(dataId, group, new Listener() { @Override public void receiveConfigInfo(String configInfo) { System.out.println("recieve1:" + configInfo); } @Override public Executor getExecutor() { return null; } }); Thread.sleep(1000*3600);
Nacos Spring Cloud
Nacos Spring,Nacos Spring Boot 使用方式可以自行查看官方文檔,本文重點(diǎn)介紹Nacos Spring Cloud 接入方式,
主要內(nèi)容包含
- 屬性自動刷新
- 多環(huán)境支持
首先提個(gè)問題為什么需要配置中心?
傳統(tǒng)的配置放到properties文件或者yaml文件中,隨著代碼一起打包,當(dāng)需要修改配置時(shí),應(yīng)用需要重啟才生效。
此外配置中包含一些敏感信息,如果數(shù)據(jù)庫用戶名和密碼,這些配置放到 properties文件或者yaml文件存在安全隱患。 因此有了配置中心。
配置中心配置優(yōu)先級高于配置文件中配置
DataId
Spring Cloud 中 dataId 格式
${prefix}-${spring.profiles.active}.${file-extension}
- prefix 如果不配置則值為 spring.application.name
- spring.profiles.active 即為當(dāng)前環(huán)境對應(yīng)的 profile, 如果spring.profiles.active為空
對應(yīng)dataId 蛻化為
${prefix}.${file-extension}
file-exetension 目前只支持 properties
和 yaml
類型 配置示例一
以下是Spring Cloud 一個(gè)簡單配置,我們沒有配置多環(huán)境那么,對應(yīng)的dataId
nacos-demo.properties
# bootstrap.properties spring.application.name=nacos-demo spring.cloud.nacos.config.server-addr=http://127.0.0.1:8848 spring.cloud.nacos.config.namespace=public spring.cloud.nacos.config.group=nacos-demo spring.cloud.nacos.config.file-extension=properties
多環(huán)境配置
對應(yīng)的dataId nacos-demo-dev.properties
# bootstrap.properties spring.application.name=nacos-demo spring.cloud.nacos.config.server-addr=http://127.0.0.1:8848 spring.cloud.nacos.config.namespace=public spring.cloud.nacos.config.group=nacos-demo spring.cloud.nacos.config.file-extension=properties
#application.properties spring.profiles.active=dev
#application-dev.properties codetonight.user=codetonight
java 代碼使用
@RefreshScope 加在指定類上會自動刷新屬性。
本例中 codetonight.user沒有在配置中心配置,因此取配置文件中值。
codetonight.ak、codetonight.sk屬于敏感信息,我們將其放到配置中心,達(dá)到安全管控目的。
@RestController @RefreshScope public class NacosTestController { @Value(value = "${codetonight.ak}") private String ak; @Value(value = "${codetonight.sk}") private String token; @Value(value = "${codetonight.user}") private String user; @GetMapping("/getInfo") public String getInfo(){ return ak + "=>" + token + "=>" + user; } }
在Nacos控制臺修改對應(yīng)配置,查詢?nèi)罩?,?yīng)用監(jiān)聽到變更,再次請求配置已經(jīng)生效
總結(jié)
Nacos 作為配置中心,實(shí)現(xiàn)了配置的集中管理,當(dāng)配置更新時(shí),不需要重啟應(yīng)用立即生效,同時(shí)配置的修改具有版本管理功能,便于
審計(jì)和回滾等操作。此外對于一些敏感信息放到配置中心,通過權(quán)限控制增加安全性。
到此這篇關(guān)于Spring Cloud Nacos配置管理的文章就介紹到這了,更多相關(guān)Spring Cloud Nacos配置管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springCloud集成nacos config的過程
- SpringCloud-Nacos服務(wù)注冊與發(fā)現(xiàn)方式
- SpringCloud連接不上遠(yuǎn)程N(yùn)acos問題排查
- springcloud nacos的賦值均衡和動態(tài)刷新
- Alibaba?SpringCloud集成Nacos、openFeign實(shí)現(xiàn)負(fù)載均衡的解決方案
- SpringCloud Nacos集群搭建過程詳解
- SpringCloud及Nacos服務(wù)注冊IP選擇問題解決方法
- springcloud+nacos實(shí)現(xiàn)灰度發(fā)布示例詳解
- springCloud集成nacos啟動時(shí)報(bào)錯(cuò)原因排查
相關(guān)文章
spring boot 使用@Async實(shí)現(xiàn)異步調(diào)用方法
本篇文章主要介紹了spring boot 使用@Async實(shí)現(xiàn)異步調(diào)用方法,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-04-04Java中private關(guān)鍵字詳細(xì)用法實(shí)例以及解釋
這篇文章主要給大家介紹了關(guān)于Java中private關(guān)鍵字詳細(xì)用法實(shí)例以及解釋的相關(guān)資料,在Java中private是一種訪問修飾符,它可以用來控制類成員的訪問權(quán)限,文中將用法介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01String與Blob互轉(zhuǎn)和file文件與Blob互轉(zhuǎn)方式
這篇文章主要介紹了String與Blob互轉(zhuǎn)和file文件與Blob互轉(zhuǎn)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(2)
下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你2021-07-07Spring boot如何基于攔截器實(shí)現(xiàn)訪問權(quán)限限制
這篇文章主要介紹了Spring boot如何基于攔截器實(shí)現(xiàn)訪問權(quán)限限制,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10Spring獲取當(dāng)前類在容器中的beanname實(shí)現(xiàn)思路
這篇文章主要介紹了Spring獲取當(dāng)前類在容器中的beanname,實(shí)現(xiàn)思路只需繼承BeanNameAware接口,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07maven下mybatis-plus和pagehelp沖突問題的解決方法
這篇文章主要介紹了maven下mybatis-plus和pagehelp沖突的解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08