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。也就是最多能存$2^{31-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的管理 #
由网页进行管理。设想中的流程
权限修改流程 #
flowchart TD st([开始]) auth{是否有权限修改?} show[显示网页] deal[生成ACL并提交] e([结束]) st --> auth auth -->|是| show --> deal --> e auth -->|否| e
新增机器流程 #
sequenceDiagram participant 新机 participant zookeeper 新机->>新机: (由管理员)下载客户端安装脚本,执行安装 新机->>zookeeper: 连接,并更新机器状态
新增服务流程 #
sequenceDiagram participant zookeeper participant 集群结构 participant 机器信息 participant 客户端 zookeeper->>集群结构: 配置集群信息 note right of 集群结构: 触发 trigger 集群结构->>机器信息: 更新机器提供的服务及状态 note right of 机器信息: 触发 trigger 机器信息->>客户端: 安装服务 note right of 客户端: 从 zookeeper 安装信息 客户端->>客户端: 安装服务 note right of 客户端: 从集群结构获取配置参数 客户端->>客户端: 写入配置信息 客户端->>客户端: 启动 客户端->>机器信息: 更新服务状态
todo #
-
zookeeper数据的读写
-
watcher的添加
Categories: 大数据存储