分布式一致性的基石---Paxos算法(1)
分布式一致性的基石---Paxos算法(1)
Paxos算法是由微软的工程师Lamport提出,Lamport依靠Paxos算法获得图灵奖;
Paxos算法旨在解决相互信任的分布式系统中,多个节点能快速达成一个一致的值;
目前,google的Chubby, 雅虎的Zookeeper, Oracle的MySql Replication Group, 腾讯的PhxSql,PhxQueue, 阿里的AliSql等都由Paxos算法作为一致性的基础;
在互联网公司的应用场景下,通常用Zookeeper作为分布式协作服务; 可能不需要研究Paxos的实现;
在一些传统的企业,可以在服务中实现Paxos算法来满足不能部署Zookeeper的场景;
由浅入深,这次只讨论朴素Paxos的实现;
后面的章节会扩展讨论 Multi Paxos 算法和 Paxos 的数学推理证明,
目前最好的 Paxos 的实现是腾讯的PhxPaxos;
之前写过一篇腾讯PhxPaxos的编译流程:https://www.cnblogs.com/lijingshanxi/p/10089351.html
看代码最快的方法是自己加点日志,来熟悉代码流程; 在上述的编译流程里面有介绍;
朴素Paxos算法约束:

活锁:
假设集群中有2个Proposor, 3个Accepter;
每次在Prepare阶段,都能获得多数派的响应,但是每次在Accept阶段,都没有达成多数派的接受,如果这样的情况一致持续下去,就发生了活锁;

两个Proposor在Prepare阶段都获得了多数派的响应,但是在Accept阶段没有达成多数派的通过,交替这样,就形成了活锁;
这里面还有一个关键的地方,每次Prepare阶段,Proposor1都没有获得已经接受过Proposor2的提议的Acceptor的响应, Proposor2都没有获得已经接受过Proposor1的提议的Acceptor的响应;
即使发生活锁,依然不会破坏朴树Paxos的一致性,因为要么多数派节点达成共识,要么多数派节点不能形成共识;
分布式一致性的基石---Paxos算法(1)的更多相关文章
- 搞懂分布式技术2:分布式一致性协议与Paxos,Raft算法
搞懂分布式技术2:分布式一致性协议与Paxos,Raft算法 2PC 由于BASE理论需要在一致性和可用性方面做出权衡,因此涌现了很多关于一致性的算法和协议.其中比较著名的有二阶提交协议(2 Phas ...
- 分布式数据库中的Paxos 算法
分布式数据库中的Paxos 算法 http://baike.baidu.com/link?url=ChmfvtXRZQl7X1VmRU6ypsmZ4b4MbQX1pelw_VenRLnFpq7rMvY ...
- 分布式理论之一:Paxos算法的通俗理解
维基的简介:Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人现在在微软研究院)于1990年提出的一种基于消息传递且具有高度容错特性 ...
- 一致性协议之Paxos算法
一.算法提出背景 Paxos算法需要解决的问题就是如何在一个可能发生诸如宕机或网络异常情况的分布式气筒中,快速且正确地在集群内部对某个数据的值达成一致,并且保证不论发生以上任何异常,都不会破坏整个系统 ...
- 分布式理论:深入浅出Paxos算法
前言 Paxos算法是用来解决分布式系统中,如何就某个值达成一致的算法.它晦涩难懂的程度完全可以跟它的重要程度相匹敌.目前关于paxos算法的介绍已经非常多,但大多数是和稀泥式的人云亦云,却很少有人能 ...
- Paxos 算法 :消息传递一致性
网络上有很多关于优秀的关于Paxos 算法的文章,我下面进行整理搜集一下: 分布式理论之一:Paxos算法的通俗理解 维基的简介:Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 L ...
- 使用GO实现Paxos分布式一致性协议
什么是Paxos分布式一致性协议 最初的服务往往都是通过单体架构对外提供的,即单Server-单Database模式.随着业务的不断扩展,用户和请求数都在不断上升,如何应对大量的请求就成了每个服务都需 ...
- Paxos算法小结
转自不正直的绅士,因百度空间迁移,无法注明出处,我从其google搜索引擎中的cache进行的copy. 不正直的绅士 是跟我一起工作过的非常有才的一个青年才俊. Paxos的使用非常广泛.sanlo ...
- 分布式一致性算法--Paxos
Paxos算法是莱斯利·兰伯特(Leslie Lamport)1990年提出的一种基于消息传递的一致性算法.Paxos算法解决的问题是一个分布式系统如何就某个值(决议)达成一致.在工程实践意义上来说, ...
随机推荐
- 【HP-UNIX】修改HP-UNIX主机名称
原文链接:https://blog.csdn.net/lantianbaiyunbj/article/details/53434537 HP-UX修改主机IP地址 方法一 1.set_parms ho ...
- 关于No qualifying bean of type [XXX.XXX] found for dependency 的一次记录
异常开始于spring+springmvc+mybatis 注解配置,启动tomcat服务器出现No qualifying bean of type [com.***.service] found f ...
- 稀疏矩阵 part 1
▶ 图片参考[http://www.bu.edu/pasi/files/2011/01/NathanBell1-10-1000.pdf] ▶ 各种系数矩阵的数据结构 ● MAT,原始矩阵数据 type ...
- IDEA 常用插件
Maven Helperp3pauto filling Java call argumentsCamelCaseVisualVM LauncherTranslation.ignoreGenerateA ...
- 注意source folder与folder是不同的,避免404错误
在整合ssm框架的时候,程序和配置文件都没写错,tomcat也部署成功了,但在访问的时候一直404,web项目自带的index.jap却能正常访问,一直找不到原因,后来发现建立放配置文件的文件夹con ...
- 数据库sql使用小结
1.更新数据库中表的字段的时候,如果更新的表本身含有最细粒度的字段,那么可以以最细粒度作为判断条件,一次性更新多个字段: 2.如果更新的表中本身不含有最细粒度字段,那么要更新多个字段时有两种思路: a ...
- php连接mysql(linux下)
一开始尝试了各种办法,.so文件拷贝了很多地方都失败了, 最后才知道 是编译php 没有开放 mysql ./configure --prefix=/usr/local/php5 --with-apx ...
- NTP时间服务
时间服务 NTP:Network Time Protocol 作用:用来给其他主机提供时间同步服务 NTP的配置文件 /etc/ntp.conf NTP相关的命令 date:显示/修改系统时间 hwc ...
- 初学python笔记---列表
---恢复内容开始--- 1.列表的格式:用方括号([])来表示的,逗号来分隔元素,下标从0开始 2.根据下标来查看列表中元素,当索引为-1时,显示的是最后一个元素 print(a[0])-----1 ...
- Analysis of Servlet
@WebServlet("/cdiservlet") public class NewServlet extends HttpServlet { private Message m ...