Release Notes
- 1、【升級(jí)】XXL-CONF 升級(jí)重構(gòu),XXL-CONF 是 分布式服務(wù)管理平臺(tái),作為服務(wù) 配置中心 與 注冊(cè)中心,提供 動(dòng)態(tài)配置管理、服務(wù)注冊(cè)與發(fā)現(xiàn) 等核心能力;降低中間件認(rèn)知及運(yùn)維成本;
- 2、【整合】XXL-CONF 整合XXL-RPC注冊(cè)中心(xxl-rpc-admin)能力,提供輕量級(jí)服務(wù)動(dòng)態(tài)注冊(cè)及發(fā)現(xiàn)能力;
- 3、【重構(gòu)】XXL-CONF 客戶(hù)端代碼重構(gòu),模塊化設(shè)計(jì)實(shí)現(xiàn),提升可擴(kuò)展性與穩(wěn)定性;
- 4、【優(yōu)化】客戶(hù)端配置監(jiān)控邏輯優(yōu)化,避免異常情況下重試請(qǐng)求太頻繁;
- 5、【優(yōu)化】服務(wù)端非法Key空值處理,主動(dòng)進(jìn)行Null值緩存,避免緩存穿透;
- 6、【優(yōu)化】日志優(yōu)化:僅變更日志保留為info級(jí)別,非核心日志調(diào)整為debug級(jí)別;
- 7、【優(yōu)化】全量配置同步線程優(yōu)化,對(duì)齊起始時(shí)間,避免集群節(jié)點(diǎn)數(shù)據(jù)不一致;
- 8、【修復(fù)】小概率情況下底層通訊亂碼問(wèn)題修復(fù);
- 9、【升級(jí)】升級(jí)多項(xiàng)maven依賴(lài)至較新版本,如springboot等;
XXL- CONF 快速接入示例
代碼參考github倉(cāng)庫(kù) /test 目錄:https://github.com/xuxueli/xxl-conf/tree/master/xxl-conf-samples
1、XXL- CONF搭建:一行命令啟動(dòng)配置中心&注冊(cè)中心,分布式提供動(dòng)態(tài)配置管理、服務(wù)注冊(cè)及發(fā)現(xiàn)能力(下文只演示配置中心能力)。

img_06.png
2、XXL-CONF接入配置:與Spring無(wú)縫集成,也支持無(wú)框架接入。
@Bean
public SpringXxlConfFactory xxlConfFactory() {
SpringXxlConfFactory xxlConfFactory = new SpringXxlConfFactory();
xxlConfFactory.setAppname(appname);
xxlConfFactory.setEnv(env);
xxlConfFactory.setAddress(address);
xxlConfFactory.setAccesstoken(accesstoken);
return xxlConfFactory;
}
經(jīng)過(guò)上述2步,已完成全部配置工作。
3、客戶(hù)端接入: 豐富配置獲取方式,支持秒級(jí)&熱更新
- 3.1、方式1: API方式(XxlConfHelper)
/**
* API方式
*
* - 參考 "IndexController" 中 "XxlConfHelper.get("key")" 即可;
* - 用法:代碼中直接調(diào)用API即可,API支持多數(shù)據(jù)類(lèi)型,可快速獲取各類(lèi)型配置;
* - 優(yōu)點(diǎn):
* - API編程,靈活方便;
* - 支持多數(shù)據(jù)類(lèi)型
* - 配置從配置中心實(shí)時(shí)加載,且底層存在動(dòng)態(tài)推動(dòng)更新,實(shí)效性有保障;
* - 底層存在配置LocalCache,且存在緩存擊穿等防護(hù),性能有保障;
*/
String paramByApi = XxlConfHelper.get("sample.key01", null);
- 3.2、### 3.2 方式2: 注解方式(@XxlConf)
/**
* 注解方式
*
* - 參考 "IndexController.paramByAnnotation" 屬性配置;
* - 用法:對(duì)象Field上加注解 ""@XxlConf";支持設(shè)置默認(rèn)值、跨服務(wù)復(fù)用配置,以及設(shè)置是否動(dòng)態(tài)刷新;
* - 優(yōu)點(diǎn):
* - 注解編程,簡(jiǎn)潔易用;
* - 支持多數(shù)據(jù)類(lèi)型
* - 配置從配置中心實(shí)時(shí)加載,且底層存在動(dòng)態(tài)推動(dòng)更新,實(shí)效性有保障;
* - 注解屬性自身承擔(dān)數(shù)據(jù)存儲(chǔ)職責(zé),無(wú)外部請(qǐng)求邏輯,無(wú)性能風(fēng)險(xiǎn);
*/
@XxlConf("sample.key02")
public String paramByAnnotation;
- 3.3、方式2: 監(jiān)聽(tīng)器方式(XxlConfListener)
/**
* Listener / 監(jiān)聽(tīng)器方式
*
* - 參考 "IndexController" 中 "XxlConfHelper.addListener(...)" 即可;
* - 用法:配置變更監(jiān)聽(tīng)示例:可開(kāi)發(fā)Listener邏輯,監(jiān)聽(tīng)配置變更事件;可據(jù)此實(shí)現(xiàn)動(dòng)態(tài)刷新 線程池、JDBC鏈接池 等高級(jí)功能;
* - 優(yōu)點(diǎn):
* - 監(jiān)聽(tīng)器方式,擴(kuò)展性更強(qiáng);
* - 支持多數(shù)據(jù)類(lèi)型
* - 配置從配置中心實(shí)時(shí)加載,且底層存在動(dòng)態(tài)推動(dòng)更新,實(shí)效性有保障;
*/
XxlConfHelper.addListener("sample.key03", new XxlConfListener(){
@Override
public void onChange(String appname, String key, String value) throws Exception {
paramByListener = value;
logger.info("XxlConfListener 配置變更事件通知:key={}, value={}", key, value);
}
});
簡(jiǎn)介
XXL-CONF 是一個(gè) 分布式服務(wù)管理平臺(tái),作為服務(wù) 配置中心 與 注冊(cè)中心,提供 動(dòng)態(tài)配置管理、服務(wù)注冊(cè)與發(fā)現(xiàn) 等核心能力;擁有 “輕量級(jí)、秒級(jí)實(shí)時(shí)推送、多環(huán)境、跨語(yǔ)言、跨機(jī)房、權(quán)限控制” 等特性。現(xiàn)已開(kāi)放源代碼,開(kāi)箱即用。
特性:配置中心

img_07.png
- 1、簡(jiǎn)單易用: 接入靈活方便,一分鐘上手;
- 2、輕量級(jí): 僅依賴(lài)DB無(wú)其他三方依賴(lài),搭建部署及接入簡(jiǎn)單,一分鐘上手;
- 3、高可用/HA:配置中心支持集群部署,提升配置中心系統(tǒng)容災(zāi)和可用性;
- 4、高性能:得益于配置中心與客戶(hù)端的本地緩存以及多級(jí)緩存設(shè)計(jì),因此配置讀取性能非常高;單機(jī)可承擔(dān)高并發(fā)配置讀??;
- 5、實(shí)時(shí)性: 借助內(nèi)部廣播機(jī)制,新服務(wù)上線、下線等變更,可以在1s內(nèi)推送給客戶(hù)端;
- 6、線上化管理: 配置中心提供線上化管理界面, 通過(guò)Web UI在線操作配置數(shù)據(jù),直觀高效;
- 8、動(dòng)態(tài)更新:配置數(shù)據(jù)變更后,客戶(hù)端配置數(shù)據(jù)會(huì)實(shí)時(shí)動(dòng)態(tài)更新、并生效,不需要重啟服務(wù)機(jī)器;
- 9、最終一致性:底層借助內(nèi)置廣播機(jī)制,保障配置數(shù)據(jù)的最終一致性,從而保證配置數(shù)據(jù)的同步;
- 10、多數(shù)據(jù)類(lèi)型配置:支持多種數(shù)據(jù)類(lèi)型配置,如:String、Boolean、Short、Integer、Long、Float、Double 等;
- 11、豐富配置接入方式:支持 "API、 注解、Listener" 等多種方式獲取配置,可靈活選擇使用;
- 12、配置變更監(jiān)聽(tīng)功能:支持自定義Listener邏輯,監(jiān)聽(tīng)配置變更事件,可據(jù)此動(dòng)態(tài)刷新JDBC連接池等高級(jí)功能;
- 13、多環(huán)境支持:支持自定義環(huán)境(命名空間),管理多個(gè)環(huán)境的的配置數(shù)據(jù);環(huán)境之間相互隔離;
- 14、跨語(yǔ)言/OpenAPI:提供語(yǔ)言無(wú)關(guān)的 配置中心 OpenAPI(RESTFUL 格式),提供拉取配置與實(shí)時(shí)感知配置變更能力,實(shí)現(xiàn)多語(yǔ)言支持;
- 15、跨機(jī)房:得益于配置中心系統(tǒng)設(shè)計(jì),服務(wù)端為無(wú)狀態(tài)服務(wù),集群各節(jié)點(diǎn)提供對(duì)等的服務(wù);因此異地跨機(jī)房部署時(shí),只需要請(qǐng)求本機(jī)房配置中心即可,實(shí)現(xiàn)異地多活;
- 16、客戶(hù)端斷線重連強(qiáng)化:底層設(shè)計(jì)守護(hù)線程,周期性檢測(cè)客戶(hù)端連接、配置同步,提高異常情況下配置穩(wěn)定性和時(shí)效性;
- 17、空配置處理:主動(dòng)緩存null或不存在類(lèi)型配置,避免配置請(qǐng)求穿透到遠(yuǎn)程配置Server引發(fā)雪崩問(wèn)題;
- 18、訪問(wèn)令牌(AccessToken):為提升系統(tǒng)安全性,服務(wù)端和客戶(hù)端進(jìn)行安全性校驗(yàn),雙方AccessToken匹配才允許通訊;
- 19、用戶(hù)管理:支持在線添加和維護(hù)用戶(hù),包括普通用戶(hù)和管理員兩種類(lèi)型用戶(hù),靈活管控系統(tǒng)權(quán)限;
- 20、配置權(quán)限控制;以項(xiàng)目為維度進(jìn)行配置權(quán)限控制,管理員擁有全部項(xiàng)目權(quán)限,普通用戶(hù)只有分配才擁有項(xiàng)目下配置的查看和管理權(quán)限;
- 21、歷史版本回滾:配置變更后及時(shí)記錄配置變更歷史,支持歷史配置版本對(duì)比及快速回溯;
- 22、配置快照:客戶(hù)端從配置中心獲取到的配置數(shù)據(jù)后,會(huì)周期性緩存到本地快照文件中,當(dāng)從配置中心獲取配置失敗時(shí),將會(huì)使用使用本地快照文件中的配置數(shù)據(jù);提高系統(tǒng)可用性;
- 23、容器化:提供官方docker鏡像,并實(shí)時(shí)更新推送dockerhub,進(jìn)一步實(shí)現(xiàn)產(chǎn)品開(kāi)箱即用;
特性:注冊(cè)中心

img_registry.png
- 1、簡(jiǎn)單易用: 接入靈活方便,一分鐘上手;
- 2、輕量級(jí): 僅依賴(lài)DB無(wú)其他三方依賴(lài),搭建部署及接入簡(jiǎn)單,一分鐘上手;
- 3、高可用/HA:注冊(cè)中心支持集群部署,提升注冊(cè)中心系統(tǒng)容災(zāi)和可用性;
- 4、高性能:得益于注冊(cè)中心與客戶(hù)端的本地緩存以及多級(jí)緩存設(shè)計(jì),因此注冊(cè)數(shù)據(jù)讀取性能非常高;單機(jī)可承擔(dān)高并發(fā)配置讀?。?/li>
- 5、實(shí)時(shí)性: 借助內(nèi)部廣播機(jī)制,新服務(wù)上線、下線等變更,可以在1s內(nèi)推送給客戶(hù)端;
- 6、多環(huán)境支持:支持自定義環(huán)境(命名空間),管理多個(gè)環(huán)境的的服務(wù)注冊(cè)數(shù)據(jù);環(huán)境之間相互隔離;
- 7、跨語(yǔ)言/OpenAPI:提供語(yǔ)言無(wú)關(guān)的 注冊(cè)中心 OpenAPI(RESTFUL 格式),提供服務(wù) 注冊(cè)、注銷(xiāo)、心跳、查詢(xún) 等能力,實(shí)現(xiàn)多語(yǔ)言支持;
- 8、跨機(jī)房:得益于注冊(cè)中心系統(tǒng)設(shè)計(jì),服務(wù)端為無(wú)狀態(tài)服務(wù),集群各節(jié)點(diǎn)提供對(duì)等的服務(wù);因此異地跨機(jī)房部署時(shí),只需要請(qǐng)求本機(jī)房配置中心即可,實(shí)現(xiàn)異地多活;
- 9、多狀態(tài):服務(wù)內(nèi)置多狀態(tài),支持豐富業(yè)務(wù)使用場(chǎng)景。正常狀態(tài)=支持動(dòng)態(tài)注冊(cè)、發(fā)現(xiàn),服務(wù)注冊(cè)信息實(shí)時(shí)更新;鎖定狀態(tài)=人工維護(hù)注冊(cè)信息,服務(wù)注冊(cè)信息固定不變;禁用狀態(tài)=禁止使用,服務(wù)注冊(cè)信息固定為空;
- 10、訪問(wèn)令牌(AccessToken):為提升系統(tǒng)安全性,服務(wù)端和客戶(hù)端進(jìn)行安全性校驗(yàn),雙方AccessToken匹配才允許通訊;
- 11、用戶(hù)管理:支持在線添加和維護(hù)用戶(hù),包括普通用戶(hù)和管理員兩種類(lèi)型用戶(hù),靈活管控系統(tǒng)權(quán)限;
- 12、容器化:提供官方docker鏡像,并實(shí)時(shí)更新推送dockerhub,進(jìn)一步實(shí)現(xiàn)產(chǎn)品開(kāi)箱即用;