分布式配置管理平台XXL-CONF

XXL-CONF 详细介绍

背景(为什么需要使用xxl-conf)
常规项目开发过程中, 通常会将配置信息位于在项目resource目录下的properties文件文件中, 配置信息通常包括有: jdbc地址配置、redis地址配置、活动开关、阈值配置、黑白名单……等等。使用properties维护配置信息将会导致以下几个问题:
  • 1、需要手动修改properties文件;
  • 2、需要重新编译打包;
  • 3、需要重启线上服务器 (项目集群时,更加令人崩溃) ;
  • 4、配置生效不及时: 因为流程复杂, 新的配置生效需要经历比较长的时间才可以生效;
  • 5、不同环境上线包不一致: 例如JDBC连接, 不同环境需要差异化配置;
最开始接触spring项目时,觉得*项目中.properties配置文件还是挺好用的,虽然在最开始实用期间经常还会报错${***}等配置文件找不到,后来还是解决了。但是在后来项目业务越来越清晰,业务拆解出多个项目,正式环境,测试环境多种配置文件交替切换,导致线上部署项目可能也出现测试配置文件。为了解决这种痛点,我这里强烈推荐给大家一种配置管理平台XXL-CONF。
特性
  • 1、简单易用: 上手非常简单, 只需要引入maven依赖和一行配置即可;
  • 2、在线管理: 提供配置管理中心, 支持在线管理配置信息;(有后台管理系统,随时查看配置信息,更改配置信息因为使用Zookeeper,并且注册watch事件,控制台更改数值以后,客户端会收到实时推送配置信息,更新本地值,不需要重启机器
  • 3、高性能: 使用Encache做本地缓存,效率高于,不会存在性能问题;
  • 4、配置备份: 配置数据首先会保存在Zookeeper中, 同时, 在MySQL中会对配置信息做备份, 保证配置数据的安全性;
  • 5、HA: 配置中心基于Zookeeper集群, 只要集群节点保证存活数量大于N/2+1, 就可保证服务稳定, 避免单点风险;
  • 6、分布式: 可方便的接入线上分布式部署的各个业务线, 统一管理配置信息;
  • 7、配置共享: 平台中的配置信息针对各个业务线是平等的, 各个业务线可以共享配置中心的配置信息, 当然也可以配置业务内专属配置信息;
  • 8、配置分组: 支持对配置进行分组管理, 每条配置将会生成全局唯一标示GroupKey,在client端使用时,需要通过该值匹配对应的配置信息;

架构图:(引用官方架构图)

官网地址:https://github.com/xuxueli/xxl-conf

目前支持 java平台,后续官方可能扩展。

项目目录如下:

  • xxl-conf-admin:配置管理中心
  • xxl-conf-core:公共依赖
  • xxl-conf-example: 接入XXl-CONF的Demo项目
  • db用于xxl-conf-admin操作保存数据,删除数据,修改数据以后同步到数据中(这里也就是上述介绍过的数据备份性,数据实际保存在数据库中(我这里使用的是mysql))

接下来介绍大家怎么使用:

1、首先启动Zookeeper(xxl-conf依赖zk)

ZK之watcher普及(来源官方文档,以及网络博客)

1、可以注册watcher的方法:getData、exists、getChildren。
2、可以触发watcher的方法:create、delete、setData。连接断开的情况下触发的watcher会丢失。
3、一个Watcher实例是一个回调函数,被回调一次后就被移除了。如果还需要关注数据的变化,需要再次注册watcher。
4、New ZooKeeper时注册的watcher叫default watcher,它不是一次性的,只对client的连接状态变化作出反应。(推荐ZK初始化时, 主动Watcher如exists)
5、实现永久监听: 由于zookeeper是一次性监听,所以我们必须在wather的process方法里面再设置监听。
6、getChildren("/path")监视/path的子节点,如果(/path)自己删了,也会触发NodeDeleted事件。

2、引入jar包maven 中央仓库地址

<dependency>
  <groupId>com.xuxueli</groupId>
  <artifactId>xxl-conf-core</artifactId>
  <version>1.3.0</version>
</dependency>
<dependency>
 <groupId>net.sf.ehcache</groupId>
 <artifactId>ehcache</artifactId>
 <version>2.9.1</version>
</dependency>

前置工作完毕,现在开始使用(以Spring项目为例子)

1、在spring配置文件中加入

<!-- XXL-CONF配置解析器 --><bean id="xxlConfPropertyPlaceholderConfigurer" class="com.xxl.conf.core.spring.XxlConfPropertyPlaceholderConfigurer" />

2、在配置文件中引用值方式是${xxxx},实例如下:

大家可能会有疑问,例如${jdbc.mysqlurl}这些值是在哪里设置的呢?接下来给大家介绍xxl-con的后台管理系统

项目:xxl-conf-admin
作用:查询和管理线上配置信息

1、使用maven编译xxl-conf-admin项目,会在项目target目录下,生成一个war包(war包丢到web应用服务器例如tomcat下可以直接运行)

2、xxl-conf-admin连接Zookeeper,因为admin是依赖core的,我们大家一起看看core的源代码。

以上是core的官方代码,这里是获取配置文件中的值。

配置文件中是连接的zk地址。

这里我对源代码进行部分修改,因为上述源代码中只是基于linux等操作系统。我本地运行环境是windows,根据上述目录找不到此文件目录,这样会导致连接不上zk,项目无法运行。这里我把

private static final String ZK_ADDRESS_FILE = "/data/webapps/xxl-conf.properties";

修改为

private static final String ZK_ADDRESS_FILE =System.getProperty("os.name").equals("Linux")?"/data/webapps/xxl-conf.properties": "C:/xxl-conf.properties";

如果是windows操作系统,则在c盘根目录找到xxl-conf.properties配置文件。

更改为源代码以后需要重新编译core项目跟admin项目

3、 配置jdbc数据源,数据备份

配置“JDBC链接”

  • 配置文件位置: 源码/xxl-conf/xxl-conf-admin/src/main/resources/jdbc.properties
  • 作用: 配置数据在数据库中的备份

4、配置后台管理登录用户名,密码

配置“登录账号和密码”

  • 配置文件位置: 源码/xxl-conf/xxl-conf-admin/src/main/resources/config.properties
后台管理截图

增加分组:
增加配置:

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值