数据结构
Zookeeper的数据节点称为ZNode,ZNode是Zookeeper中数据的最小单元,每个zNode名称是唯一的(或者说路径唯一),每个ZNode都可以保存数据,同时还可以挂载子节点,因此构成了一个层次化的命名空间,称为树。
zNode节点其实就是类似一个key-value,节点名称或路径名称就是key,每一个对应的key都有一个value值
在Zookeeper中,事务是指能够改变Zookeeper服务器状态的操作,一般包括节点创建与删除,数据节点内容更新和客户端会话创建与失效。
对于每个事务请求,Zookeeper是如何保证事务的顺序一致性?
Zookeeper都会为其分配一个全局唯一的事务ID,所有的 proposal(提议)都在被提出的时候加上了ZXID,用ZXID表示,通常是64位的数字,每个ZXID对应一次更新操作,从这些ZXID中可以间接地识别出Zookeeper处理这些更新操作请求的全局顺序。
zNode类型:
(1)PERSISTENT-持久节点,除非手动删除,否则节点一直存在于 Zookeeper 上
(2)EPHEMERAL-临时节点,临时节点的生命周期与客户端会话绑定,一旦客户端会话失效(客户端与zookeeper 连接断开不一定会话失效),那么这个客户端创建的所有临时节点都会被移除。
(3)PERSISTENT_SEQUENTIAL-持久顺序节点,基本特性同持久节点,只是增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。
(4)EPHEMERAL_SEQUENTIAL-临时顺序节点,基本特性同临时节点,增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。
持久节点--->节点永久存在zk服务器上,zk断开连接也不会消失。
临时节点--->节点临时存在zk服务器上,当zk断开连接,此节点便会消失。
顺序节点--->创建znode时设置顺序标识,znode名称后会附加一个值,顺序号是一个单调递增的计数器,由父节点维护 。在分布式系统中,顺序号可以被用于为所有的事件进行全局排序,这样客户端可以通过顺序号推断事件的顺序
基本命令
zkClient连接zookeeper服务器:
cd zookeeper的bin目录
./zkCli.sh -server localhost:2181
然后输入help命令,会提示相关命令如下:
ZooKeeper -