Meteor-curator使用说明书
Meteor-curator使用说明书
项目地址:
Meteor-curator https://github.com/18106960985/meteor-curator 是一个对zookeeper操作的集成方案,其核心设计目的 - 对内高对内聚、无入侵, 采用fastjson序列化与反序列化,内置了数据本地缓存,实现节点监听
对外开箱即用、易扩展、轻量级,提供丰富API方法,它可以帮助你快速的管理zookeeper。
meteor-curator-admin 采用了居说是最新的前端技术栈的 vue-element-ui 这里就不做更多阐述,在需要自定义UI的情况下请自行查看该项目说明
缩略图
目录
3.5. Initializer (Curator实例) 6
3.6. TreeCacheInitialize (ZNode监听器) 6
当你的应用程序以分布式的形式被实现的时候,服务之间的错误和竞争是不可避免的,这使得它们在变化的存在下变得十分脆弱并难以管理,及时正确的执行了,这些服务也会应为管理的复杂性而增加不必要的精力,那么为什么不将这些交给Zookeeper?它能提供:维护配置信息,域名服务,分布式同步和组服务!
curator-web用于获取服务不同环境下的配置信息,对数据进行本地化并保证其数据与服务器同步,web上提供了可视化操作管理ZK,减少了部署时候修改配置的操作以及配置信息同步
Znode的结构是一个类似文件目录的树结构
下列缩略语适用于本文件。
ZK——分布式协调应用(Zookeeper)
WEB——Zookeeper 视图管理工具(Admin-we)
CORE——核心依赖JAR。(Zk-core)
UI——前端视图文件(admin-zookeeper-ui)
存储在Znode上的数据类型对应见 表 1:
表 1 数据类型 |
||
数据类型 |
示例 |
描述及要求 |
MAP |
Key1=value Key2=value |
key = value 格式,键值对之间使用换行符进行拆分 |
LIST |
1 2 3 |
数组之间使用换行符进行拆分 |
STRING |
string字符串 |
UTF8 编码,若无数据,置空 其他基本类型一致 |
YAML |
#zk 的目录监听 |
请使用yml格式 |
PROPERTIES
|
Key2.xxx=value |
请使用properties文件格式 |
JSON |
{key : value} |
请使用json 数据格式 |
core是分布式集群服务依赖jar
Maven引入
<dependency>
<groupId>meteor-curator</groupId>
<artifactId>curator-core</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
API简介见 表 1:
表 1 API简介 |
|
类名 |
描述 |
ZKUtil |
提供基础的增删改查方法,包含持久化操作 |
ZKNode |
znode数据模型 |
Initializer |
Curator clinet实例 |
TreeCacheInitialize |
zNode 监听实例,需要要配置config/spring/zk.yml |
AppConfig |
对外提供的接口方法 |
ZkUtils 封装了对zk的具体操作方法,该操作都会将数据保存至磁盘 说明见表2:
表 2 ZkUtils主要方法 |
|
方法 |
描述及参数说明 |
tree |
获取znode 树形结构模型 (path 可选节点,null默认为根节点) |
setData |
新增或者修改节点数据 (Path 节点 data 节点数据) |
getData |
获取zk节点值 (path 节点路径) |
remove |
移除zk节点 path节点 |
getYml |
封装了getData方法,获取节点数据并转换成yml 对象 |
示例:
//该方法能获取整个znode 并且会缓存在本地磁盘
ZKNode zkNode = ZKUtil.tree(null);
//该方法能获取到存储在zookeeper 的yml格式数据对象
Yaml ymlConfig = ZKUtil.getYaml("/xxxx", Yaml.class);
//setData 方法能改变ZK服务上的节点数据 ,
String path ="/module/admin/urls";
//这是一个map类型 的数据结构
String data = "maven=http//:maven.test.net.cn:88";
ZKUtil.setData(path,data);
AppConfig 在ZKUtils的基础上提供给对外的接口,并提供更多复合类型的转换 见表3
表 3 AppConfig |
|
方法 |
描述及参数说明 |
getItemValue |
获取zk的节点数据优先从缓存中读取 (key 节点路径 ,clazz 返回的类型 包含基本类型以及MAP LIST 和bean类) |
getProp |
获取zk的节点的properties 数据优先从缓存中读取 (key 节点路径 ,clazz 返回 类型) |
getMap |
获取zk的节点的Map数据优先从缓存中读取 (key 节点路径 ,clazz 返回 类型) |
getJson |
获取zk的节点的JSON数据优先从缓存中读取 (key 节点路径 ,clazz 返回 类型) |
示例:
String path ="/module/admin/urls";
//默认返回String 类型
String str = AppConfig.getItemValue(path);
//选择返回Map类型
Map<String,String> params = AppConfig.getItemValue(path,Map.class);
zk-core与ZK交互是采用了TCP协议。Initializer是curator client的实例
Initializer是curator client的生命周期控制类 表 1:
表 1 Initializer |
|
方法 |
描述及要求 |
init |
建立连接并获得到zookeeper实例 |
close |
关闭连接 |
reInit |
Client 重启 |
详细请看代码
当ZK服务器更改数据的时候,我们需要监听变动并及时更新 treeCache做的就是这件事情。默认不启用
要求: 启用需要引入meteor.yml 请放置在resource下
配置示例:
#zk监听配置 注意!!该数据格式为数组形式
rootPath:
#监听根节点 监听全部子节点
- /
#监听test 及test全部子节点
- /test
说明:
ZK_ROOT_PATHS 是配置的属性KEY ,其数据是为数组类型
Admin-Zookeeper-ui是使用开源项目vue-element-admin搭建,使用的是以vue为主体技术的vue-element-ui组件。
Admin-Zookeeper-ui 主要组件说明见表1
表 1 主要组件 |
|
组件 |
描述及使用到的地方 |
axios |
VUE所推荐的类ajax请求组件,负责HTTP协议请求。 |
Vue-router |
针对前端的路径路由组件,与axios实现动态路由,以及前端路由拦截器。 |
Vuex |
vue的全局变量,与cookies结合实现多种状态管理 |