1:帕克索斯算法 paxos :

参考文档:分布式系列文章——Paxos算法原理与推导 - lzslbd - 博客园

问题产生的背景:

分布式系统出现节点宕机或者网络异常,导致消息延迟、丢失、乱序等情况。该算法就是需要保证,不论啥情况数据都要一致。

相关概念:

三中角色:

Proposer:方案提出者,暂定方案就是某一个类目的值,比如age=11

Acceptor:方案接受者,(假设3个角色都接受)那么暂定认为这个值就是11了

Learners:接受者告诉学习者哪个被接受,learners就认为被接受了

一个进程能充当多个角色。

安全性:

1:只有被提出的value才能被选定

2:有且只有一个value被选定

3:如果某个进程认为value被选定了,那他就必须是真的被选定的那个。

为了保证高可用,acceptor必须有多个

多个proposer只有一个提出者,提出一个方案。一个acceptor只能接收他收到的第一个提案。

这样假设还是有多个方案出现,那就会有下面问题,

所以现在规定超过半数以上的接受才能被选定。这样就必须要让每一个acceptor能接收不同的方案。不然如上图 ,各接收一个,就不满足半数以上的条件,导致没有提案被选中。

所以提案=value是不合理的,现在进行调整

提案都按照提出顺序加上编号,= 编号+value

假设value=11的被选定了,那么每个value对应编号更大的应该也要是11

提案是被acceptor接受的,所以新的约束如下:

假定value=11被选定,比如他对应的编号是10,那么11以后编号的提案被acceptor结受,应该value也必须是1

特殊情况:

1-4 acceptor(超过半数)接受了 2,12,但是acceptor5宕机重启后接收到一个新的方案(1-4当时还没有这个,5宕机也没有接收到前面的),

第一个接收的提案是3,11,按照约P1:acceptor必须接受他收到的第一个提案,并且11的编号3》2,所以5认为该提案被选定,1-4认为2提案被选定。

这样出现不一致,并且编号最高的value也不是11.

所以只要保证:某个提案已经被acceptor选定后,proposer提出的编号更高的方案的value也是和选定的value一致

怎么保证那:

对于任意的n和v被提出,那么存在一个半数以上的acceptor集合满足以下两个条件中的任意一个:

集合中的acceptor都没有接收过编号小于n的提案

集合中的acceptor接收过最大编号的提案的value=v

最终总结:

一:proposer生成提案:

为了满足:某个提案已经被acceptor选定后,proposer提出的编号更高的方案的value也是和选定的value一致,proposer再生成提案前,要先去学习。存在已选定的,就按照已选定的value,不存在才自己来决定。

这样就满足了proposer的一致性。

提案生成算法:

1:(prepare请求)按照顺序选定编号n,给acceptor发送请求,告诉acceptor

a:不再接受任何编号小于n的提案

b:如果已经接受过提案,那么就返回已经接受过的编号小于n的最大编号方案

2:(accept请求)如果proposer接受了半数上的acceptor的响应,那就可以生成提案,n,v(v要么自己决定,要么取已选定的最大编号的v),生成后发送给acceotor集合

二:acceptor接受提案:

一个acceptor只要尚未响应任何编号大于n的Prepare请求,那么他就可以结受编号为n的提案。

所以acceptor要记住两点:1:已接受的最大编号的提案 2:已响应的请求的最大编号

paxos算法描述:

阶段1:

proposer选着一个编号的提案,开始向半数以上的acceptor发送请求

acceptor收到编号为n的请求,如果之前接受的最大编号的value请求小于n,则就把接受过的最大编号响应proposer,让proposer取这个value,同时acceptor不再接受编号小于n的任何提案,否则可以不响应或者响应一个error

阶段2:

如果超过半数的acceptor响应了编号为n的请求,proposer就会发出一个针对n,v提案的accept请求给半数以上的acceptor。v是收到响应中最大编号对应的v,如果没有就按照proposer自定义的。

如果acceptor收到一个编号为n的请求,只要没有对编号大于n的请求做出过响应,就接受这个提案。

Learner学校被选定的value

三种方案:

如何保证Paxos算法的灵活性:

一致性算法之paxos(帕克索斯)算法相关推荐

  1. 帕索斯算法在zookeeper的应用体现

    本文知识体系: 1. 前言 Zookeeper这个框架很特殊也很重要,可以说是我们所有的分布式,或者说微服务的一个基石,没有这个zookeeper或者说没有他这个思想我们分部是和微服务是镜花水月.Zo ...

  2. 贝叶斯算法c语言,01 贝叶斯算法 - 朴素贝叶斯

    引子: 1.孩子的性别问题 已知一对夫妻生了2个孩子,其中一个是女孩,那么另一个也是女孩的概率的多少? 普遍大家会觉得生男生女都一样,所以另一个也是女孩的概率是1/2.而另一部分稍微聪明一点的人认为: ...

  3. Paxos(帕克索斯)一致性算法[卷一]

    文章目录 导读 究竟是什么? 主要3种角色 主要流程 问题:为什么能做到一致性? 导读 译<The Part-Time Parliament>--终于读懂了Paxos协议! 究竟是什么? ...

  4. 共识机制9-(帕克索斯算法)

    摘要 这是一种传统的分布式一致性算法,是一种基于选举领导者的共识机制.领导者节点拥有绝对权限,并允许强监管节点参与,其性能高,资源消耗低.所有节点一般有下线准人机制,但选举过程中不允许有作恶节点,不具 ...

  5. Python使用佩加索斯(Pegasos)算法实现软间隔SVM

    一.软间隔SVM目标函数推导 SVM假定存在一个超平面能够将两类样本完全分隔开来,但在实际情况中,数据是不能被一个平面完全分隔的,因此,为了使得问题可解,我们需要在原SVM的优化问题上加入松弛变量ε, ...

  6. 5 机器学习 朴素贝叶斯算法 高斯模型 多项式模型 伯努利模型 拉普拉普平滑系数 TfidfVectorizer

    机器学习 1 朴素贝叶斯算法 1.1 朴素贝叶斯算法介绍 朴素贝叶斯算法是一种衡量标签和特征之间概率关系的监督学习算法,是一种专注于分类的算法."朴素"二字表示这个算法基于一个朴素 ...

  7. 朴素贝叶斯算法和拉普拉斯平滑详细介绍及其原理详解

    相关文章 K近邻算法和KD树详细介绍及其原理详解 朴素贝叶斯算法和拉普拉斯平滑详细介绍及其原理详解 决策树算法和CART决策树算法详细介绍及其原理详解 线性回归算法和逻辑斯谛回归算法详细介绍及其原理详 ...

  8. k近邻算法,朴素贝叶斯算法,分类模型评估,模型调优

    k近邻算法,朴素贝叶斯算法,分类模型评估,模型调优 k近邻算法 k近邻算法概述 k近邻算法代码实现 k近邻算法的评价 朴素贝叶斯算法 朴素贝叶斯算法概述 朴素贝叶斯代码实现 朴素贝叶斯的评价 分类模型 ...

  9. 机器学习 第三讲 机器学习基础、机器学习算法(K-近邻算法、朴素贝叶斯算法)

    文章目录 一.机器学习基础 1.明确几点问题 2.机器学习算法的判别依据 3.机器学习算法分类 4.机器学习开发流程 二.机器学习算法 1.sklearn数据集 (1)数据集划分 (2)sklearn ...

最新文章

  1. VMWare 虚拟化 Ubuntu 64 (16.04)-- docker 无法链接 pull 镜像 ?(solved)
  2. 币对交易所_比特币向1万4大涨,OK交易所的比特币为什么反而贬值7折?
  3. .ASP NET Core中缓存问题案例
  4. ActionBar之style出现Cannot resolve symbol 'Theme' 错误
  5. php实战第二十五天
  6. echart 多柱图只显示部分数据标签_python|读取Excel生成pyecharts动态分析图
  7. java重定向并保持同一个会话_当会话在Java Web应用程序中过期时,如何重定向到登录页面?...
  8. 09、多线程(一) -- 基本概念
  9. 【整站下载器】小飞兔整站下载V5.0
  10. 我的HTC G16 CHACHA A810e版手机如何解锁和一键root的
  11. 图片 title 和 alt区别:
  12. day10-函数基础总结
  13. java数据库驱动加载失败_Java连接数据库,成功加载SQL驱动程序,但数据库连接失败...
  14. 怎样把已经做好的网页传到网上去?
  15. 朱义晨作业 17037099
  16. ad9854matlab仿真,AD9854 | 直接数字频率合成器 | 亚德诺(ADI)半导体
  17. 垂直搜索 vs 通用搜索
  18. openamp RPU-APU双核间通信 建立多个通道
  19. exp table oracle,oracle中exp,imp的使用详解
  20. Kubernetes — Dashboard

热门文章

  1. 【HTML】多媒体与嵌入
  2. java的集合框架中重要的接口,持续更新大厂面试笔试题
  3. 奈飞文化手册_书摘|奈飞文化手册
  4. 国防科技大学903计算机专业综合,2022年国防科技大学硕士研究生考试大纲
  5. 欧洲最大IT展会CeBIT开幕 绿色IT是主题
  6. 动态规划求解最短路径问题:枚举法、逐段累加法、动态规划法对比理解
  7. 大端模式和小端模式-以前犯过这样的错误
  8. 数据特征分析之 python相关性检验(转载学习)
  9. Think In Java | 01 面向对象
  10. 适用于 Windows 的几个不错的 PDF 转换器