Paxos算法详解

兰伯特提出的Paxos算法包括2个部分:

  • 一个是Basic Paxos算法,描述的是多节点之间如何就某个值(提案value)达成共识
  • 另一个是Multi-Paxos思想,描述的是执行多个Basic Paxos实例,就一系列值达成共识

1、Basic Paxos

一个分布式集群由节点A、B、C组成,提供只读KV存储服务。创建只读变量的时候,必须要对它进行赋值,而且这个值后续没办法修改。因此一个节点创建只读变量后就不能再修改它了,所以所有节点必须要先对只读变量的值达成共识,然后所有节点再一起创建这个只读变量

当有多个客户端访问这个系统,试图创建同一个只读变量,客户端1试图创建值为3的X,客户端2试图创建值为7的X,这样如何达成共识,实现各节点上X值的一致呢?

在这里插入图片描述

1)、Basic Paxos中的三种角色

在Basic Paxos中,有提议者(Proposer)、接受者(Acceptor)、学习者(Learner)三种角色,他们之间的关系如下:

在这里插入图片描述

  • 提议者(Proposer):提议一个值,用于投票表决。集群中收到客户端请求的节点是提议者
  • 接受者(Acceptor):对每个提议的值进行投票,并存储接受的值。集群中所有节点都在扮演接受者的角色,参与共识协商,并接受和存储数据

一个节点可以身兼多个角色。如下图,一个3节点的集群,1个节点收到了请求,那么该节点将作为提议者发起二阶段提交,然后这个节点和另外2个节点一起作为接受者进行共识协商

在这里插入图片描述

  • 学习者(Learner):被告知投票的结果,接受达成共识的值,存储保存,不参与投票的过程。一般来说,学习者是数据备份节点,比如Master-Slave模型中的Slave,被动地接受数据,容灾备份

这3种角色在本质上代表的是3种功能:

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

在B

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邋遢的流浪剑客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值