标签:blog http os 使用 ar for art div 问题
在众多的分布式一致性算法中,经常需要通过节点的数量满足某种规则来保证算法的正确性,比如Paxos算法,依赖一个”多数派“ 节点的工作的正确性。这类算法的共同目标是容许尽量多的节点失败但又不影响算法的正确性”。
这类问题本质上都抽象为数学上集合之间的逻辑关系,下面我们便从集合的性质入手讨论,为此先引入两个问题:
假设N为一非空结合,n为集合的元素数,M1,M2,...,Mm为N的m个子集,其元素数分别为n1,n2,...,nm,则:
为此,我们先从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。
三个集合有交集的条件是什么?假如I=A∩B,则第三个集合只要与I有交集即可,这就把三个集合的问题转化为2个集合,因为两个集合的最小交集为a+b-n,因此,C的元素个数c必须满足c+(a+b-n)>n即a+b+c>2n才能保证有交集。同理,a+b+c-2n为交集最小个数
通过:
推测:
不妨令t个集合时上述条件成立:
则对t+1个集合必有:
当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会非常接近。
在Paxos算法中能保证算法正确运行的节点数为Quorum,Qc、Qf 分别为Classic Paxos与Fast Paxos的Quorum
在classic paxos算法中,只要两个子集有交集即可,也即m=2,则a>n/2 <=> |Qc| ≥[n/2]+1
在Fast Paxos算法中,引入了三个集合:
要求:
即三个集合有交集。但在Fast Paxos中描述问题的形式稍微有点改变:
F是Classic Round允许的最大失败数,E是Fast Round允许的最大失败数,E<=F,上面等价于:
如果E取上限E=F,则N>3F<=>F<N/3 <=> 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所需的最小节点数:
很明显,通过集合工具能极大地简化一致性算法的共性问题的研究。
转自:http://blog.csdn.net/chen77716/article/details/7295728
标签:blog http os 使用 ar for art div 问题
原文地址:http://www.cnblogs.com/javaleon/p/3945871.html