Zookeeper文档总结 #
Date: 2015/11/22
从官方文档里总结的Zookeeper的使用方法,在此mark。
zookeeper主要是解决配置文件,状态信息, 规则约定等系统的协调信息。所以每一个znode的信息最好在K级,不要超过1M。否则某些操作的时间会非常长。
结点状态 #
watches #
个人理解,就是某个znode的触发器,或者理解为观察者模式。当znode有修改时,就会给观察者发个消息通知一下。
数据操作 #
znode的数据操作是原子性的,也就是说,读和取是整个一起做的。
在操作过程中,有用户权限保障,对zookeeper的管理提供更丰富的应用场景。“Each node has an Access Control List (ACL) that restricts who can do what.”瞬时节点(Ephemeral Nodes)
这类节点会短时间存在于zookeeper中,当session执行结束后,该结点就会被删除,因此,这类节点不能有子节点。
感觉这类节点主要用于锁或瞬时统计功能。
序列节点 #
就是自增节点,以带前导0的10位整数表示。
也就是000000001到2147483647。也就是最多能存231−1个序列。
zookeeper里的时间 #
- Zxid,也是修改zookeeper状态产生的唯一id(ZooKeeper Transaction Id)。当修改后,会形成一个新的项目,分配一个新的zxid2代替zxid1,且zxid2的值要比zxid1大。
- 版本号,是节点上的修改记录,包含三种:
- version,znode的修改次数
- cversion,znode所有子节点的修改次数
- aversion,ACL(访问权限控制)的修改次数
- Ticks,zookeeper通过ticks定义事件的操作时限,包含status uploads, session timeouts, connection timeouts等。
- zookeeper中,除了在新建和修改znode时,会将真实时间放到属性里之外,其余的管理都不使用真实时间。
Zookeeper的状态 #
ZooKeeper Stat Structure
The Stat structure for each znode in ZooKeeper is made up of the following fields:
czxid
mzxid
ctime
mtime
version
cversion
aversion
ephemeralOwner
dataLength
numChildren
设想的操作模块 #
系统机器的管理 #
维护系统中有哪些机器,机器名、ip、挂了哪些服务,对应的端口号,配置文件当前版本号,配置文件最新版本号。
机器信息添加trigger,在更新后,由客户端接收信息做出相应的修改。
集群结构的管理 #
/服务名/子模块名/机器:端口(含配置文件)
此处,对子模块名,添加子项增加trigger。使修改更新到机器管理中。
安装脚本 #
/installer/应用名/子模块名
如:
/installer/weedfs/master
/installer/weedfs/installer
安装脚本应当能够与zookeeper交互,获得当前的基本状态,再进行安装。
一项特殊的安装:zookeeper客户端。需要在每一台新机器上配置zookeeper客户端,以管理机器上的各类服务。该安装由新机器主动调用,可自升级。
其余的脚本,在机器管理信息被修改后,由客户端获取并安装。
ACL的管理 #
由网页进行管理。设想中的流程
权限修改流程 #
新增机器流程 #
新增服务流程 #
todo #
-
zookeeper数据的读写
-
watcher的添加
Categories: 大数据存储