Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1882534
  • 博文数量: 1000
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 7921
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-20 09:23
个人简介

storage R&D guy.

文章分类

全部博文(1000)

文章存档

2019年(5)

2017年(47)

2016年(38)

2015年(539)

2014年(193)

2013年(178)

分类: 服务器与存储

2015-01-12 15:14:20

 在众多的分布式一致性算法中,经常需要通过节点的数量满足某种规则来保证算法的正确性,比如Paxos算法,依赖一个”多数派“ 节点的工作的正确性。这类算法的共同目标是容许尽量多的节点失败但又不影响算法的正确性”。

  这类问题本质上都抽象为数学上集合之间的逻辑关系,下面我们便从集合的性质入手讨论,为此先引入两个问题:

  假设N为一非空结合,n为集合的元素数,M1,M2,...,Mm为N的m个子集,其元素数分别为n1,n2,...,nm,则:

  • 求得M1∩M2∩...∩Mn≠Φ的条件
  • 求得M1∩M2∩...∩Mn交集的最小个数

1. 两个元素

为此,我们先从M的两个子集A、B(元素数分别为a、b)开始,假如A、B有交集则必须a+b>n,若a+b=n,则恰好将N划分为两个完全划分(不相交的子集),因此大于N一定能保证相交。此时:a+b-n即为交集的最小个数,原因是不妨设(a-i)+b=n,为N的两个完全划分,则为i即为A与B重合的元素,i=a+b-n。

2. 三个元素

三个集合有交集的条件是什么?假如I=A∩B,则第三个集合只要与I有交集即可,这就把三个集合的问题转化为2个集合,因为两个集合的最小交集为a+b-n,因此,C的元素个数c必须满足c+(a+b-n)>n即a+b+c>2n才能保证有交集。同理,a+b+c-2n为交集最小个数

3.归纳证明

通过:

  • 两个集合的交集条件:a+b>n
  • 两个集合的交集个数:a+b-n
  • 三个集合的交集条件:a+b+c>2n
  • 三个集合的交集个数:a+b+c-2n

推测:

  • m个集合的交集条件:n1+n2+...+nm>(m-1)*n
  • m个集合的交集和数:n1+n2+...+nm-(m-1)*n

不妨令t个集合时上述条件成立:

  • t个集合的交集条件:n1+n2+...+nt>(t-1)*n
  • t个集合的交集和数:n1+n2+...+nt-(t-1)*n

则对t+1个集合必有:

  • t+1个集合的交集条件:n1+n2+...+nt+nt+1>t*n
  • t+1个集合的交集和数:n1+n2+...+nt+nt+1-t*n

当t+1个集合与前面t个集合有交集时,必有

 n1+n2+...+nt-t*n+nt+1-n>n,整理即得所证结论。特别当m个集合元素数相同时,比如都为a,则相交条件为:ma>(m-1)n=>a>(1-1/m)n,只要m稍微大点,a与n会非常接近。

4. Paxos算法中的Quorum

在Paxos算法中能保证算法正确运行的节点数为Quorum,Qc、Qf 分别为Classic Paxos与Fast Paxos的Quorum

在classic paxos算法中,只要两个子集有交集即可,也即m=2,则a>n/2  <=> |Qc| ≥[n/2]+1 

在Fast Paxos算法中,引入了三个集合:

  • 一个classic round的Quorum Qc
  • 两个fast round的Quorum Qf1,Qf2

要求:

  • Qc∩Qc≠Φ ---------(a)
  • Qc∩Qf∩Qf≠Φ----(b)

即三个集合有交集。但在Fast Paxos中描述问题的形式稍微有点改变:

F是Classic Round允许的最大失败数,E是Fast Round允许的最大失败数,E<=F,上面等价于:

  • (a),即m=2,N-F =>N-F>N/2 =>N>2F
  • (b),即m=3,N-F+N-E+N-E>2N =>N>2E+F>3E

如果E取上限E=F,则N>3F<=>F F≤?N/3? -1,因此:(Qc、Qf 分别为Classic Round与Fast Round的Quorum)

|Qc| = |Qf | ≥ N ? ?N/3? + 1 ≥ ?2N/3? + 1-----------(1)

 

如果F取得上限N>2F <=> F≤?N/2? -1,根据N>2E+F <=> N >2E+?N/2? -1 <=> 2E ≤N-?N/2? <=> E≤?N/4?,因此:

|Qc| ≥N-?N/2?+1 = ?N/2?+1

|Qf |≥N-?N/4?≥?3N/4?-----------(2)

上述(1)、(2)都为可行性结果,统称为保证一致性算法的节点下限。但在实际中因为(1)保证|Qc| = |Qf |,编程更简单、清晰,使用的会更多一些。

根据这个结论,会得出Classic Paxos与Fast Paxos所需的最小节点数:


  • Classic Paxos:N>2F≥2F+1≥3
  • Fast Paxos:N>2E+F≥3E+1≥4
即在允许一个节点失败的情况下,Classic Paxos至少需要3个节点,而Fast Paxos则需要4个。


很明显,通过集合工具能极大地简化一致性算法的共性问题的研究。

5. 参考资料

  • On the Coordinator’s Rule for Fast Paxos
  • Fast Paxos
     
阅读(730) | 评论(0) | 转发(0) |
0

上一篇: FLP Impossibility

下一篇:RSA公钥加密算法

给主人留下些什么吧!~~