zab与paxos算法联系与区别

zab协议概述

zab协议是为分布式协调服务zooKeeper专门设计的一种支持崩溃恢复的原子广播协议。

zab协议不像paxos是一种通用的分布式一致性算法,它是一种特别为zookeeper设计的崩溃可恢复的原子消息广播算法!

paxos算法概述

poxos算法是莱斯利兰伯特(Leslie Lamport)于1990提出的一种基于消息传递且具有高度容错性的一致性算法;

拜占庭将军问题

拜占庭帝国有许多只军队,不同军队的将军之间必须制定一个统一的行动计划,从而做出进攻或者撤退的决定。同时,各个将军在地理上都是被分割开来的,只能依靠军队的通讯员来进行通讯。然而,在所有的通讯员中可能会存在叛徒,这些叛徒可以任意篡改信息,从而达到欺骗将军的目的!

这就是著名的“拜占庭将军问题”。从理论上来说在分布式计算领域,试图在异步系统和不可靠的通道上达到一致性是不可能的!

paxos算法主要有三类节点:

  • 提议者(Proposer):提议一个值;
  • 接受者(Acceptor):对每个提议进行投票;
  • 告知者(Learner):被告知投票的结果,不参与投票过程。

zab与paxos算法联系与区别

联系:

  1. 两者都存在于一个类似于leader进程的角色,负责协调follower进程的运行;
  2. leader进程都会等待超过半数的follower做出正确的反馈后,才会将提案进行提交;
  3. 在zab协议中,在每个proposal都包含一个epoch用来代表当前的leader周期,在paxos算法中,同样存在这样一个属性,名字变成了Ballot;

区别:

设计目标不同,zab协议目标是构建一个高可用的分布式数据主备系统,paxos算法是用于构建一个分布式的一致性状态机。

发布了88 篇原创文章 · 获赞 16 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/xinquanv1/article/details/104118974