XXL-CONF 详细介绍
- 1、需要手动修改properties文件;
- 2、需要重新编译打包;
- 3、需要重启线上服务器 (项目集群时,更加令人崩溃) ;
- 4、配置生效不及时: 因为流程复杂, 新的配置生效需要经历比较长的时间才可以生效;
- 5、不同环境上线包不一致: 例如JDBC连接, 不同环境需要差异化配置;
- 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