简单介绍ZooKeeper的几个核心概念,后边会深入讨论
集群角色
Leader:为客户端提供读和写服务
Follower:提供读服务,参与Leader选举
Observer : 提供读服务,但不参与Leader选举
会话(Session)
指客户端会话,客户端和服务器之间
TCP长连接,通过心跳检测与服务器保持有效会话,接收来自服务器的Watch通知。网络问题重连,如果在sessionTimeout规定的时间内,之前创建的会话继续有效
数据节点(Znode)
持久节点
临时节点:生命周期和客户端会话绑定,一旦客户端会话失效,这个客户端创建的所有临时节点都会被移除
两种节点都可以添加一个特殊属性:sequential [sɪ'kwenʃ(ə)l] 如有此属性,会自动在其节点名后面追加一个整形数字,这个整型数字是一个由父节点维护的自增数字
版本
stat数据结构:记录了这个ZNode的三个版本,分别是
version(当前ZNode的版本)、
cversion(当前ZNode子节点的版本)、和
aversion(当前ZNode的ACL版本)
Watcher
Watcher(事件监听器):允许用户在指定节点上注册一些Watcher,并且在一些特定事件触发的时候,通知感兴趣的客户端,该机制是ZooKeeper实现分布式协调服务的重要特性
ACL
ZooKeeper采用ACL(Access Control Lists)策略来进行权限控制,类似于UNIX文件系统的权限控制,5种权限如下:
Create:创建
子节点的权限
Read:获取节点数据和子节点列表的权限
Write:更新节点数据的权限
Delete:删除
子节点的权限
Admin:设置节点ACL的权限