📜  分布式系统中的波与遍历算法

📅  最后修改于: 2022-05-13 01:56:14.168000             🧑  作者: Mango

分布式系统中的波与遍历算法

众所周知,分布式系统是一个集合,其中不同的进程为了执行任务而相互通信。在波算法中发生消息交换和决策,这取决于进程的每个事件中的消息数量。由于在连接的网络中遍历很重要,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|