基于zookeeper实现系统配置中心

服务器端:前端

1、 写做目的

因为目前本公司产品众多,而且因为业务上的需求增长,致使目前公司产品愈来愈复杂,各个业务系统的公共配置以及应用本身的配置都存储与各个属性文件管理,给运维人员带来了极大的工做量。mysql

2、服务端介绍

1.整体介绍

 sysware配置中心服务端,采用zookeeper用来存储公共以及各业务系统的配置属性。而且提供前端界面进行维护这些属性配置。采用mysql数据进行数据的持久化。redis

 

2.各模块介绍

  1)    zookeepersql

 对于系统中各配置的存储,目前规划的存储结构以下:数据库

节点说明服务器

描述app

common 公共配置
p2m p2m系统私有配置
ke ke系统私有配置
eap eap系统私有配置
edm edm系统私有配置

节点说明运维

描述maven

key 配置属性键
value 配置属性值

 

建议:为了可以区分各个业务系统的配置,建议规则为使用:sysware   +   点  +   业务系统名称  + 点 +  服务名称 +   点 +keyspa

          例如:在P2M系统中须要配置rabbitMQ的名称,便可为:sysware.p2m.rabbitmq.username

                     公共的配置即将有服务端portal录入,规则为sysware.common开头的key

2)    DB

      服务端数据库采用的mysql数据,主要用来防止zookeeper服务出现异常等不肯定因素致使数据丢失,因此在mysql数据中也存储了一份做为备份,以备恢复数据。

3)   服务端 portal

       方便运维人员进行zookeeper上数据的管理,提供了服务端portal界面操做。

4)    client

        提供与各个业务系统的配置中心客户端,以jar的形式提供,各业务系统能够获取配置中心数据。

3、sysware配置中心服务端使用

服务端提供了portal对于zk数据进行管理。

 1) 登陆

2)首页

3)数据列表

4)新增数据

5)修改,删除

客户端:

1、客户端介绍

 配置中心客户端是服务于各个应用系统从而操做配置中心的配置属性。

客户端总体模型:

实现逻辑:

1) 采起数据加载到内存方式解决高效获取的问题,借助zookeeper的节点监听机制来实现实时感知。

2)新增配置,获取配置,修改配置, 删除配置逻辑图

3) 各个应用系统  获取配置过程  详细业务 逻辑图

 

2、客户端使用

配置中心客户端是以jar的形式提供于各个应用系统。

准备工做

1)若是是非maven项目,须要将jar引入项目。

     sysware-config.client-1.0-SNAPSHOT.jar(这边咋就限制文件大小9.77M呢,上传不上去,jar 13M,须要jar直接联系系统集成部杨晓辉)

2) 若是是maven项目,在pom中直接引入如下依赖,(目前还没上传到私服,后续完成)

<dependency>
<groupId>com.sysware</groupId>
<artifactId>sysware-config.client</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

3)须要在应用系统的classpath目录下添加config.properties文件,里面须要配置应用系统的惟一标识。

配置的key为:sysware.appid    value为系统的惟一标识。

例如:sysware.appid=p2m

4)须要在在以前的sysware.properties文件中配置zk的ip

例如:sysware.zookeeper.ip=127.0.0.1:2181

使用方式:

配置中心客户端对外提供了增删改查接口,具体使用以下:

接口名称

返回值

接口描述

接口名称

返回值

接口描述

String getValueByKey(String key)
String 获取属性:根据键key获取值value;
void addValue(String key, String value)
void 新增属性:key为配置的键,value为配置的值
void updateValueByKey(String key, String value)
void 修改属性:key为配置的键,value为配置的值
void deleteValueByKey(String key)
void 删除属性:key为配置的键

具体使用demo:

/*
* 从配置中心客户端获取属性信息
* 1.若是从配置中心获取属性不为空,则使用配置中心配置属性。
* 2.若是配置中心中获取不到属性,则使用应用系统配置的属性,而且须要将应用系统该属性配置项推送至配置中心
*/
SyswareConfigClient scc = SyswareConfigClient.newInstance();
//获取DRIVER_CLASS_NAME
//方法说明:获取属性value
String driverClassName = scc.getValueByKey(DBConfig.DRIVER_CLASS_NAME);
if(!SyswareUtil.isEmpty(driverClassName)){
props.setProperty(DBConfig.DRIVER_CLASS_NAME, driverClassName);
}else{
//方法说明:addValue("sysId","属性key","属性value")
scc.addValue(DBConfig.DRIVER_CLASS_NAME, props.getProperty(DBConfig.DRIVER_CLASS_NAME));
}

3、配置规则

建议:为了可以区分各个业务系统的配置,各个业务系统本身配置的属性文件中,建议规则为使用:sysware   +   点  +   业务系统名称  + 点 +  服务名称 +   点 +key

          例如:在P2M系统中须要配置rabbitMQ的名称,便可为:sysware.p2m.rabbitmq.username

                     公共的配置即将有服务端portal录入,规则为sysware.common开头的key, 例如:sysware.common.redis.ip

相关文章
相关标签/搜索