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搭建:一行命令启动配置中心&注册中心,分布式提供动态配置管理、服务注册及发现能力(下文只演示配置中心能力)。
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 是一个 分布式服务管理平台,作为服务 配置中心 与 注册中心,提供 动态配置管理、服务注册与发现 等核心能力;拥有 “轻量级、秒级实时推送、多环境、跨语言、跨机房、权限控制” 等特性。现已开放源代码,开箱即用。
特性:配置中心
- 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,进一步实现产品开箱即用;
特性:注册中心
- 1、简单易用: 接入灵活方便,一分钟上手;
- 2、轻量级: 仅依赖DB无其他三方依赖,搭建部署及接入简单,一分钟上手;
- 3、高可用/HA:注册中心支持集群部署,提升注册中心系统容灾和可用性;
- 4、高性能:得益于注册中心与客户端的本地缓存以及多级缓存设计,因此注册数据读取性能非常高;单机可承担高并发配置读取;
- 5、实时性: 借助内部广播机制,新服务上线、下线等变更,可以在1s内推送给客户端;
- 6、多环境支持:支持自定义环境(命名空间),管理多个环境的的服务注册数据;环境之间相互隔离;
- 7、跨语言/OpenAPI:提供语言无关的 注册中心 OpenAPI(RESTFUL 格式),提供服务 注册、注销、心跳、查询 等能力,实现多语言支持;
- 8、跨机房:得益于注册中心系统设计,服务端为无状态服务,集群各节点提供对等的服务;因此异地跨机房部署时,只需要请求本机房配置中心即可,实现异地多活;
- 9、多状态:服务内置多状态,支持丰富业务使用场景。正常状态=支持动态注册、发现,服务注册信息实时更新;锁定状态=人工维护注册信息,服务注册信息固定不变;禁用状态=禁止使用,服务注册信息固定为空;
- 10、访问令牌(AccessToken):为提升系统安全性,服务端和客户端进行安全性校验,双方AccessToken匹配才允许通讯;
- 11、用户管理:支持在线添加和维护用户,包括普通用户和管理员两种类型用户,灵活管控系统权限;
- 12、容器化:提供官方docker镜像,并实时更新推送dockerhub,进一步实现产品开箱即用;