分布式系统中的波与遍历算法
众所周知,分布式系统是一个集合,其中不同的进程为了执行任务而相互通信。在波算法中发生消息交换和决策,这取决于进程的每个事件中的消息数量。由于在连接的网络中遍历很重要,Wave 算法在分布式数据库、无线网络等许多领域都有应用。
符号:
- 进程中的计算(C)表示为 ICI
- 计算(C)中过程(p)的任何子集都表示为 C p 。
- 所有进程的集合用 P' 表示,
- E 的通道集合。
- 流程开始的节点称为启动器或启动器。
- 网络中的任何非发起者节点称为追随者。
- 发起者的事件是发送事件
- 非发起者的事件已经接收到该事件。
波浪算法:
满足这三个要求的算法被认为是分布式算法中的波算法:
- 终止:每次计算都是有限的。
- ∀C : LC| < ∞
- 决策:每个计算至少包含一个决策事件。
- ∀C: ∃e ∈ C: e 是决定性事件。
- 依赖性:在每次计算中,每个决定的事件都会在每个进程中随意地出现在一个事件之前。
- ∀C: ∀e ∈ C : (e 是一个决定事件⇒ ∀q ∈ P' ∃f ∈C q : f ≥ e)。
波算法从一个特定的过程开始,波传播给它的邻居,邻居传播给他们的邻居,等等。当没有其他节点传播波返回时。
Wave 算法的优势在于异步通信,其中临时链和消息链之间存在等效性。在波动算法中,因果依赖的计算需要消息链的存在。波浪算法可以基于以下属性而彼此不同:
- 集中化:如果它们有一个发起者或多个发起者,则算法彼此不同。
- 一种算法在每次计算中只有一个发起者称为集中式,
- 如果算法可以由称为分散的过程的任意子集自发启动。
- 初始知识:如果算法在过程中具有初始知识,则它们彼此不同。
- 进程标识:每个进程都有其唯一的名称。
- 邻居身份:每个进程都知道他邻居的名字。
- 复杂度:算法考虑的复杂度
- 交换消息的数量
- 交换的位数,
- 一次计算所需的时间。
波的性质:
- 计算中的每个事件之前都有一个启动器中的事件。
- 一种用于任意网络的波算法,无需初步了解邻居的身份。然后算法在每次计算中至少交换 lEI 消息。
由于数据包的传播是由节点的波网络完成的,它可以被视为偏序关系,
现在,考虑一个二元关系 ≤ * by x ≤ * y ⇐⇒ (x * y) = x,即;在关系中,≤* 是 X 上的偏序,即该关系是传递的、反对称的和自反的。
- 传递性:我们知道 x≤ y 和 y≤ z 则 x≤ z,假设 x ≤ * y 和 y ≤ * z;根据 ≤ *的定义,(x*y) = x 和 (y*z) = y。使用这些和关联性,我们发现 (x * z) = (x * y) * z = x * (y * z) = x * y = x,即 x ≤ * z。
- 反对称:假设 x ≤ * y 和 y ≤ * x;根据 ≤ * 、 x * y = x 和 y * x = y 的定义。使用这些和交换性,我们发现 x = y。
- 自反性:x * x = x,即x ≤ * x,可以用幂等性证明自反性。
由于它满足所有三个属性,因此我们得出结论波算法可以被视为偏序关系。
不同的波浪算法:
环算法:选择过程传播的通道,使其形成哈密顿循环(遍历所有节点)。换句话说,给定过程(p)及其邻居(Next p ),使得以这种方式选择的通道形成哈密顿循环(遍历所有节点)。
- 它只有一个启动器。
- 每个其他节点都向前传递消息。
- 环算法是中心化的。
- 发起者是决策节点。
For initiator-
begin
send (tok) to Nextp;
receive (tok);
decide;
end
Ring algorithm for non initiator-
begin
receive (tok);
send (tok) to Nextp;
end
轮询算法:该算法将发出一个波,该波将到达所有节点并返回给发起者,当波平息时,算法将终止。
- 它适用于集团网络。
- 它只有一个启动器。
- 轮询算法是集中式的。
- 发起者是决策节点。
在轮询算法中,发起者要求每个邻居回复一条消息,并在收到所有消息后做出决定。
Polling algorithm for Initiator-
var recp: integer init 0;
begin
for all q Neighp
do send (tok)to qf;
while recp<#Neighp do
begin
receive(tok);
recp:= recp + 1;
end
decide
end
// here recp is used as a count variable
Polling algorithm for non Initiator-
begin
receive (tok)from qf;
send (tok) to q;
end
轮询也可以用于以发起者为中心的星型网络。
注意: Wave 算法用于所有基本任务,即广播、同步和计算全局功能。
遍历算法:
波浪算法具有以下两个附加属性:
- 发起者是唯一决定
- 所有事件完全由参与者按因果顺序排列。
具有这些属性的波算法称为遍历算法。或遍历算法,如果它满足这些属性:
- 在每次计算中,有一个发起者,它通过发送一个消息来启动算法
- 进程收到消息后,要么发出一条消息,要么做出决定。
- 每个进程至少发送了一次消息,然后算法在发起者处终止。
遍历算法示例:
顺序轮询算法:顺序轮询算法与轮询算法相同。
- 一次轮询一个邻居。
- 只有在收到前一个邻居的回复时,才会轮询下一个邻居。
Sequential Polling algorithm for Initiator-
var recp: integer init 0;
begin
while recp<#Neighp do
begin
send(tok)to qrecp+1;
receive(tok);
recp:= recp + 1;
end;
decide
end
Sequential Polling algorithm for non Initiator-
begin
receive (tok)from q;
send (tok) to q;
end
注意:遍历算法用于构造选举算法。
拓扑:
- 环:它是一个循环网络结构,每个网络恰好与两个网络相连。
- 树:它是一种层次拓扑,其中根网络连接到所有其他网络,并且至少有三个层次结构。
- Clique:网络通道存在于每对进程之间。
衡量算法效率的指标是:
- 时间复杂度是最长链中的消息数。
- 消息复杂度是算法执行的消息数量。
下表显示了不同算法及其属性:
- N 是进程数
- lEI 通道数
- D 网络的直径(以跳为单位)。
- DFS – 深度优先搜索
S.No. | Algorithm | Topology | Centralized(C)/ Decentralized(D) | Traversing | Message Complexity(M) | Time Complexity |
---|---|---|---|---|---|---|
01. | Ring | ring | C | no | N | N |
02. | Tree | tree | D | no | N | O(D) |
03. | Echo | arbitrary | C | no | 2|E| | O(N) |
04. | Polling | clique | C | no | 2N-2 | 2 |
05. | Finn | arbitrary | D | no | <=4.N.|E| | O(D) |
06. | Sequence Polling | clique | C | yes | 2N-2 | 2N-2 |
07. | Classical DFS | arbitrary | C | yes | 2|E| | 2|E| |