1、zookeeper应用场景
zooKeeper是一个经典的分布式数据一致性解决方案,致力于为分布式应用提供一 个高性能、高可用,且具有严格顺序访问控制能力的分布式协调存储服务。
- 维护配置信息
- 分布式锁服务
- 集群管理
- 生成分布式唯一ID
2、zookeeper节点
一个znode大体上分为3各部分:
- 1.节点的数据:即znode data(节点path, 节点data)的关系就像是java map中(key, value)的关系。
- 2.节点的子节点children。
- 3.节点的状态stat:用来描述当前节点的创建、修改记录。
- cZxid:数据节点创建时的事务 ID
- ctime:数据节点创建时的时间
- mZxid:数据节点最后一次更新时的事务 ID
- mtime:数据节点最后一次更新时的时间
- pZxid:数据节点的子节点最后一次被修改时的事务 ID
- cversion:子节点的更改次数
- dataVersion:节点数据的更改次数
- aclVersion:节点的 ACL 的更改次数
- ephemeralOwner:如果节点是临时节点,则表示创建该节点的会话的SessionID;如果节点是持久节点,则该属性值为 0
- dataLength:数据内容的长度
- numChildren:数据节点当前的子节点个数
3、启动
到bin目录下
./zkServer.sh start
/zkCli.sh start
4、节点的基本操作
- 新增节点
create [-s] [-e] path data #其中-s 为有序节点,-e 临时节点
- 更改节点
set path data
- 删除节点
delete path [version]
- 查看节点
get path
5、监听器
- get path [watch]
使用 get path [watch] 注册的监听器能够在节点内容发生改变的时候,向客 户端发出通知。需要注意的是 zookeeper 的触发器是一次性的 (One-time trigger),即 触发一次后就会立即失效。 - stat path [watch]
使用 stat path [watch] 注册的监听器能够在节点状态发生改变的时候,向客 户端发出通知。 - ls\ls2 path [watch]
使用 ls path [watch] 或 ls2 path [watch] 注册的监听器能够监听该节点下 所有子节点的增加和删除操作。