1,什么是Paxos算法?

Paxos算法是分布式计算领域中一个非常重要的算法,主要解决分布式系统如何就某个值(决议)达成一致的问题。一个典型的场景是分布式数据库的一致问题:如果分布式数据库的各个节点初始状态一致,又能执行相同的操作序列,那么最后能达到一个一致的状态。但是如何保证在每个节点上执行相同的命令序列呢?这就需要在每条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。Paxos算法便是这样一种一致性算法,它由大牛Lamport于1990年提出,在Lamport的论文中,他虚拟了一个叫“Paxos”的城邦并以讲故事的方式阐述算法,因此叫做Paxos算法。

Paxos是一个较为复杂的算法,在网上也有很多解析,具体可以看维基百科上的论述(http://zh.wikipedia.org/zh-cn/Paxos%E7%AE%97%E6%B3%95)。

2,Paxos算法的具体内容是什么?

根据前面讲到的一致性算法需要解决的问题,Paxos需要保证:一次选举(分布式节点对决议进行投票并批准的过程)中只批准一个决议(value),只有被提出(proposed)的决议才能被批准,只有被批准的决议才能被学习(即可以执行或保存这个决定的内容)。为便于描述选举过程,Paxos为参与者设定了3个角色:proposer(提出决议),acceptor(批准决议)和learner(学习决议),从而将一致性算法的要求阐述如下:

  1. 决议(value)只有在被proposers提出后才能批准;
  2. 在一次Paxos算法的执行过程中,只会批准一个value;
  3. learners只能获取到被批准的value;

算法的具体过程如下,它将一次选举过程分为了两个阶段:Prepare和Accept

Prepare阶段

  1. proposer选择一个提案(表示未被批准的决议)编号n,将prepare请求发给acceptor中的一个多数派;
  2. 如果acceptor发现n是它已回复的请求中编号最大的,它会将上次接受的提案回复给proposer,并且承诺以后不会回复编号小于n的提案

Accept阶段

  1. 如果proposer接收到了多数派的回应,它发送一个accept消息到acceptor的多数派,包括提案编号n和value
  2. 在不违背自己向其它proposer的承诺前提下,acceptor收到accept请求后即接受这个请求;

3,Paxos怎样应用到了Zookeeper?

Paxos算法的应用非常的广泛,分布式协调系统zookeeper也是基于paxos来实现的。

  1. leader选举。zookeeper在leader选举时采用了paxos算法(主要是fast paxos,Lamport于2005年提出的快速paxos);
  2. 一致性复制。zookeeper使用了一种称为zab(zookeeper atomic broadcast)的协议作为一致性复制的核心,作者认为是一种新的算法,但实际上也可以认为是Paxos的一种简化和优化

http://www.zhouyoudao.com/paxosandzookeeper/

Paxos与zookeeper的更多相关文章

  1. 《从Paxos到Zookeeper:分布式一致性原理与实践》【PDF】下载

    内容简介 Paxos到Zookeeper分布式一致性原理与实践从分布式一致性的理论出发,向读者简要介绍几种典型的分布式一致性协议,以及解决分布式一致性问题的思路,其中重点讲解了Paxos和ZAB协议. ...

  2. 从Paxos到Zookeeper 分布式一致性原理与实践读书心得

    一 本书作者介绍 此书名为从Paxos到ZooKeeper分布式一致性原理与实践,作者倪超,阿里巴巴集团高级研发工程师,国家认证系统分析师,毕业于杭州电子科技大学计算机系.2010年加入阿里巴巴中间件 ...

  3. 《从Paxos到ZooKeeper分布式一致性原理与实践》学习笔记

    第一章 分布式架构 1.1 从集中式到分布式 集中式的特点: 部署结构简单(因为基于底层性能卓越的大型主机,不需考虑对服务多个节点的部署,也就不用考虑多个节点之间分布式协调问题) 分布式系统是一个硬件 ...

  4. 《从Paxos到ZooKeeper 分布式一致性原理与实践》读书笔记

    一.分布式架构 1.分布式特点 分布性 对等性.分布式系统中的所有计算机节点都是对等的 并发性.多个节点并发的操作一些共享的资源 缺乏全局时钟.节点之间通过消息传递进行通信和协调,因为缺乏全局时钟,很 ...

  5. 我读《从Paxos到zookeeper分布式一致性原理与实践》

    从年后拿到这本书开始阅读,到准备系统分析师考试之前,终于读完了一遍,对Zookeeper有了一个全面的认识,整本书从理论到应用再到细节的阐述,内容安排从逻辑性和实用性上都是很优秀的,对全面认识Zook ...

  6. 从 Paxos 到 ZooKeeper

    分布式一致性 分布式文件系统.缓存系统和数据库等大型分布式存储系统中,分布式一致性都是一个重要的问题. 什么是分布式一致性?分布式一致性分为哪些类型?分布式系统达到一致性后将会是一个什么样的状态? 如 ...

  7. 2月22日 《从Paxos到Zookeeper 分布式一致性原理与实践》读后感

    zk的特点: 分布式一致性的解决方案,包括:顺序一致性,原子性,单一视图,可靠性,实时性 zk的基本概念: 集群角色:not Master/Slave,is Leader/Follower/Obser ...

  8. [从Paxos到ZooKeeper][分布式一致性原理与实践]<二>一致性协议[Paxos算法]

    Overview 在<一>有介绍到,一个分布式系统的架构设计,往往会在系统的可用性和数据一致性之间进行反复的权衡,于是产生了一系列的一致性协议. 为解决分布式一致性问题,在长期的探索过程中 ...

  9. 《从Paxos到ZooKeeper 分布式一致性原理与实践》阅读【Leader选举】

    从3.4.0版本开始,zookeeper废弃了0.1.2这3种Leader选举算法,只保留了TCP版本的FastLeaderElection选举算法. 当ZooKeeper集群中的一台服务器出现以下两 ...

随机推荐

  1. Numpy 基础知识

    1.使用ipython --pylab 自动加载 Numpy.Scipy.Matplotlib模块. 创建数组a = arange(10) b = arange(10,dtype='f')c = ar ...

  2. 线性判别分析LDA详解

    1 Linear Discriminant Analysis    相较于FLD(Fisher Linear Decriminant),LDA假设:1.样本数据服从正态分布,2.各类得协方差相等.虽然 ...

  3. SearchEngine Note

    [SearchEngine Note] 1.查全率. 2.查准率. 3.查全率与查准率的关系. 4.四大系统. 5.权威性网页反向链接多.网页的平均出席为25.7,即平均每一个网页含有25.7个指向其 ...

  4. java swing:文本框添加滚动条

    有几点要注意: 1.默认的滚动条,仅在输入的文本超过文本框时才会显示..没有超过文本框是不会显示的: 2.设置矩形大小,是在滚动条上设置,而不是在文本框上设置: 示例代码如下: public clas ...

  5. python学习——urlparse模块

    urlparse模块: 1.urlparse() 具体程序及结果如下: >>> url = 'http://i.cnblogs.com/EditPosts.aspx?opt=1'&g ...

  6. My97DatePicker 日历控件

    My97DatePicker 是一款非常强大的日历控件,使用也非常简单,也能修改源码,牛逼我就不吹了,自己用用看 使用 1.引入 <script language="javascrip ...

  7. 6-Linux 上mysql的常用命令 以及 tomcat的相关指定

    mysql -u root -p 进入Mysql //注意一下有逗号!!! show databases; //显示所有的数据库 drop database mydb; // 删除mydb这个数据库 ...

  8. actionBar_Tab导航

    actionBar配合碎片使用  初始化actionBar要注意设置actionbar的导航模式 package com.qf.actionbar04_tab; import java.io.File ...

  9. Android可以子线程更新UI?

    初了解Android的时候,就知道Android是不能在子线程更新UI的,不然程序会直接抛出异常,告诉你,别给我在自线程搞事情! 但是,这个是针对普通的view做的限制,而TextureView,Su ...

  10. centos一键安装lnmp成功后无法访问ip(解决办法)

    自己搞了个服务器 (我的服务器网络类型是 专有网络)如下图点击 配置规则 进入到 进.出端口规则配置 点击添加安全组规则 如图所配置  添加完成后 就如下面所示 (配置完成后 通过ip就已经可以访问了 ...