欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

分布式计算-故障模型及故障检测

程序员文章站 2022-04-29 10:55:50
...

一、故障模型:

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的进程的投票,绝大多数进程已经计算这个值,不必所有正确进程都这样做,由于协调器仅仅等待固定的票数,有些不一致的投票可能漏掉。