同步操作将从 hezui/configMenagement 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
在大型集群和分布式应用中,配置不宜分散到集群结点中,或者工程数量较多管理混乱,这时配置应该集中管理,这个配置中心基于使用简单,功能完善为目标,当配置有变化了,无需重启服务,变化了的值会自动下发给各个在使用的服务上,配置数据存于本地缓存,因为是访问内存所以速度很快,有定时刷新缓存和动态监听值的变化来刷新缓存两种方式。同时通过缓存保证了程序运行中zk挂了也不影响服务运行,当然zk号称不会挂的。 工程有api和web管理界面组成,由java开发,maven编译,有任何疑问欢迎指正,也欢迎有想法来完善这个配置中心的朋友一起加入进来完善它。实际开发中可能需要建表来维护配置,下期设计考虑是否加入嵌入式数据库,实现在Zookeeper上直接建表维护工程配置。
QQ:398995774
设计框架:springmvc、freemarker、bootstrap和zkclient
1.maven包导入
<dependency>
<groupId>com.zk.config.api</groupId>
<artifactId>configApi</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
2.spring配置
<bean id="configClient" class="com.zk.config.api.client.ConfigClient"
scope="singleton">
<constructor-arg index="0" value="192.168.3.6:2181,192.168.3.7:2181/configManagement/configWeb/dev" /> <!-- zookeeper的Host+配置管理根目录名+工程名+分支(如:dev,test,prod) -->
<constructor-arg index="1" value="10000" /> <!-- zookeeper初始化连接超时参数connectTimeout,单位毫秒 -->
<constructor-arg index="4" value="0" /> <!-- 定时刷新缓存数据的时间间隔,单位毫秒,0是不刷新 -->
<constructor-arg index="5" value="false" /> <!-- 是否打开对节点的动态监听 -->
</bean>
<!-- 导入属性文件 -->
<bean id="configProperties" class="com.zk.config.api.factory.PropertiesFactoryBean">
<property name="configClient" ref="configClient" /> <!-- 导入zookeeper里节点后缀为.properties的文件-->
<property name="locations">
<list>
<value>classpath:conectionStrings.properties</value> <!-- 还可以其他导入本地文件 -->
<value>classpath:user.properties</value>
</list>
</property>
<property name="localOverride" value="true" /> <!-- 是否覆盖本地文件 -->
</bean>
3.接下来可以像spring导普通属性文件一样简洁的使用zookeeper上的配置数据了。 如:配置文件中可以使用#{configProperties['mysql.url']}这样的注入配置,类文件也这样注入
注意上面的值是创建对象后一次性缓存的值,要使用监听的动态变化的值,在程序中使用configClient.getZkCache().getPropertiesValue(key)获取。zookeeper上存储的节点名带.properties后缀自动识别成Properties文件,否则做普通文件处理,只能根据节点路径获取到整个文件内容。
这实际是zookeeper的web管理界面,设计参照了花花的zookeeper-web - 在线 zookeeper管理工具,采用新界面,添加节点树形文件管理功能和备份还原功能。
QQ:398995774
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。