zookeeper 的特性
1. zookeeper:一个leader,多个follower组成的集群
2. 全局数据一致:每一个server保存一份相同的数据副本。client无论连接到哪个的server,数据都是一致的
3. 分布式读写 ,更新请求转发 ,由leader 实施。
4. 更新请求顺序进行,来自同一个client的个不放心请求按其发送顺序依次执行
5. 数据更新原子性,一次数据更新要么成功,要么失败
6. 实时性,在一定时间范围内,client能读到最新数据
Zookeeper数据结构
1. 层次化的目录结构,命名符合常规文件系统规范。
2. 每一个节点在zookeeper中叫做znode , 并且有一个唯一的路劲标识
3 . 节点znode 可以包含数据和子节点(但是EPHEPAL 类型的节点不能有子节点)
4. 客户端应用可以在节点上设置监听器
节点类型
1.zookeeper有两个类型
短暂性(ephemeral)(断开连接自己删除)
持久性(persistent)(断开连接不删除)
2. znode 有四种形式的目录节点(默认是persistent)
persistent
persistent_sequential (持久化)
EPHEMERAL
EPHEMEREAL_SEQUENTIAL
3. 创建znode 时设置顺序标识 ,znode 名称后会附加一个值,顺序号是一个单调递增的计数器,有父节点维护
4 . 在分布式系统中,顺序号可以被用于为所有的事件进行全局排序,这样客户端可以通过顺序号推断事件的顺序
zookeeper命令行操作
1 . 使用ls 命令查看当前zookeeper 包含的内容
2. 创建一个新的znode ,使用create /zk myData.这个命令创建一个新的znode节点 'zk‘ 自己与它关联的字符串
3 . 我们运行get 命令来确定znode是否包含我们所创建的字符串 get /zk 监听这个节点的变化,当另一个 客户端改变 /zk 时,
它会打出下面的
#WATCHER
#WatchedEvent state:SyncConnected type:NodeDataChanged path:/zk get /zk
watch 为节点添加监听事件
4. 下面我们通过set 命令来对Zk锁关联的字符串进行统计 set /zk/ "asd"
5. 下面将创建的znode 删除 delete /ZK -1
6. 删除节点: rmr rmr /zk