欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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算法联系与区别

联系:

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

区别:

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