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 ,进一步实现产品开箱即用;
举报· 206 次点击
登录 注册 站外分享
1 条回复  
quzard 小成 6 小时前
xxl 的日志能提供一下按数量压缩归档的机制吗?对日志采集压力比较大
返回顶部