# configMenagement
**Repository Path**: cnopens/configMenagement
## Basic Information
- **Project Name**: configMenagement
- **Description**: 基于zookeeper的配置中心,实现静态数据中心化配置管理,zookeeper的web管理,集群和分布式应用的配置管理
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 56
- **Created**: 2015-10-20
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
### 基于Zookeeper的工程文件管理配置中心
在大型集群和分布式应用中,配置不宜分散到集群结点中,或者工程数量较多管理混乱,这时配置应该集中管理,这个配置中心基于使用简单,功能完善为目标,是个轻量级的配置中心,当配置有变化了,无需重启服务,变化了的值会自动下发给各个在使用的服务上,配置数据存于本地缓存,因为是访问内存所以速度很快,有定时刷新缓存和动态监听值的变化来刷新缓存两种方式。同时通过缓存保证了程序运行中zk挂了也不影响服务运行,当然zk号称不会挂的。节点可使用安全性管理,一个用户创建的节点,只有授权的用户可以访问,只有这个用户有权限编辑修改(不过可以被任何人删除,这也是我对zk权限管理不太能理解的地方)。
工程有api和web管理界面组成,由java开发,maven编译,有任何疑问欢迎指正,也欢迎有想法来完善这个配置中心的朋友一起加入进来完善它。
邮箱:hezui@163.com
QQ:379049886
设计框架:springmvc、freemarker、bootstrap和zkclient
### 一。本地编译好confiApi的工程后,就可以在工程中导入api开始使用:
**1.maven包导入**
```
com.zk.config.api
configApi
0.0.1-SNAPSHOT
```
**2.spring配置**
```
classpath:config.properties
```
**3.接下来可以像spring导普通属性文件一样简洁的使用zookeeper上的配置数据了。**
如:spring配置文件中的bean可以使用${user}这样的常规注入方式注入zk上的值,如下所示:
```
```
同样类文件中也可以这样注入

注意普通注入的值是创建对象后一次性缓存的值,要使用监听的动态变化的值,请使用注入的Properties对象获取(如这里定义的configProperties),不同节点中的文件有key重复的请使用configClient.getZkCache().getPropertiesValue(nodePath,key)获取。zookeeper上名称带.properties后缀的节点会自动识别成Properties文件,之外的都做普通文件处理,通过configClient.getZkCache().getFileValue(nodePath)来获取节点文件内容。
### 二.web管理界面
这实际是zookeeper的web管理界面,设计参照了花花的[zookeeper-web - 在线 zookeeper管理工具](https://git.oschina.net/crystony/zookeeper-web),采用新界面,添加节点树形文件管理功能和备份还原功能。
注意要先编译configApi然后关闭此工程,再启动configWeb的服务。
打开节点安全性管理:配置文件config.properties中的参数设置为zookeeper.safe.permiss.open=true,默认值是false做普通web管理,设为true之后创建的节点需用户密码授权才能操作。





### 问题和建议
邮箱:hezui@163.com
QQ:379049886