深入分布式缓存-Paxos

简介: 深入分布式缓存-Paxos

前言

分布式系统中,根据CAP理论中的C 一致性要求,多个节点间,需要有达成一致的协议。

Paxos 算法是由图灵奖获得者 Leslie Lamport 于 1990 年提出的一种基于消息传递且具有高度容错的特性的一致性算法。算法比较难理解,大神于第一次发表八年之后,再次发表,仍然没有得到重视,直到2006年,才被Google慧眼识珠。

该算法在很多大厂都得到了工程实践,比如阿里的 OceanBase 的分布式数据库,底层就是使用的 paxos 算法。再比如 Google 的 chubby 分布式锁也是用的这个算法。

”世界上只有一种一致性算法,就是 Paxos。“,这句话被一度传扬。

\

Paxos协议简介

Paxos协议是一个两阶段协议,分为Prepare(准备)阶段和Accept(接收)阶段。

简单理解就是,第一轮发送消息,告知所有集群中的节点,要发生更改,第二阶段,来根据大家接受到的消息,判断多数服从少数,选择一个当做最终决定。

首先,系统根据所有想修改数据的节点,提出请求,前后顺序,生成全局唯一且递增的ID。然后开启流程。

Prepare阶段

所有要想修改数据的节点,发起请求到所有集群节点,此时,发送各自的获得的ID,以及内容

接收方节点,接收到收到的ID之后,与本地存在ID对比,如果接受到的,大于存在的ID,就把本地的ID替换为最大的那个。同时,做出约定,不再接收小于等于当前收到的ID的请求了,同时,也就不会再去处理小于当前收到的ID的请求。简单说明,就是,有了最大的,一切以最大的为中心,其余的都不在重要。另外,接收方节点,如果替换ID动作完成,就把当前存储的ID最大的告诉所有发送给自己的节点。

Accept阶段

最终所有的接收方节点,心中,都有了自己要保留的ID,大家多数服从少数,最终统一成一样的。

理解整个Paxos协议,最重要的是理解,多数服从少数,时间优先。

场景举例

有小明 小红 小李 小王 四个同学要选班长,那么只要是想选的,就要发起游说,告诉所有其他同学要选他自己。

现在,小明,小王想要竞选。

假设都通知到位(出点节点故障,同理)

image.png

此时,以一个场景为例说明(上述ID此处代表高大):

小明先对小李发起友好游说,然后小李才收到小王的消息

此时,小李告诉小明,好,我记着了,然后小王来了之后,

小李就在想,哎呀小王那么高大,当班长正好,就告诉小王,之前小明也报名了,但是我记得了,我到时候选你。

小明对小王发起游说,然后,被小王说,我也选。小明尴尬的离开。

小明又对小红发起消息,但是晚了一步,小王先对小红游说完毕了。

小红,直接把小明拉黑了。小王也去给小明发了个消息,小明此时,就说好,我知道了,我会选你的。自己背叛了自己。

最终,小李、小红、小王、小明选小王,小明 选小明,小王当选。

总结

Paxos 协议/算法 就是少数服从多数,标准的 鸽笼原理/抽屉原理,同时,还会根据相关约定的权重来判断是否需要应答,权重其实就是ID,是为了防止出现活性导致死循环。

注意:这一切都是在没有 拜占庭将军 问题的基础上建立的,即消息不会被篡改(因为分布式大多在局域网中)。

Paxos 的目标:保证最终有一个提案会被选定,当提案被选定后,其他人员最终也能获取到被选定的提案。

Paxos 协议用来解决的问题可以用一句话来简化:将所有节点都写入同一个值,且被写入后不再更改。

                                                       《end》

目录
相关文章
|
5天前
|
算法 分布式数据库
Paxos算法:分布式一致性的基石
【4月更文挑战第21天】Paxos算法是分布式一致性基础,由Leslie Lamport提出,包含准备和提交阶段,保证安全性和活性。通过提案编号、接受者和学习者实现,广泛应用于分布式数据库、锁和配置管理。其简单、高效、容错性强,影响了后续如Raft等算法,是理解分布式系统一致性关键。
|
前端开发
理解分布式一致性:Paxos协议之Multi-Paxos
理解分布式一致性:Paxos协议之Multi-Paxos
理解分布式一致性:Paxos协议之Multi-Paxos
|
消息中间件 负载均衡 监控
Paxos与Zookeeper分布式一致性面试必备
根据ZooKeeper官网定义:ZooKeeper是一个集中式服务,用于维护配置信息、命名、提供分布式同步和提供组服务。分布式应用程序以某种形式使用所有这些类型的服务。每次实现它们时,都需要做大量工作来修复不可避免的错误和竞争条件。由于难以实现这些类型的服务,应用程序最初通常会忽略这些服务,这使得它们在发生变化时变得脆弱,难以管理。即使做得正确,在部署应用程序时,这些服务的不同实现也会导致管理复杂性。
165 0
Paxos与Zookeeper分布式一致性面试必备
|
存储 算法 NoSQL
深入浅出理解分布式一致性Paxos算法
深入浅出理解分布式一致性Paxos算法
881 0
深入浅出理解分布式一致性Paxos算法
|
存储 缓存 运维
X-Paxos 三副本与高可用 | 学习笔记
快速学习 X-Paxos 三副本与高可用
226 0
X-Paxos 三副本与高可用 | 学习笔记
|
存储 算法 NoSQL
分布式算法入门之 Paxos 算法
世界上只有一种共识协议,就是 Paxos,其他所有共识算法都是 Paxos 的退化版本。
|
存储 算法 前端开发
如何实现一个 Paxos
Paxos 作为一个经典的分布式一致性算法(Consensus Algorithm),在各种教材中也被当做范例来讲解。但由于其抽象性,很少有人基于朴素 Paxos 开发一致性库,本文介绍的实现代码参考了 RAFT 中的概念以及 phxpaxos 的实现和架构设计,实现 multi-paxos 算法,主要针对线程安全和模块抽象进行强化,网络、成员管理、日志、快照、存储以接口形式接入,算法设计为事件驱动,仅包含头文件,便于移植和扩展。
19863 1
|
存储 缓存 算法
深入分布式缓存-Paxos
深入分布式缓存-Paxos
79 0
深入分布式缓存-Paxos
|
存储 缓存 算法
【分布式】Chubby与Paxos
 在上一篇理解了Paxos算法的理论基础后,接下来看看Paxos算法在工程中的应用。
297 0
【分布式】Chubby与Paxos
|
存储 负载均衡 算法
【分布式】Zookeeper与Paxos
在学习了Paxos在Chubby中的应用后,接下来学习Paxos在开源软件Zookeeper中的应用。
74 0
【分布式】Zookeeper与Paxos