Zookeeper的底层算法机制(下)
1.Zookeeper的底层算法机制
前面有说过2pc算法和Paxos算法,具体见Zookeeper的底层算法机制(上)。在了解zookeeper的算法之前,先了解一下拜占庭将军问题。
2.拜占庭将军问题
拜占庭帝国有许多支军队,不同军队的将军之间必须制订一个统一的行动计划,从而做出进攻或者撤退的决定,同时,各个将军在地理上都是被分隔开来的,只能依靠军队的通讯员来进行通讯。然而,在所有的通讯员中可能会存在叛徒,这些叛徒可以任意篡改消息,从而达到欺骗将军的目的。
这就是著名的“拜占庭将军问题”。实际上拜占庭将军问题是一个分布式环境下的协议问题,拜占庭帝国军队的将军们必须全体一致的决定是否攻击某一支敌军。
拜占庭将军问题应用在分布式环境下,就是在信道不可靠当的情况下,如何就某个协议达成一致性问题。
3.zookeeper底层算法原理
Zookeeper底层的算法是基于ZAB协议的。
3.1 ZAB协议
ZAB(Zookeeper Atomic Broadcast)协议是分布式协调服务服务Zookeeper专门设计的一种支持崩溃恢复的原子广播协议,是专门为Zookeeper设计的崩溃恢复原子广播算法,是基于2pc算法。
Zookeeper的各个节点之间的通信协议是通过netty的。
3.2 协议介绍
ZAB协议包括两种基本模式,分别是:
a.消息原子广播(保证数据的一致性)
b.