Paxos算法以及ZAB协议

Paxos算法以及ZAB协议


一、Paxos算法

Paxos算法:是基于消息传递而且具有高度容错性的一致性算法
解决的问题:解决如何快速准确的在分布式系统中对某个数据达成一致性,而且保证不管发生什么异常,都不破坏系统一致性
算法流程:
Proposer(提议者)Acceptor(接收者)Learner(学习者)
(每个节点可以由多个身份)

  • Prepare阶段:只发送Proposer ID,没有发送提议内容
    • Proposer向Acceptor发起提议请求promise(承诺)
    • Acceptor对提议请求进行Promise(承诺)
  • Accept阶段:做出两个承诺,一个应答
    • Proposer收到多数的acceptor的承诺之后,向acceptor发送Propose提议请求
    • acceptor对收到的提议请求进行Accept处理
两个承诺:
	1)不再接受 Proposer ID小于等于当前请求的Propose请求
	2)不再接受 Proposer ID小于当前请求的 Accept请求
一个应答:
	1)不违背以前做出的承诺下,回复已经Accept过的提议中Propose ID 最大的哪个提议的ValueProposer ID,没有则返空
  • Learn阶段
    • Proposer将形成的决议发送给所有的Learner

问题:

  • 提议可能出现覆盖,**解决方法:**选举一个leader,leader才可以发送提议
  • 可能陷入活锁:系统存在一个以上的Proposesr,他们相互争夺Acceptor,造成迟迟不能达到一致的情况,**解决方法:**选举一个leader,只有leader可以发送提议

二、ZAB协议

ZAB协议:支持奔溃回复的原子广播协议。两种模式:奔溃恢复(选主)、消息广播(同步)
消息广播:写操作

在这里插入图片描述


崩溃恢复:

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

三、CAP

一个分布式的系统不可能同时具备如下三个特性:

  • Consistency(一致性)
  • Available(可用性)
  • Partition tolerance(分区容错性):在分布式系统遇到任何网络分区故障时,都能够保证对外提供可用、一致性的服务,除非整个网络环境都发送故障
    一般都是CP、AP
    zookeeper保证的是CP:在极端情况下不能保证可用性,需要用户再次请求;Leader选举过程不可用性

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...