【分布式共识算法】Basic Paxos 算法

basic paxos算法:描述的是多个节点就某个值达成共识。

muti-paxos 算法:描述的是执行多个basic paxos实例,就一系列值达成共识。

共识其实,比如当多个客户端请求服务器,修改同一个值X 多个阶段达成共识。

原理

角色:提议者、接受者、学习者。

提议者 :说白了就是提出一个值,用于投票表决。
接受者 :对提议者提出的值进行投票表决,并存储对应的值。比如A、B、C三个节点,参与协商,并接收和存储数据。

所以一个节点即可能是提议者,也可能是接收者,比如对于一个集群来说,客户端发送请求,当一个节点接收到请求,就是提议者。
学习者:被告知投票的结果,接收达成共识的值,存储保存,不参与投票的过程。 就是一个数据备份的作用。

提议者代表的是接入和协调功能,收到请求后发起二阶段提交,进行共识协商。
接受者代表投票协商和存储数据,对提议的值进行投票,并接受达成共识的值,存储保存
学习者只保存共识的值,不参与投票

提案编号:每个提议者需要的一个编号。

提案值:需要达成共识的数据。

准备阶段

假设客户端1发送一个[1,] 提案编号,请求先达到节点A、B,客户端2发送提案编号[5,] 先达到节点C。因为准备节点不需要提议值,写需要写到提案编号就可以了。

整个处理过程是这样的。

节点A、B先收到1的提案编号,并且查看之前没有提案编号,并承诺以后不响应小于等于1的提案编号,不会通过小于1的提案

节点c接受到请求后,因为是提案5到达,所以不响应小于等于5的提案编号,不会通过小于5的提案。

所以整个过程来说的话,其实就是针对节点A、B 提案编号1返回了响应。节点C对于提案编号5返回了响应。然后节点A、B 对于提案编号5返回响应,因为5>1。而节点C针对提案编号1 不发挥响应。

接受阶段

客户端 接着发起接受阶段,比如客户端1发起的提议值是3,那么就是[1,3] 而客户端2发起提议值是7,所以就是 [5,7]。由于有规则限定,接受者不会接受比自己小的提案编号的提议值,所以接受者 A、B、C三个节点否决了客户端1的提议值。而接受了客户端2的提议值。

所以最终三个节点就x=7达成了共识。

而basic paxos算法具备一定的容错能力,也就是集群中少于一半以上的节点出现故障的话,剩余节点依然可以就某个值达成共识。

小结

basic paxos是通过二阶段提交的方式进行达成共识的。
basic paxos可以实现容错能力,少于一半的节点故障,依然可以工作
提案编号其实就代表者优先级,
在请求阶段,如果接受者不会返回小于等于已经响应过的提案编号。比如请求 1、2,2如果先到达,1就不会响应
在接受阶段,如果接受请求的提案的提案编号,小于已经响应过的提案编号,接受者不会通过这个提案
如果接受者之前有通过提案,那么接受者将承诺,会在准备请求返回已经通过的最大编号的提案信息

三个说白了就是我不会响应小于提案编号。不会通过已经响应过的提案值。如果有结果,那么就不会在产生新的值。

相关推荐
Damon小智4 小时前
鸿蒙分布式数据服务(DDS)原理与企业同步实战
分布式·华为·harmonyos
好学且牛逼的马5 小时前
Redisson 的分布式锁机制&幽默笑话理解
redis·分布式
武子康7 小时前
Java-163 MongoDB 生产安全加固实战:10 分钟完成认证、最小权限、角色详解
java·数据库·分布式·mongodb·性能优化·系统架构·nosql
兜兜风d'7 小时前
RabbitMQ消息分发详解:从默认轮询到智能负载均衡
spring boot·分布式·rabbitmq·负载均衡·ruby·java-rabbitmq
阿登林8 小时前
区块链技术在生产数据管理中的应用:Hyperledger Fabric与蚂蚁链智能合约设计
区块链·智能合约·fabric
Ashlee_code9 小时前
**新一代券商与机构专业交易系统开发:从国际金融变局到技术架构重构**
重构·架构·系统架构·区块链·私募·柜台·中资券商
2501_938780289 小时前
《Zookeeper 节点权限控制:ACL 策略配置与安全防护实践》
分布式·安全·zookeeper
Bellafu6669 小时前
zookeeper是什么
分布式·zookeeper·云原生
Wang's Blog9 小时前
Nestjs框架: 微服务与分布式架构解析之核心概念、应用场景与技术挑战
分布式·微服务·架构