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

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,进一步实现产品开箱即用;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,039评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,223评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,916评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,009评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,030评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,011评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,934评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,754评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,202评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,433评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,590评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,321评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,917评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,568评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,738评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,583评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,482评论 2 352

推荐阅读更多精彩内容