分布式计算-故障模型及故障检测
一、故障模型:
1、初始死进程:在局部算法中没执行过一步,则称进程为初始死进程。
2、损毁模型:如果进程正确地执行局部算法到某一时刻,此后并不进一步执行则称它是损毁。
3、BYzantine行为:如果它执行了与局部算法不一致的任意步,则称进程是Byzatine的。
二、判定问题:
1、终止性:所有正确进程都将进行判定,即最终向输出写值。
2、一致性:在不同进程所进行的判定之间强加了一种关系。最简单的情形是要求所有判定是相同的。
3、非平凡性:排除了基于问题的固定输出的算法,其中每个进程不经通信就可以判定。
三、故障检测:
每个节点向各节点发送一条消息。对于每个进程q,每个节点等待(收集N-T条消息),直到来自q的消息到达,或者q受到怀疑。
四、利用◇S的旋转协调器算法
xi:=input;
r:=o;
while true do
begin (*开始新一的轮,计算
r:=r+1;c:=(r mod N)+1;
(*1:所有进程送值给协调者*)
send <value,xi,r> to pc;
(*2:协调者计算输出*)
if i=c then
begin wait N-t mesgs. <value,vj,r> have been received;
v:=majority of values;
d:=(所有j:vj=v);
for j do send <outcome,d,v,r> to pj
end;
(*3:计算轮*)
if collect <outcome,d,v,r> from pc then
begin xi:=v;
if (d∧(yi=@)) then decide(v)
end
end
协调器必须扩展它的活动,首先收集所有进程的当前值,并检查它们是否一致,但是由于错误的怀疑,协调器可能只有效地收集不到一半的活动值,就宣布一个值为最终结果,所以要做出限制:在收集阶段,等待N-T的进程的投票,绝大多数进程已经计算这个值,不必所有正确进程都这样做,由于协调器仅仅等待固定的票数,有些不一致的投票可能漏掉。
上一篇: 协方差矩阵