XXL-CONF v2.2.0 | 分布式配置中心与注册中心 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
xuxueli
V2EX    程序员

XXL-CONF v2.2.0 | 分布式配置中心与注册中心

  xuxueli 8 小时 36 分钟前 307 次点击

Release Notes

  • 1 、 [升级] 升级至 SpringBoot4 ;升级多项 maven 依赖至较新版本,如 springboot 、spring 、mybatis 、xxl-sso 等;
  • 2 、 [新增] 容灾降级:客户端会周期性同步配置到本地快照文件(新增配置项设置本地文件目录“xxl.conf.client.filepath”);在极端情况配置中心不可用时(如配置中心宕机),客户端降级使用本地配置快照文件,保障系统可用性;
  • 3 、 [增强] 一致性保障强化:强加建设 “启动预热+全量巡检+增量监听” 相结合的一致性保障策略。启动阶段主动初始化全量远程配置至本地,提供周期性配置比对巡检能力以及增量变更感知推动能力,确保配置数据准确性与一致性。
  • 4 、 [新增] 新增 Docker Compose 配置,支持一键配置启动调度中心集群;
  • 5 、 [优化] 配置编辑器:升级为 CodeMirror ,提升交互体验;
  • 6 、 [优化] 配置 Diff:支持行维度对比配置数据变更,提升配置安全及追溯效率;
  • 7 、 [重构] 配置监听重构为异步队列处理机制,避免耗时监听逻辑影响系统性能;
  • 8 、 [优化] 组件线程代码重构,提升性能以及可维护性;
  • 9 、 [优化] 增加主题皮肤选项并优化界面交互;
  • 10 、 [优化] 操作体验优化:表格交互调整为单行选中模式;禁用分页循环;优化分页限制文案;
  • 11 、 [优化] 交互优化:仪表板统计信息展示完善;新增配置默认选中当前服务;
  • 12 、 [优化] 重构项目依赖管理,将依赖版本统一到父级 pom ;

备注:

  • a 、该版本新增支持“启动预热”、“容灾降级”等新特性,客户端 SDK 依赖需要一并升级;
  • b 、该版本新增支持配置变更 Diff ,相关日志表需要新增字段,需要执行如下 SQL 脚本
// 表变更 SQL 脚本: alter table xxl_conf_data_log add old_value text not null comment '变更前,配置项 Value'; 

XXL- CONF 快速部署

XXL-CONF 支持以 Docker Compose 方式快速部署并启动。

// 1 、下载 XXL-CONF git clone --branch "$(curl -s https://api.github.com/repos/xuxueli/xxl-conf/releases/latest | jq -r .tag_name)" https://github.com/xuxueli/xxl-conf.git // 2 、构建 XXL-CONF mvn clean package -Dmaven.test.skip=true // 3 、启动 XXL-CONF MYSQL_PATH={自定义数据库持久化目录} docker compose up -d // 4 、停止 XXL-CONF docker compose down 

XXL- CONF 接入示例

XXL- CONF ,一行命令启动配置中心&注册中心,一站式提供动态配置管理、服务注册及发现能力(下文只演示配置中心能力)。 img_06.png

1 、XXL-CONF 接入配置:与 Spring 无缝集成,也支持无框架接入。

@Bean public SpringXxlConfBootstrap xxlConfBootstrap() { SpringXxlConfBootstrap xxlCOnfBootstrap= new SpringXxlConfBootstrap(); xxlConfBootstrap.setAppname(appname); xxlConfBootstrap.setEnv(env); xxlConfBootstrap.setAddress(address); xxlConfBootstrap.setAccesstoken(accesstoken); xxlConfBootstrap.setFilepath(filepath); return xxlConfBootstrap; } 

经过上述 2 步,已完成全部配置工作。

3 、客户端接入: 支持丰富配置获取方式,支持秒级&热更新

  • 3.1 、方式 1: API 方式( XxlConfHelper )
/** * API 方式 * * - 参考 "IndexController" 中 "XxlConfHelper.get("key")" 即可; * - 用法:代码中直接调用 API 即可,API 支持多数据类型,可快速获取各类型配置; * - 优点: * - API 编程,灵活方便; * - 支持多数据类型 * - 配置从配置中心实时加载,且底层存在动态推动更新,实效性有保障; * - 底层存在配置 LocalCache ,且存在缓存击穿等防护,性能有保障; */ String paramByApi = XxlConfHelper.get("sample.key01", null); 
  • 3.2 方式 2: 注解方式(@XxlConf )
/** * 注解方式 * * - 参考 "IndexController.paramByAnnotation" 属性配置; * - 用法:对象 Field 上加注解 ""@XxlConf";支持设置默认值、跨服务复用配置,以及设置是否动态刷新; * - 优点: * - 注解编程,简洁易用; * - 支持多数据类型 * - 配置从配置中心实时加载,且底层存在动态推动更新,实效性有保障; * - 注解属性自身承担数据存储职责,无外部请求逻辑,无性能风险; */ @XxlConf("sample.key02") public String paramByAnnotation; 
  • 3.3 、方式 3: 监听器方式( XxlConfListener )
/** * Listener / 监听器方式 * * - 参考 "IndexController" 中 "XxlConfHelper.addListener(...)" 即可; * - 用法:配置变更监听示例:可开发 Listener 逻辑,监听配置变更事件;可据此实现动态刷新 线程池、JDBC 链接池 等高级功能; * - 优点: * - 监听器方式,扩展性更强; * - 支持多数据类型 * - 配置从配置中心实时加载,且底层存在动态推动更新,实效性有保障; */ 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); } }); 

简介

XXL-CONF 是一个 分布式服务管理平台,作为服务 配置中心 与 注册中心,提供 动态配置管理、服务注册与发现 等核心能力;拥有 “轻量级、秒级实时推送、多环境、跨语言、跨机房、权限控制” 等特性。现已开放源代码,开箱即用。

特性:配置中心

img_07.png

  • 1 、简单易用: 接入灵活方便,一分钟上手;
  • 2 、轻量级: 仅依赖 DB 无其他三方依赖,搭建部署及接入简单,一分钟上手;
  • 3 、WebUI: 配置中心提供线上化管理界面, 通过 Web UI 在线操作配置数据,直观高效;
  • 4 、高可用/HA:配置中心支持集群部署,提升配置中心系统容灾和可用性;
  • 5 、高性能:得益于配置中心与客户端的本地缓存以及多级缓存设计,因此配置读取性能非常高;单机可承担高并发配置读取;
  • 6 、实时性保障: 系统设计内部广播机制,针对配置修改、增删等变更,支持秒级推送变更配置到客户端;
  • 7 、一致性保障:设计 “启动预热+全量巡检+增量监听” 相结合的一致性保障策略。启动阶段主动初始化全量远程配置至本地,提供周期性配置比对巡检能力以及增量变更感知推动能力,确保配置数据准确性与一致性。
  • 8 、动态热更新:配置数据变更后,客户端配置数据会实时动态更新、并生效,不需要重启服务机器;
  • 9 、容灾降级:客户端会周期性同步配置数据到本地配置快照文件,在极端情况配置中心不可用时(如配置中心宕机),客户端会降级使用本地配置快照文件,保障系统可用性;
  • 10 、多数据类型:支持多种数据类型配置,如:String 、Boolean 、Short 、Integer 、Long 、Float 、Double 等;
  • 11 、多接入方式:支持 "API 、 注解、Listener" 等多种方式获取配置,可灵活选择使用;
  • 12 、配置变更监听:支持自定义 Listener 逻辑,监听配置变更事件,比如可据此动态刷新 JDBC 连接池等高级功能;
  • 13 、多环境支持:支持自定义环境(命名空间),管理多个环境的的配置数据;环境之间相互隔离;
  • 14 、跨语言/OpenAPI:提供语言无关的 配置中心 OpenAPI ( RESTFUL 格式),提供拉取配置与实时感知配置变更能力,实现多语言支持;
  • 15 、跨机房:得益于配置中心系统设计,服务端为无状态服务,集群各节点提供对等的服务;因此异地跨机房部署时,只需要请求本机房配置中心即可,实现异地多活;
  • 16 、客户端断线重连强化:底层设计守护线程,周期性检测客户端连接、配置同步,提高异常情况下配置稳定性和时效性;
  • 17 、空配置处理:主动缓存 null 或不存在类型配置,避免配置请求穿透到远程配置 Server 引发雪崩问题;
  • 18 、访问令牌( AccessToken ):为提升系统安全性,服务端和客户端进行安全性校验,双方 AccessToken 匹配才允许通讯;
  • 19 、用户管理:支持在线添加和维护用户,包括普通用户和管理员两种类型用户,灵活管控系统权限;
  • 20 、配置权限控制;以项目为维度进行配置权限控制,管理员拥有全部项目权限,普通用户只有分配才拥有项目下配置的查看和管理权限;
  • 21 、历史版本回滚:配置变更后及时记录配置变更历史,支持历史配置版本对比及快速回溯;
  • 22 、容器化:提供官方 docker 镜像,并实时更新推送 DockerHub ,进一步实现产品开箱即用;

特性:注册中心

img_registry.png

  • 1 、简单易用: 接入灵活方便,一分钟上手;
  • 2 、轻量级: 仅依赖 DB 无其他三方依赖,搭建部署及接入简单,一分钟上手;
  • 3 、高可用/HA:注册中心支持集群部署,提升注册中心系统容灾和可用性;
  • 4 、高性能:得益于注册中心与客户端的本地缓存以及多级缓存设计,因此注册数据读取性能非常高;单机可承担高并发配置读取;
  • 5 、实时性: 借助内部广播机制,新服务上线、下线等变更,支持秒级推送变更配置到客户端;
  • 6 、多环境支持:支持自定义环境(命名空间),管理多个环境的的服务注册数据;环境之间相互隔离;
  • 7 、跨语言/OpenAPI:提供语言无关的 注册中心 OpenAPI ( RESTFUL 格式),提供服务 注册、注销、心跳、查询 等能力,实现多语言支持;
  • 8 、跨机房:得益于注册中心系统设计,服务端为无状态服务,集群各节点提供对等的服务;因此异地跨机房部署时,只需要请求本机房配置中心即可,实现异地多活;
  • 9 、多状态:服务内置多状态,支持丰富业务使用场景。正常状态=支持动态注册、发现,服务注册信息实时更新;锁定状态=人工维护注册信息,服务注册信息固定不变;禁用状态=禁止使用,服务注册信息固定为空;
  • 10 、访问令牌( AccessToken ):为提升系统安全性,服务端和客户端进行安全性校验,双方 AccessToken 匹配才允许通讯;
  • 11 、用户管理:支持在线添加和维护用户,包括普通用户和管理员两种类型用户,灵活管控系统权限;
  • 12 、容器化:提供官方 docker 镜像,并实时更新推送 dockerhub ,进一步实现产品开箱即用;
1 条回复    2026-01-02 21:26:24 +08:00
FrankAdler
    1
FrankAdler  
   8 小时 8 分钟前
兄弟真有耐心,版版都来发,都没人理你了
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     767 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 29ms UTC 21:35 PVG 05:35 LAX 13:35 JFK 16:35
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86