zoukankan      html  css  js  c++  java
  • Paxos与zookeeper

    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/

  • 相关阅读:
    技术选型总结
    这些年来收集的好用的好玩的软件,强烈推荐给大家
    如何解决markdown中图片上传的问题
    01.如何把.py文件打包成为exe,重点讲解pyinstaller的用法
    Asp.net中汉字转换成为拼音
    程序员常用网址收集
    通过IP来判断所在城市
    以太坊
    分布式系统领域经典论文翻译集
    T50
  • 原文地址:https://www.cnblogs.com/chenying99/p/4105451.html
Copyright © 2011-2022 走看看