Zookeeper基本概念

集群角色

        Zookeeper中引入了Leader、Follower和Observer三种角色。Zookeeper通过leader选举过程选定一台机器做为Leader,Leader为客户端提供读写服务。除Leader外,其他机器为Follower或者Observer,Follower和Observer都可以提供读服务,唯一的区别是,Observer不参与选举过程,也不参与写操作的“过半写成功”策略。Observer可以在不影响写性能的情况下,提升集群的读性能。

会话

        客户端启动时,首先与服务器建立一个TCP连接,从第一次连接建立开始,客户端会话声明周期开始,通过这个连接,客户段能够通过心跳检测与服务器保持有效的会话。sessionTimeout用于设置客户端会话的超时时间,当服务器压力过大或者网络故障等原因导致客户端断开时,只要在sessionTimeout时间内重新连接上集群中任意一台服务器,之前的会话仍然是有效的。

数据节点

        Zookeeper中节点分两类:一类是指构成集群的每一台机器,称为机器节点。另一类是指数据模型中的数据单元,称为数据节点——ZNode。
        ZNode分为持久节点和顺序节点两类。持久节点是指Znode创建后,除非主动进行ZNZooode删除操作,否则ZNode将一直保存在Zookeeper上。而临时节点的声明周期是与客户端会话绑定的,一旦客户端会话失效,客户端创建的临时节点都会被移除。两类节点都有一个属性SEQUENTIAL,当节点标记此属性后,在创建节点时,Zookeeper会自动在其节点名后追加一个由父节点维护的自增数字。
        对于每个ZNode,Zookeeeper会为其维护一个叫stat的数据结构,其中记录了这个ZNode的三个版本,分别是version(当前ZNode的版本)、cversion(当前ZNode的子节点的版本)和aversion(当前ZNode的ACL版本)。

Watcher

        事件监听器,是Zookeeper的一个很重要的特性,Zookeeper允许用户在指定节点上注册一些Watcher,并在一些特定事件触发的时候,Zookeeper服务端会将事件通知到感兴趣的客户端上,此机制是Zookeeper实现分布式协调服务的重要特性。

ACL

        Zookeeper采用ACL(Access Control Lists)策略来进行权限控制,Zookeeper定义了如下5钟权限:
                CREATE:创建子节点的权限。
                READ:获取节点数据和子节点列表的权限。
                WRITE:更新节点数据的权限。
                DELETE:删除子节点的权限。
                ADMIN:设置节点ACL的权限。


猜你喜欢

转载自blog.csdn.net/asty9000/article/details/80160731