V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xuxueli
V2EX  ›  程序员

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

  •  
  •   xuxueli · 13 小时 53 分钟前 · 452 次点击

    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  
       13 小时 25 分钟前
    兄弟真有耐心,版版都来发,都没人理你了
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2483 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 02:52 · PVG 10:52 · LAX 18:52 · JFK 21:52
    ♥ Do have faith in what you're doing.