1. ZooKeeper的协议
1.1 ZAB协议
要深入学习ZooKeeper前,胡广认为我们要先学习ZooKeeper的核心理念,所有的ZooKeeper行为都是围绕这个核心来进行的。说了那么多,它就是——ZAB协议。
ZAB协议英文全称叫ZooKeeper Atomic Broadcast,我们透过中文含义可以大概了解他做了什么事情:ZooKeeper原子消息广播协议。
来看看原子广播在维基百科的解释。
在容错分布式计算中,原子广播或全序广播是指多进程系统中的所有正确进程都以相同顺序接收同一组消息(即相同的消息序列)的广播。
那ZooKeeper广播啥呢?我们知道ZooKeeper集群有Leader服务器、Follower服务器,这个Leader服务器接收了客户端所有的事务请求,事务请求可以是新增某一个ZNode节点,也可以是删除某一个ZNode节点。
这些事务请求的变更要不要提交、如何通知其他Follower服务器进行同步变更,这就是广播涉及的主要内容了。
ZAB协议主要包含了消息广播、崩溃模式,跟着胡广往下看看。
1.2 消息广播
ZAB协议的消息广播类似于二阶段提交过程。顾名思义事务最终的提交要分为两个阶段。
消息广播的流程如下:
(1)针对客户端的事务请求,Leader服务器会为其生成对应的事务Proposal,同时广播