官方文檔
Nacos提供方用于儲存配置和其他元數(shù)據(jù)的key/value儲存,為分布式系統(tǒng)中的外部化配置提供服務(wù)器端和客戶端支持崔泵。使用Spring Cloud Alibaba Nacos Config
霎苗,您可以在nacos Server集群中管理你的Spring Cloud應(yīng)用的外部屬性配置。
Spring Cloud Config對比
三大優(yōu)勢:
- Spring Cloud Config大部分場景結(jié)合git使用,動態(tài)變更還需要依賴Spring Cloud Bus消息總線來通過所有的客戶端變化,不提供可視化界面。
- Nacos Config使用后長輪詢更新配置,一旦配置有變動后融击,通知Provider的過程非常的迅速,從速度上秒殺Spring Cloud原來的config幾條街
對比項目/配置中心 | Spring Cloud Config | Apollo | Nacos |
---|---|---|---|
開源時間 | 2014.9 | 2016.5 | 2018.6 |
配置實時推送 | 支持(Spring Cloud Bus) | 支持(HTTP長輪詢1s內(nèi)) | 支持HTTP輪詢1s |
版本管理 | 支持(Git) | 支持 | 支持 |
配置回滾 | 支持(Git) | 支持 | 支持 |
灰度發(fā)布 | 支持 | 支持 | 待支持 |
權(quán)限管理 | 支持 | 支持 | 待支持 |
多集群多環(huán)境 | 支持 | 支持 | 支持 |
監(jiān)聽查詢 | 支持 | 支持 | 支持 |
多語言 | 只支持Java | Go雳窟,C++尊浪,Python,Java封救,.net拇涤,OpenAPI | Python,Java誉结,Nodejs鹅士,OpenAPI |
分布式高可用最小集群數(shù)量 | Config-Server2+Git+MQ | Config2+Admin3+Portal*2+Mysql=8 | Nacos*3+Mysql=4 |
配置格式校驗 | 不支持 | 支持 | 支持 |
通訊協(xié)議 | HTTP和AMQP | HTTP | HTTP |
數(shù)據(jù)一致性 | Git保證數(shù)據(jù)一致性,Config-Server從Git讀取數(shù)據(jù) | 數(shù)據(jù)庫模擬消息隊列惩坑,Apollo定時讀消息 | HTTP異步通知 |
單機讀(tps) | 7(限流所致) | 9000 | 15000 |
單機寫(tps) | 5(限流所致) | 1100 | 1800 |
3節(jié)點讀 | 21(限流所致) | 27000 | 45000 |
3節(jié)點寫 | 5(限流所致) | 3300 | 5600 |
配置管理界面
配置列表
(有一小部分在之前的《Spring Cloud alibaba之Nacos》中介紹過掉盅,這里就不重復(fù)說了)
這里用來存儲項目中的所有的配置文件,點擊右邊的加號進行添加配置以舒。
- Data ID:可以理解為配置文件的名稱趾痘。Nacos 中的某個配置集的 ID。配置集 ID 是組織劃分配置的維度之一蔓钟。Data ID 通常用于組織劃分系統(tǒng)的配置集永票。一個系統(tǒng)或者應(yīng)用可以包含多個配置集,每個配置集都可以被一個有意義的名稱標(biāo)識滥沫。Data ID 通常采用類 Java 包(如 com.taobao.tc.refund.log.level)的命名規(guī)則保證全局唯一性侣集。此命名規(guī)則非強制。
- Group:Nacos 中的一組配置集兰绣,是組織配置的維度之一世分。通過一個有意義的字符串(如 Buy 或 Trade )對配置集進行分組,從而區(qū)分 Data ID 相同的配置集缀辩。當(dāng)您在 Nacos 上創(chuàng)建一個配置時臭埋,如果未填寫配置分組的名稱,則配置分組的名稱默認采用 DEFAULT_GROUP 雌澄。配置分組的常見場景:不同的應(yīng)用或組件使用了相同的配置類型,如 database_url 配置和 MQ_topic 配置杯瞻。
配置格式常用的有yaml或者properties镐牺。
配置內(nèi)容
user.name=趙毅梵
user.age=18
點擊發(fā)布,回到配置管理界面后魁莉,可以看見剛才新增的配置文件發(fā)布成功
權(quán)限控制
權(quán)限控制模塊可以新建用戶睬涧,并賦予用戶權(quán)限募胃。
用戶列表-創(chuàng)建用戶-填寫用戶信息
我這里創(chuàng)建了一個用戶名為
zhaoyifan
的用戶。我們給
zhaoyifan
用戶綁定一個角色名畦浓。角色管理-綁定角色
角色名最好見名知意痹束,這里設(shè)置的是
public_r&w
意思就是只有訪問public命名空間權(quán)限,并且可以讀和寫讶请。最后
zhaoyifan
用戶添加權(quán)限祷嘶。權(quán)限管理-添加權(quán)限
這里我新建了一個dev工作空間,資源選擇public夺溢。添加完成后登出论巍,登錄剛才新建的
zhaoyifan
用戶。
可見public工作空間是可以正常訪問并且修改的风响。當(dāng)點擊dev切換開發(fā)環(huán)境的時候就出現(xiàn)了彈窗阻斷切換嘉汰。
到這里,用戶權(quán)限就配置完成了状勤。
Client讀取配置
在文章開頭處點擊《官方文檔》鞋怀,跟著文檔的快速開始做就可以了,這里不過多重復(fù)持搜。
@RefreshScope
@Value注解可以獲取到配置中心的值密似,但是無法動態(tài)感知修改后的值,需要利用@RefreshScpoe注解
package com.mrZhao.config.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RefreshScope
@RequestMapping("/config")
@RestController
public class ConfigController {
@Value("${user.name}")
String name;
@RequestMapping("/show")
String show() {
return name;
}
}