Zookeeper:ZAB协议-角色分配-存储结构-监听机制

一、ZAB协议

1. 概念

ZAB协议是专门为Zookeeper设计的一种 支持崩溃恢复的原子广播协议。其借鉴了Paxos算法。
Zookeeper基于该协议,实现了一种主备模式的系统架构,保证了分布式集群中 各副本之间的数据一致性。

2. 三个阶段

发现:Zookeeper集群中,必须选出一个Leader进程,其需要维护一个Follower的可用列表。
同步:Leader需要负责将自身的数据同步给Follower,做到多副本存储。体现了CP原则。
广播:Leader接收到客户端请求后,会广播给所有的Follower,当收到超过半数的正确反馈后,认定该请求通过。

3.两种模式

(1)奔溃恢复之数据恢复
        当集群启动时,或Leader发生故障时,ZAB会进入恢复模式并进行Leader选举。新主上任,并与集群中超过半数的Follower进行数据同步后,退出恢复模式。进入消息广播模式。
2)消息广播之原子广播
        当一个新的Follower进入集群时,该Follower会进入数据恢复模式,与Leader进行数据同步。完成同步后,即可对外提供非事务请求服务。

二、角色分配

假设在一个小岛上,生活着一个部落。
部落中有一个议会,用来决定岛上的所有事。
议会中会有一个“总统”,以及若干“议员”。议会会对收集到的“提议”进行投票,每一个“提议”都有唯一的ID ,被通过的“提议”被称之为“正式法令”。非议会成员,均称之为“平民”。

三、存储结构

Zookeeper维护着一个树状存储结构,以KV形式存储信息,其中K代表目录。
必须以绝对路径的形式访问数据。
节点类型:持久化节点(默认)、临时节点、序列化节点。

四、监听机制

Zookeeper的Watch机制,是一种一次性的监听机制。
某个客户端可以对某个数据设置Watch监听,当数据发生变化时,会通知对应的客户端。通知后失效。

类型:
(1)父节点Watch类型:父节点的增删改行为对应不同的监听事件。
(2)子节点Watch类型:子节点的增删行为对应相应的监听事件,但修改行为不会触发监听事件。

你可能感兴趣的:(Zookeeper,zookeeper)