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

news2024/11/14 19:01:38

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就不会响应
在接受阶段,如果接受请求的提案的提案编号,小于已经响应过的提案编号,接受者不会通过这个提案
如果接受者之前有通过提案,那么接受者将承诺,会在准备请求返回已经通过的最大编号的提案信息

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/891135.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

213、仿真-基于51单片机智能电表电能表用电量电费报警Proteus仿真设计(程序+Proteus仿真+原理图+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件设计 二、设计功能 三、Proteus仿真图 四、原理图 五、程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选…

ARM DIY 硬件调试

前言 之前打样的几块 ARM 板,一直放着没去焊接。今天再次看到,决定把它焊起来。 加热台焊接 为了提高焊接效率,先使用加热台焊接。不过板子为双面贴片,使用加热台只能焊接一面,那就优先焊主芯片那面,并…

分布式链路追踪——Dapper, a Large-Scale Distributed Systems Tracing Infrastructure

要解决的问题 如何记录请求经过多个分布式服务的信息,以便分析问题所在?如何保证这些信息得到完整的追踪?如何尽可能不影响服务性能? 追踪 当用户请求到达前端A,将会发送rpc请求给中间层B、C;B可以立刻作…

End-to-End Object Detection with Transformers

DERT 目标检测 基于卷积神经网络的目标检测回顾DETR对比Swin Transformer摘要检测网络流程DERT网络架构编码器概述解码器概述整体结构object queries的初始化Decoder中的Muiti-Head Self-AttentionDecoder中的Muiti-Head Attention 损失函数解决的问题 基于卷积神经网络的目标检…

使用JavaMail发送邮件时嵌入公司logo图片

使用JavaMail发送邮件时嵌入公司logo图片 第一种方式:img标签和logo图片链接第二种方式:使用img标签和图片base64字符串第三种方式(推荐):将logo当做附件一起发送并设置ContentID,再使用img标签&#xff0c…

C++——移动构造和完美转发

1.什么是右值 右值引用是C11的概念,与之对应的是左值引用。 当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存当中的位置)。 以上的概念是摘录自《C primer》。 但是这样的概…

【SentenceTransformer系列】计算句子嵌入的概念(01/10)

一、说明 要分清词嵌入和句子嵌入的区别。 句子嵌入是指将句子或文档表示为固定长度的向量的过程,使得向量能够捕获句子的语义和上下文信息。它是自然语言处理 (NLP) 和机器学习中的常见任务,因为它可以帮助对句子之间的关系和相似性进行建模&#xff0c…

接口自动化测试(添加课程接口调试,调试合同上传接口,合同列表查询接口,批量执行)

1、我们把信息截取一下 1.1 添加一个新的请求 1.2 对整个请求进行保存,Ctrl S 2、这一次我们添加的是课程添加接口,以后一个接口完成,之后Ctrl S 就能够保存 2.1 选择方法 2.2 设置请求头,参数数据后期我们通过配置设置就行 3、…

Lua 位和字节

一、位运算 从 Lua 5.3 版本开始&#xff0c;提供了针对数值类型的一组标准位运算符&#xff0c;与算数运算符不同的是&#xff0c;运算符只能用于整型数。 运算符描述&按位与|按位或&#xff5e;按位异或>>逻辑右移<<逻辑左移&#xff5e;&#xff08;一元运…

安全学习DAY17_信息打点-语言框架组件识别

信息打点-WEB打点-语言框架&开发组件 文章目录 信息打点-WEB打点-语言框架&开发组件本节涉及链接&工具本节知识&思维导图基础概念介绍框架&#xff1a;组件&#xff1a;Web架构 对应Web测试手法后端&#xff1a;前端组件&#xff1a;java居多&#xff0c;框架&…

RP2040开发板自制树莓派逻辑分析仪

目录 前言 1 准备工作和前提条件 1.1 Raspberry Pi Pico RP2040板子一个 1.2 Firmware-LogicAnalyzer-5.0.0.0-PICO.uf2固件 1.3 LogicAnalyzer-5.0.0.0-win-x64软件 2 操作指南 2.1 按住Raspberry Pi Pico开发板的BOOTSEL按键&#xff0c;再接上USB接口到电脑 2.2 刷入…

产品帮助中心怎么做?这两点不能忽略,让用户自助解决问题!

对于大部分线上产品&#xff0c;因为其功能和系统的复杂性&#xff0c;使得新手客户入门学习非常复杂&#xff0c;为了快速响应并且解决问题&#xff0c;一套系统完整的产品帮助中心必不可少&#xff01; 产品帮助中心 因此&#xff0c;对于很多产品开发者来说&#xff0c;借助…

pg简单使用

1.创建服务器 2.创建数据库 3.修改默认连接数据库 工具都是链接到这里 4.数据库代码工具

ByteBuffer 使用

ByteBuffer 使用 1 java.nio包中的类定义的缓冲区类型2 缓冲区常用属性2.1缓冲区的容量(capacity)2.2 缓冲区的位置(position)2.3 缓冲区的限制(limit)2.4 缓冲区的标记(mark)2.5 剩余容量 remaining/hasRemaining 3 缓冲区常用方法3.1 创建缓冲区3.1.1 allocate方法3.1.2 wrap…

交叉编译之wiringPi库,【全志H616,orangepi-zero2】

文章目录 书接上回wiringPi全志库下载建立软链接软连接软连接创建 硬链接硬链接创建 测试树莓派运行servo文件 结束 书接上回 上回已经完整的安装了全志的gcc交叉编译工具 https://blog.csdn.net/qq_52749711/article/details/132306764 wiringPi全志库下载 下载链接 先搞到…

Jmeter+ant+jenkins实现持续集成

jmeterantjenkins持续集成 一、下载并配置jmeter 首先下载jmeter工具&#xff0c;并配置好环境变量&#xff1b;参考&#xff1a;https://www.cnblogs.com/YouJeffrey/p/16029894.html jmeter默认保存的是.jtl格式的文件&#xff0c;要设置一下bin/jmeter.properties,文件内容…

中国电信物联网收入33亿元,用户达到4.73亿户!

近日&#xff0c;中国电信发布2023中期业绩&#xff0c;物联网迎来强劲增长&#xff0c;物联网收入33亿元&#xff0c;同比增长75.7%&#xff0c;物联网用户4.73亿户&#xff0c;同比增长31.5%。天翼物联自主研发的AIoT物联网平台&#xff0c;升级为云原生3AZ架构&#xff0c;提…

在线课堂录播直播管理系统SpringBoot+Vue

在线课堂录播直播管理系统SpringBootVue 文章目录 在线课堂录播直播管理系统SpringBootVue共三个端&#xff1a;后端、后台管理系统、前端&#xff0c;如要学习看评论区&#xff08;全部源码、文档、数据库&#xff09;。内置功能一、前端二、后台管理三、后端--代码全有。四、…

k8s 认证和权限控制

k8s 的认证机制是啥&#xff1f; 说到 k8s 的认证机制&#xff0c;其实之前咋那么也有提到过 ServiceAccouont &#xff0c;以及相应的 token &#xff0c;证书 crt&#xff0c;和基于 HTTP 的认证等等 k8s 会使用如上几种方式来获取客户端身份信息&#xff0c;不限于上面几种…

【数据结构OJ题】链表分割

原题链接&#xff1a;https://www.nowcoder.com/practice/0e27e0b064de4eacac178676ef9c9d70?tpId8&&tqId11004&rp2&ru/activity/oj&qru/ta/cracking-the-coding-interview/question-ranking 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2…