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

XXL-CONF v1.7.0 | 分布式服务管理平台(配置中心 & 注册中心)

  •  
  •   xuxueli 264 天前 1645 次点击
    这是一个创建于 264 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Release Notes

    • 1 、 [升级] XXL-CONF 升级重构,XXL-CONF 是 分布式服务管理平台,作为服务 配置中心 与 注册中心,提供 动态配置管理、服务注册与发现 等核心能力;降低中间件认知及运维成本;
    • 2 、 [整合] XXL-CONF 整合 XXL-RPC 注册中心( xxl-rpc-admin )能力,提供轻量级服务动态注册及发现能力;
    • 3 、 [重构] XXL-CONF 客户端代码重构,模块化设计实现,提升可扩展性与稳定性;
    • 4 、 [优化] 客户端配置监控逻辑优化,避免异常情况下重试请求太频繁;
    • 5 、 [优化] 服务端非法 Key 空值处理,主动进行 Null 值缓存,避免缓存穿透;
    • 6 、 [优化] 日志优化:仅变更日志保留为 info 级别,非核心日志调整为 debug 级别;
    • 7 、 [优化] 全量配置同步线程优化,对齐起始时间,避免集群节点数据不一致;
    • 8 、 [修复] 小概率情况下底层通讯乱码问题修复;
    • 9 、 [升级] 升级多项 maven 依赖至较新版本,如 springboot 等;

    XXL- CONF 快速接入示例

    代码参考 github 仓库 /test 目录: https://github.com/xuxueli/xxl-conf/tree/master/xxl-conf-samples

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

    img_06.png

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

    @Bean public SpringXxlConfFactory xxlConfFactory() { SpringXxlConfFactory xxlCOnfFactory= new SpringXxlConfFactory(); xxlConfFactory.setAppname(appname); xxlConfFactory.setEnv(env); xxlConfFactory.setAddress(address); xxlConfFactory.setAccesstoken(accesstoken); return xxlConfFactory; } 

    经过上述 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 、### 3.2 方式 2: 注解方式(@XxlConf )
    /** * 注解方式 * * - 参考 "IndexController.paramByAnnotation" 属性配置; * - 用法:对象 Field 上加注解 ""@XxlConf";支持设置默认值、跨服务复用配置,以及设置是否动态刷新; * - 优点: * - 注解编程,简洁易用; * - 支持多数据类型 * - 配置从配置中心实时加载,且底层存在动态推动更新,实效性有保障; * - 注解属性自身承担数据存储职责,无外部请求逻辑,无性能风险; */ @XxlConf("sample.key02") public String paramByAnnotation; 
    • 3.3 、方式 2: 监听器方式( 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 、高可用/HA:配置中心支持集群部署,提升配置中心系统容灾和可用性;
    • 4 、高性能:得益于配置中心与客户端的本地缓存以及多级缓存设计,因此配置读取性能非常高;单机可承担高并发配置读取;
    • 5 、实时性: 借助内部广播机制,新服务上线、下线等变更,可以在 1s 内推送给客户端;
    • 6 、线上化管理: 配置中心提供线上化管理界面, 通过 Web UI 在线操作配置数据,直观高效;
    • 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 、配置快照:客户端从配置中心获取到的配置数据后,会周期性缓存到本地快照文件中,当从配置中心获取配置失败时,将会使用使用本地快照文件中的配置数据;提高系统可用性;
    • 23 、容器化:提供官方 docker 镜像,并实时更新推送 dockerhub ,进一步实现产品开箱即用;

    特性:注册中心

    img_registry.png

    • 1 、简单易用: 接入灵活方便,一分钟上手;
    • 2 、轻量级: 仅依赖 DB 无其他三方依赖,搭建部署及接入简单,一分钟上手;
    • 3 、高可用/HA:注册中心支持集群部署,提升注册中心系统容灾和可用性;
    • 4 、高性能:得益于注册中心与客户端的本地缓存以及多级缓存设计,因此注册数据读取性能非常高;单机可承担高并发配置读取;
    • 5 、实时性: 借助内部广播机制,新服务上线、下线等变更,可以在 1s 内推送给客户端;
    • 6 、多环境支持:支持自定义环境(命名空间),管理多个环境的的服务注册数据;环境之间相互隔离;
    • 7 、跨语言/OpenAPI:提供语言无关的 注册中心 OpenAPI ( RESTFUL 格式),提供服务 注册、注销、心跳、查询 等能力,实现多语言支持;
    • 8 、跨机房:得益于注册中心系统设计,服务端为无状态服务,集群各节点提供对等的服务;因此异地跨机房部署时,只需要请求本机房配置中心即可,实现异地多活;
    • 9 、多状态:服务内置多状态,支持丰富业务使用场景。正常状态=支持动态注册、发现,服务注册信息实时更新;锁定状态=人工维护注册信息,服务注册信息固定不变;禁用状态=禁止使用,服务注册信息固定为空;
    • 10 、访问令牌( AccessToken ):为提升系统安全性,服务端和客户端进行安全性校验,双方 AccessToken 匹配才允许通讯;
    • 11 、用户管理:支持在线添加和维护用户,包括普通用户和管理员两种类型用户,灵活管控系统权限;
    • 12 、容器化:提供官方 docker 镜像,并实时更新推送 dockerhub ,进一步实现产品开箱即用;
    1 条回复    2025-01-25 00:21:32 +08:00
    quzard
        1
    quzard  
       264 天前 via iPhoe
    xxl 的日志能提供一下按数量压缩归档的机制吗?对日志采集压力比较大
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3218 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 11:27 PVG 19:27 LAX 04:27 JFK 07:27
    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