zab与paxos算法联系与区别
程序员文章站
2024-03-19 22:11:22
...
zab协议概述
zab协议是为分布式协调服务zooKeeper专门设计的一种支持崩溃恢复的原子广播协议。
zab协议不像paxos是一种通用的分布式一致性算法,它是一种特别为zookeeper设计的崩溃可恢复的原子消息广播算法!
paxos算法概述
poxos算法是莱斯利兰伯特(Leslie Lamport)于1990提出的一种基于消息传递且具有高度容错性的一致性算法;
拜占庭将军问题
拜占庭帝国有许多只军队,不同军队的将军之间必须制定一个统一的行动计划,从而做出进攻或者撤退的决定。同时,各个将军在地理上都是被分割开来的,只能依靠军队的通讯员来进行通讯。然而,在所有的通讯员中可能会存在叛徒,这些叛徒可以任意篡改信息,从而达到欺骗将军的目的!
这就是著名的“拜占庭将军问题”。从理论上来说在分布式计算领域,试图在异步系统和不可靠的通道上达到一致性是不可能的!
paxos算法主要有三类节点:
- 提议者(Proposer):提议一个值;
- 接受者(Acceptor):对每个提议进行投票;
- 告知者(Learner):被告知投票的结果,不参与投票过程。
zab与paxos算法联系与区别
联系:
- 两者都存在于一个类似于leader进程的角色,负责协调follower进程的运行;
- leader进程都会等待超过半数的follower做出正确的反馈后,才会将提案进行提交;
- 在zab协议中,在每个proposal都包含一个epoch用来代表当前的leader周期,在paxos算法中,同样存在这样一个属性,名字变成了Ballot;
区别:
设计目标不同,zab协议目标是构建一个高可用的分布式数据主备系统,paxos算法是用于构建一个分布式的一致性状态机。
上一篇: PHP利用闭包实现MySQL事务场景下缓存一致性的模型
下一篇: 笔试编程题汇总(5)