Paxos设计思路解析

本文深入解析Leslie Lamport的Paxos算法设计,旨在确保分布式系统的安全性与灵活性。介绍了Paxos算法的角色(提出者、接受者、学习者)及其在异步环境下的共识达成过程,探讨了如何通过提议号和多数派原则确保只有一个值被选中,以及学习者如何得知值被选中。Paxos虽无法保证绝对的灵活性,但其出色的安全性使其成为工业界首选的共识算法。
摘要由CSDN通过智能技术生成

本文以《Paxos made simple》为蓝本,分析Leslie Lamport大神设计Paxos算法(适用于异步非拜占庭故障下的分布式系统)的思路。

大神先从共识算法(Paxos算法是共识算法的一种)开始,首先介绍了一下共识算法是干啥的:共识算法可以确保所有被提出的值中,只有一个值能被选中(chosen)。如果没有值被提出,那么没有值会被选中。如果一个值被选中了,那么进程应该可以学习(learn)这个被选中的值。简单来说,就是确保只有一个值被选中。

知道了共识算法是干哈的之后,对于共识算法,一般有两个重要的特性

1. 安全性(Safety),要求如下:1)只有被提出的值才可以被选中;2)只有一个值能被选中;3)除非值被选中了,否则进程不会知道它被选中了,即:进程只学习已经被选中的值;也就是,如果满足这三点,我们称共识算法满足了安全性。

2.灵活性(liveness)。灵活性的目标是确保某个被提出的值最终可以被选中,并且如果一个值被选中,进程最终可以学习该值。

Paxos算法设计的过程实际上是想方设法尽力满足这两种特性的过程。据此,大神在设计Paxos算法中,设计了三种角色:

1.提出者,主要负责提出值

2.接受者,主要负责接受值,在确保一个值被选中的过程中,发挥重要作用

3.学习者,学习选中的值

其中,每个进程都可以同时扮演这三种角色。具体每种角色会做什么,接下来会详细介绍。

至此,是一些Paxos算法设计的背景介绍。接下来,大神首先从安全性出发,尝试使Paxos算法可以满足安全性。


首先,1)只有被提出的值才可以被选中,不难满足,只要让所有的进程只处理提出者提出的值,尝试令其选中,即可满足。

但是,2)只有一个值能被选中,是设计的难点。想一下,有很多值可以被提出,两个不同的进程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值