Paxos算法简单介绍
一种基于消息传递且具有高度容错特性的一致性算法。解决在存在宕机或者网络异常的集群中对某个数据的值达成一致性,并且保证无论在发生以上任何异常都不会破坏整个系统的一致性,具有容错性。
Paxos算法实现的是分布式系统多个结点之上数据的一致性,这个算法有如下特性
1.基于消息传递,允许消息传输的丢失,重复,乱序,但是不允许消息被攥改
2.在结点数少于半数失效的情况下仍然能正常的工作,结点失效可以在任何时候发生而不影响算法正常执行。
1.paxos算法综述
在paxos算法中,分为三种角色:proposer acceptor learner,在该算法中,必须满足的三个条件:
P1:每个acceptor必须批准它收到的第一个提案
P2:如果编号为M0,值为V0的提案被批准,那么所有编号大于M0且被选定的提案的值都为V0
a:如果编号为M0,值为V0的提案被批准,那么多有编号为M0且被acceptor批准的提案的值都为V0
b:若编号为M0,值为V0的提案被批准,那么之后所有proposer提交的编号大于M0的提案,其值都为V0
C:对于任意的Mn与Vn,如果提案Mn与Vn被提出,那么肯定存在一个由半数以上的acceptor组成的集合S,满足以下两个条件之一:
1).S中不存在任何被批准过的编号小于Mn的提案acceptor
2).选取S中所有acceptor批准的编号小于Mn的提案,其中编号最大的提案的Value值为Vn。
2.整个过程
Proposer生成提案:
1.prepare请求:Proposer选择一个新的提案编号Mn,然后向超过一半acceptor的acceptor集合发送请求,要求该集合中的acceptor做出如下回应:
1).不能再批准任何编号小于Mn的提案
2).若果acceptor已经批准过任何提案,那向proposer反馈已批准过得提案中编号最大的提案的值
2.如果proposer收到了半数以上的acceptor的响应结果,则它可以产生编号为Mn,值为Vn的提案,这里的Vn是指的所有响应中编号最大的提案的值。若半数以上的acceptor未批准过任何的提案,则Vn的值又Proposer任意选择
在提案确定之后,proposer会向acceptor集合再次发送该提案,称此请求为accept请求。
Acceptor批准阶段:
Acceptor会收到来自proposer的两种请求:
Prepare请求:Acceptor可以在任何时候响应一个prepare请求
Accept请求: 若acceptor为响应过任何编号大于Mn的请求,那么它就可以接受这个编号为Mn的请求。
Paxos算法简单介绍的更多相关文章
- 算法笔记_071:SPFA算法简单介绍(Java)
目录 1 问题描述 2 解决方案 2.1 具体编码 1 问题描述 何为spfa(Shortest Path Faster Algorithm)算法? spfa算法功能:给定一个加权连通图,选取一个 ...
- Paxos算法简单陈述
上文二段式和三段式提交协议是相对比较容易理解的.1990年Leslie Lamport 提出的Paxos算法是一种基于消息传递且具有高度容错特性的一致性算法.但是Paxos算法比较复杂,对于不能沉心学 ...
- Berlekamp-Massey算法简单介绍
请阅读本文的同学们注意:之前这篇博客和所附代码有点问题,求的不一定是最短递推式,非常抱歉 看毛爷爷的论文大概断断续续看了一个月了,看得不是很懂,google了一波好像很快就看懂了,就先口胡一下这个算法 ...
- 垃圾回收算法简单介绍——JVM读书笔记<二>
垃圾回收的过程主要包含两部分:找出已死去的对象.移除已死去的对象. 确定哪些对象存活有两种方式:引用计数算法.可达性分析算法. 方案一:引用计数算法 给对象中加入一个引用计数器.每当有一个地方引用它时 ...
- 算法笔记_068:Dijkstra算法简单介绍(Java)
目录 1 问题描述 2 解决方案 2.1 使用Dijkstra算法得到最短距离示例 2.2 具体编码 1 问题描述 何为Dijkstra算法? Dijkstra算法功能:给出加权连通图中一个顶点, ...
- 算法笔记_070:BellmanFord算法简单介绍(Java)
目录 1 问题描述 2 解决方案 2.1 具体编码 1 问题描述 何为BellmanFord算法? BellmanFord算法功能:给定一个加权连通图,选取一个顶点,称为起点,求取起点到其它所有顶 ...
- 算法笔记_069:Floyd算法简单介绍(Java)
目录 1 问题描述 2 解决方案 2.1 使用Floyd算法得到最短距离示例 2.2 具体编码 1 问题描述 何为Floyd算法? Floyd算法功能:给定一个加权连通图,求取从每一个顶点到其它所 ...
- PrincetonUniversity-Coursera 算法:算法简单介绍
Course Overview What is this course? Intermediate-level survey course. Programming and proble solvin ...
- 分布式理论:深入浅出Paxos算法
前言 Paxos算法是用来解决分布式系统中,如何就某个值达成一致的算法.它晦涩难懂的程度完全可以跟它的重要程度相匹敌.目前关于paxos算法的介绍已经非常多,但大多数是和稀泥式的人云亦云,却很少有人能 ...
随机推荐
- ios-制作静态.a文件
一.制作静态库文件 /*静态库制作*/ // MakeA.h -(NSString*)testA; // MakeA.m -(NSString*)testA{ return @"静态库测试成 ...
- 如何保存PDF、Word和Excel文件到数据库中
在项目中,有时候我们很需要把PDF.Word和Excel文档等等上传到数据库,以便日后使用.今天这篇文章向大家讲解如何将这些文件保存到数据库的. 详细步骤 第一步:打开数据库,单击新建查询,创建一个名 ...
- php钩子程序设计
序 作为程序员,设计出优雅而完美的系统,永远是让我们非常兴奋的事情.高手不在于你会多少语言,而在于你有多高的思想. 在设计中,怎么体现自身价值,那就是要比别人多想几步. 讲钩子程序,起 ...
- LeetCode题解 15题 第二篇
之前写过一篇,这是第二篇.上一篇用了多种编程语言来做,这一次是以学算法为主,所以打算都用python来完成. 4. Median of Two Sorted Arrays There are two ...
- 微信小程序数据请求方法wx.request小测试
微信小程序数据请求方法 wx.request wxml文件: <view> <textarea value="{{textdata}}"/> </vi ...
- 转载--初识绘图工具plantUML
原文出处:http://www.jianshu.com/p/e92a52770832 什么是 PlantUML PlantUML 是一个画图脚本语言,用它可以快速地画出: 时序图 流程图 用例图 状态 ...
- C#笔记(二)变量之预定义的引用类型
1.object类型 在C#中, object类型就是最终的父类型,所有内置类型和用户定义的类型都从它派生而 来. 这样, object类型就可以用于两个目的了: 可以使用object引用绑定任何子类 ...
- 替换ubuntu 14.04的源
1. 背景(为什么要替换)安装ubuntu,默认源是(http://extras.ubuntu.com/ubuntu),国内访问很慢...当我们用apt-get安装软件包或者更新时有时很慢,所以才想到 ...
- schemes-universalLink-share_IOS-android-WeChat-chunleiDemo
schemes-universalLink-share_IOS-android-WeChat-chunleiDemo The mobile terminal share page start APP ...
- php相关书籍视频
虽然如今web领域,PHP JSP .NET 并驾齐驱,但PHP用的最广,原因不用我多说. 首先发一个PHP手册,方便查询,这个肯定是学PHP必备的. 下载地址:http://u.115.com/f ...