Paxos Made Simple

来源:互联网 发布:网络运营岗位职责 编辑:程序博客网 时间:2024/06/05 04:57

Paxos Made Simple

Leslie Lamport

01 Nov 2001



摘  要

      当以通俗易懂的英语来描述paxos算法时,该算法是很简单的。(译者注:最原始的论文是以一个宗教会议场景来描述的,确实比较晦涩,后来作者重新用大白话写了一遍)

目录
1. 简介
2. 一致性算法
2.1 问题描述
2.2 选择一个值
2.3 学习被选择的值
2.4 整个过程
2.5 实现
3. 实现一个状态机
引用

1 简介

      使用paxos去实现一个容错的分布式系统时,该算法被认为是难以理解的,也许是之前的论文描述比较晦涩难懂。其实这是最简单和最显而易见的分布式算法之一。Paxos的核心是一个分布式算法-“宗教会议”算法【5】。下一章节将详细描述该算法的各个属性,最后一章节展示完整的paxos算法,将通过直接使用状态机来实现一个分布式一致性系统来描述该算法-因为状态机众所周知,该论文也许是分布式理论领域被引用次数最多的论文之一。

2 分布式一致性算法

       2.1 问题描述

      假设有多个processes(进程、过程集合)能够(propose)提议values(一个抽象的东西,如一个提案,一个值,或者指令),一个分布式一致性算法需要确保只有唯一的一个(proposed)被提议的value被(chosen)选择。如果没有value被提议,那么就不会有value被选择。如果一个value已经被选择,所有进程应该能够学习这个被选择的值。为了达到一致性,必须确保:
  • 只有被提议的value才能被选择
  • 最终只能选择唯一的value
  • 除非一个value已经确定被选定,否则所有进程不会学习这个value
      我们不会视图指定精确的活跃度要求(这里可能指的是系统并发规模等)。我们的目标是确保被提议的values中的某一个最终被选择,且如果一个value被选择,所有的进程都能够学习到这个value。为此,我们使用三个角色来描述该算法:proposers 提议者、acceptors 接受者、 learners 学习者。在具体实现中,一个单一进程可能会承担多种角色,但是这里不关心一个进程可能回担任的角色,因为这不影响该算法的描述。
      假设所有角色都能够相互发送消息。该算法使用异步、非拜占庭的模式。其中:
  • 每个角色都以任意速度运行,可能会因为停止而失败,或者被重启。因为所有角色都有可能在一个value被选定之前挂掉,然后在该value被选定后重启,为了达到分布式一致性,这个挂掉或被重启的角色必须自己能够记住一些信息。
  • 角色间相互传递的消息可以任意大小,可以丢失,可以被重复发送。但是他们没有被破坏,是完整正确的。
待续。


原创粉丝点击