ISIS中定义了三种通信原理ABCAST,CBCAST,GBCAST。ABCAST提供松散同步通信,用于向组成员传送消息;CBCAST提供虚拟同步通信,也用于向组成员传送消息;GBCAST与ABCAST类似,用于管理组内成员而不传送普通数据。
由于分布式考试的需要,这篇bolg主要结合考试题介绍CBCAST算法的主要解题步骤。
对于CBCAST算法而言,决定各个进程对到来的消息是接收还是等待,如果同时满足以下两个条件就是接收,否则等待:
假设 是发送方向量中的地
位,
是接收方向量的第
位,假设消息由
(进程
)发送:
(1)需要满足 =
;
(2)对所有的 (
),有
。
eg1:对于下列表格表示的进程,由进程1向其他的进程发送消息,此时刻,哪些进程需要等待,哪些进行可以接收消息。
解:对于此题,需要分别分析两个条件是否满足。
对于条件(1):消息由进程1发送,则首先需要满足
也就是对于每个进程的第一维数据(4,3,3,3,2,3)而言,4=3+1,所以可以看出进程5不能接收消息,需要等待,其余进程均满足条件(1)。
对于条件(2):消息由进程1发送,则需要满足 (即所有进程排除第一维数据),有
所以对于1-6这几个进程而言,排除第一维数据后,其余的数据都需要比进程1的各维数据相等或更大,所以可以看出对于进程3而言5<6,所以进程3不能接收消息,需要等待。
综上两个条件,进程3,5需要等待,其余进程均可同时满足条件(1)(2),所以可以接收进程1发送的消息。
eg2:
对于此题,类比上面的解法,就是进程1,4,5需要等待;3,6可以接收消息。