Paxos协议学习---3.Paxos Made Simple

2024-05-05 15:48
文章标签 学习 协议 simple paxos made

本文主要是介绍Paxos协议学习---3.Paxos Made Simple,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先读Parliament再读simple确实,要好很多。

下面是阅读笔记

Paxos made simple
P2
1.为什么不是采用一个acceptor就好?
答:因为那个节点可能失败。


2.为什么任意qrm的人通过了一个值,就能确定一个值?
答:因为任意qrm至少有一个相同的人,
如果我们能确保一个acceptor只能最多接受
一个值,就能确保任意qrm确认的值都是同一个值。


3.为什么要满足条件P1?
答:因为我们在没有失败和消息丢失的情况下,我们希望即使只有一个值被提议,也应该被选定。
它的意义就在于,我们应该确保有提议能被通过。


4.为什么一个acceptor必须要被允许接受多于
一个的提议?
答:因为存在节点失败的可能性,某一次提议可能无法
找到一个qrm,也就无法确定一个值。这就需要进行多次提议。一个acceptor是可以在不同的提议中接受
不同的值得提议的。
这样遇到2N+1台,有N个选x,有N个选y,还有一台崩了的情况下,有人改变主意,才能选出一个值。


P3
1.为什么要提出条件P2?
答:P2条件直接满足了只要有一个值被选择。
那么它肯定满足一致性。


2.为什么要提出条件P2a?
答:因为P2是说,v被选择后,所有比v
的编号大的并且被选择的提议的值都应该是v。
而P2a是说,v被选择后,在所有编号比v大的提议
投票中,accept只能投有v值的提议。
显然P2a能满足P2。 


3.为什么要提出条件P2b?
现在值为v的提议已经被通过了。
总会有之前没有接受过任何提议的acceptor
同时也会有不知道情况的proposer,提出
编号更高的值不是v的提议。
由于P1的存在,该acceptor会接受编号大于v,
但是值不是v的提议。
这与P2a的要求是矛盾的。
为了解决这个矛盾,我就不能让你提出这种提议。
这就是P2b。


P4
1.为什么要提出P2c?
答:这个P2c就是The Part-time Parliament中的
第3个条件。而P2b就是里面提出的引理1。
这个条件根本就不管有没有通过
都限制了,现在将要提出的这个提议,必须要和
你的qrm中的MaxVote相同。
可以通过反证法证明满足了P2c就满足了P2b。
从而证明满足了P2c就满足了P2。


2.为什么proposer要求acceptor给promise说
不要接受编号比n小的提议?
答:因为为了遵守P2c的规定,proposer在新提议
之前要询问qrm的MaxVote。
为了确保这个MaxVote是最新的,有效的,就必须要求
不能再接受编号小于n的提议。
因为一旦接受编号小于n的提议。
那么MaxVote有可能就变了,传给编号n的提议的proposer的MaxVote信息就失效了。


P5
1.acceptor到底接受还是不接受request呢?
答:无论何时,acceptor不接受request都不会影响
一致性。所以对于acceptor的不接受没有要求。
对于回应请求
①prepare request想回应就回应
②acceptr request只有在没有承诺过不回应的情况下,才能回应。


2.acceptor会忽略对于它已经接受了的提议的prepare
request,为什么一个已经接受了的提议还会有prepare
request呢?
答:因为异步网络会有丢包和重复包存在。


3.一个acceptor需要持久化两样东西。
①它accept过的最大提议
②它promise过的最大提议
为什么?
答:①是为了回答MaxVote
②是为了拒绝一些prepare request
持久化这两个东西可以保证2Pc的顺利进行。


P6
1.acceptor实际的接受行为
答:为了保证协议的快速运行,实际行为如下
①对于prepare request,遇到比自己promise过的
提议编号更大的提议就respond promise
②对于accept request,只要没有遇到promise里面
承诺过不接受的,就accept




原文摘录:
P1.An acceptor must accept the first proposal that it receives.


P2.If a proposal with value v is chosen, then every higher-numbered proposal that is chosen has value v.


P2a.If a proposal with value v is chosen, then every higher-numbered proposal accepted by any acceptor has value v.


P2b.If a proposal with value v is chosen, then every higher-numbered proposal issued by any proposer has value v.


P2c.For any v and n , if a proposal with value v and number n is issued,then there is a set S consisting of a majority of acceptors such that
either (a) no acceptor in S has accepted any proposal numbered lessthan n , or (b) v is the value of the highest-numbered proposal among
all proposals numbered less than n accepted by the acceptors in S .


P1a.An acceptor can accept a proposal numbered n iff it has not responded to a prepare request having a number greater than n.


Question
1.如果总共10个人,通知了8个人,
但是有7个人同意,那么算不算通过?
答:算,只要有任意的qrm全员赞成,就算提议通过。


2.如果有2N+1个acceptor。
有两个提议同时提出,这个时候N个赞成提议1,
N个赞成提议2,第2N+1个acceptor崩了。
好像协议是说,只能accept与自己一样的。
那么只要第2N+1个不出现,不是永远选不出来吗?
答:这里之前的理解有问题。acceptor是可以接受和自己之前接受的提议不一样的值得提议的。
但是对于提议者来说,提议怎样的提议是有要求的。


3.一个proposer怎么知道得到了一个qrm
的acceptor的回应?
是因为在系统设定的时候就会给出一个集群里拥有的
所有的acceptor的数量吗?
那么这个数量怎么维护呢?感觉只能人工给定啊?


4.怎么保证,多个proposer不会提出相同的
编号的提议呢?
答:每一个proposer能够用的编号集是不想交的。
所以不同的proposer没有相同的编号可用。
而对于某一个proposer只要保证不和自己之前的编号一样就好。


5.这个proposer和learner都要选择leader,
那么这个leader选举过程怎么保证一致性呢?
如果将选择leader看成一个提议,那么在实际选上之前
会有多个proposer一起提提议,可能会导致不断地
prepare request冲突,无法进行怎么选择?
原文P7有这样的语句,
 a reliable algorithm for electing a proposer must use
either randomness or real time—for example, by using timeouts. 
但是选出来了,怎么保证一致性,怎么让所有机器知道呢?
答:leader并不要求保持严格的一致性,同时存在一个以上的leader是
允许的。所以只需要通过心跳或者租约来查看leader的存活状况即可。


Summary
1.P1保证了能选出一个值。
2.P2保证了选出的值是一致的。
3.P2a保证了P2的成立。
4.P2b保证了,P1和P2a同时成立,也就保证了P1和P2
同时成立。
5.P2c保证了P2b的成立。

这篇关于Paxos协议学习---3.Paxos Made Simple的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/962061

相关文章

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识