XXL-CONF v1.7.0 | 分布式服務(wù)管理平臺(tái)(配置中心 & 注冊(cè)中心)

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)箱即用;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容