分散式系統原理---CBCAST演算法

楊木木8023發表於2020-11-26

ISIS中定義了三種通訊原理ABCAST,CBCAST,GBCAST。ABCAST提供鬆散同步通訊,用於向組成員傳送訊息;CBCAST提供虛擬同步通訊,也用於向組成員傳送訊息;GBCAST與ABCAST類似,用於管理組內成員而不傳送普通資料。

由於分散式考試的需要,這篇bolg主要結合考試題介紹CBCAST演算法的主要解題步驟。

對於CBCAST演算法而言,決定各個程式對到來的訊息是接收還是等待,如果同時滿足以下兩個條件就是接收,否則等待:

假設 V_{i} 是傳送方向量中的地 i 位,L_{i} 是接收方向量的第 i 位,假設訊息由 j (程式j)傳送:

(1)需要滿足 V_{j} = L_{j} + 1 ;

(2)對所有的 i<>j (i\neq j),有 V_{i}\leq L_{i} 。

eg1:對於下列表格表示的程式,由程式1向其他的程式傳送訊息,此時刻,哪些程式需要等待,哪些進行可以接收訊息。

解:對於此題,需要分別分析兩個條件是否滿足。

對於條件(1):訊息由程式1傳送,則首先需要滿足 V_{1} = L_{1} + 1

也就是對於每個程式的第一維資料(4,3,3,3,2,3)而言,4=3+1,所以可以看出程式5不能接收訊息,需要等待,其餘程式均滿足條件(1)。

對於條件(2):訊息由程式1傳送,則需要滿足 i\neq j (即所有程式排除第一維資料),有 V_{i}\leq L_{i} 

所以對於1-6這幾個程式而言,排除第一維資料後,其餘的資料都需要比程式1的各維資料相等或更大,所以可以看出對於程式3而言5<6,所以程式3不能接收訊息,需要等待。

綜上兩個條件,程式3,5需要等待,其餘程式均可同時滿足條件(1)(2),所以可以接收程式1傳送的訊息。

eg2:

對於此題,類比上面的解法,就是程式1,4,5需要等待;3,6可以接收訊息。

 

 

 

 

相關文章