部分同步网络中的共识问题解析
1. 引言
在网络系统中,共识问题是一个核心议题。之前我们在同步和异步网络设置中探讨过共识问题,而这次我们将目光聚焦于部分同步网络设置下的共识问题,并且仅考虑停止故障。部分同步网络设置下的共识结果与同步或异步设置下的结果有很大不同。我们将先介绍基于同步设置对应结果推导得出的基本算法和基本下界,由于时间不确定性,这两个结果在时间复杂度上存在差距。之后会给出更复杂的算法和下界结果,以缩小这个差距。
2. 问题定义
我们以与之前类似的方式定义一致性问题。系统 A 的外部接口包括 init(v)i 输入动作、decide(v)i 输出动作(其中 1 ≤ i ≤ n 且 v ∈ V),以及 stopi 输入动作。每个用户 Ui 有 init(v)i 输出和 decide(v)i 输入。Ui 是一个 MMT 自动机,在任何定时执行中最多执行一个 init 动作。
   对于 A 和用户 Ui 组成的组合系统,我们考虑以下条件:
   
   -
   
    格式良好性
   
   :在组合系统的任何定时执行中,对于任何端口 i,Ui 和 A 之间的交互格式良好。即 init 和 decide 动作序列是 init(v)i, decide(w)i 形式序列的某个前缀。
   
   -
   
    一致性
   
   :在任何定时执行中,所有决策值都相同。
   
   -
   
    有效性
   
   :在任何定时执行中,如果所有发生的 init 动作包含相同的值 v,那么 v 是唯一可能的决策值。
   
   -
   
    无故障终止
   
   :在所有端口都发生 init 事件的任何可允许无故障定时执行中,每个端口都会发生 decide 事件。
   
   -
   
    f - 故障终止(0 ≤ f ≤ n)
   
   :在所有端口都发生 init 事件的任何可允许定时执行中,如果最多有 f 个端口发生 stop 事件,那么每个非故障端口都会发生 decide 事件。当 f = n 时,即为无等待终止。
  
我们假设 A 是一个部分同步的发送/接收网络系统。每个进程 Pi 是一个 MMT 自动机,其每个(有限数量的)任务的时间界限为 τ1 和 τ2(0 < τ1 ≤ τ2 < ∞),令 L = τ2 / τ1。进程可能会出现停止故障。通道是可靠的 FIFO 通道,每个消息的传递时间上限为 d。
如果 A 能保证对于每个用户集合都满足格式良好性、一致性、有效性和无故障终止,我们就说 A 解决了一致性问题。我们关注不同 f 值下保证 f - 故障终止的算法,以及所有输入到达后,所有非故障进程做出决策所需的时间,尤其关注不确定性参数 L 在这个时间复杂度中的作用。在本文中,我们考虑一个特殊情况,即 V = {0, 1} 且网络图是完全连通的,同时假设 τ1 和 τ2 远小于 d,甚至 Lτ2 相对于 d 也很小。另外,我们还需要一个技术假设:非故障进程的每个进程任务始终是启用的(即使该任务唯一启用的动作可能是一个不引起状态变化的虚拟动作),这一假设便于我们在证明下界时考虑简单的步骤时间模式。
3. 故障检测器
一个有用的构建块是“完美故障检测器” F。在异步设置中我们定义过故障检测器,它以 stopi 动作作为输入,以 inform - stopped(j)i 动作作为输出(j ≠ i),inform - stopped(j)i 动作表示在位置 i 宣布进程 j 已停止。完美故障检测器保证只报告实际发生的故障,并最终将所有此类故障报告给所有其他非故障进程。这里与之前不同的是,我们不再假设故障检测器是一个 I/O 自动机,而是一个一般的定时自动机(GTA)。
   下面是一个实现完美故障检测器的部分同步网络系统算法:
   
   -
   
    PSynchFD 算法
   
   :
   
   - 每个进程 Pi 持续向所有其他进程 Pj 发送消息,为每个进程使用一个任务。
   
   - 如果进程 Pi 执行了足够多的 m 步而没有收到来自 Pj 的消息,它会记录 Pj 已停止,并输出 inform - stopped(j)i。
   
   - m 是严格大于 (d + τ2) / τ1 + 1 的最小整数。
  
   
    定理 25.1
   
   :PSynchFD 是一个完美故障检测器。
   
   
    证明
   
   :显然所有故障最终都会被所有其他非故障进程检测到。我们需要证明只会检测到实际发生的故障。假设 Pi 输出 inform - stopped(j)i,那么在此之前,Pi 执行了超过 (d + τ2) / τ1 + 1 步而没有收到来自 Pj 的消息,这意味着时间严格大于 d + τ2 过去,Pi 都没有收到来自 Pj 的任何消息。但由于 Pi 向 Pj 连续发送消息的时间间隔最多为 τ2,且每个消息最多需要时间 d 到达,所以连续接收事件之间的时间最多为 d + τ2。因此,必然是 Pj 已经停止。
  
   PSynchFD 还有两个时间特性:
   
   -
   
    定理 25.2
   
   :
   
   1. 在包含 stopj 事件和 inform - stopped(j)i 事件的 PSynchFD 任何定时执行中,从 stopj 事件到 inform - stopped(j)i 事件的时间严格大于 d。
   
   2. 在 stopj 事件发生的 PSynchFD 任何可允许定时执行中,在 stopj 事件发生后的时间 Ld + d + O(Lτ2) 内,要么发生 inform - stopped(j)i 事件,要么发生 stopi 事件。
  
   
    证明
   
   :
   
   - 对于第一点,当 inform - stopped(j)i 发生时,Pi 有一段时间 a > d + τ2 没有收到来自 Pj 的消息。假设 inform - stopped(j)i 事件在时间 t 发生,那么在时间区间 (t - a, t) 内没有来自 Pj 的消息到达 Pi。这意味着在时间区间 (t - a, t - a + τ2] 内 Pj 没有向 Pi 发送消息,否则它会在时间区间 (t - a, t - a + τ2 + d] 内到达 Pi,而该区间包含在 (t - a, t) 内。所以 Pj 必须在时间 t - a + τ2 < t - d 之前停止。
   
   - 对于第二点,假设 stopj 在时间 t 发生,那么在时间 t 之后 Pj 不会向 Pi 发送消息,所以在时间 t + d 之后 Pi 不会收到来自 Pj 的消息。收到最后一条消息后,Pi 计数 m 步的时间最多为 mτ2。由于 m 略大于 (d + τ2) / τ1 + 1,mτ2 = Ld + O(Lτ2)。所以如果 Pi 在此期间没有发生故障,从 stopj 到 inform - stopped(j)i 的总时间为 Ld + d + O(Lτ2)。
  
定理 25.2 的第一点有一个重要的推论:当任何进程 Pi 对另一个进程 Pj 超时处理时,它知道 Pj 在故障之前发送的所有消息都已经到达目的地。由于我们假设 Lτ2 相对于 d 很小,我们可以将故障通知的时间界限近似看作 Ld + d。
4. 基本结果
我们从之前的结果中了解到同步网络模型中具有 f 个故障的一致性问题的匹配上界和下界为 f + 1 轮,下面我们尝试将这些结果扩展到部分同步设置中。
4.1 上界
在同步网络模型中,有几个算法可以解决具有停止故障的一致性问题。大多数容忍 f 个停止故障的算法恰好需要 f + 1 轮。我们可以将这些算法转换为在部分同步网络模型中运行。
   设 A 是一个用于完全图网络的同步网络算法。我们描述一个用于部分同步网络模型的算法 A’:
   
   - 每个进程 Pi 是两个 MMT 自动机的组合:Qi(节点 i 的 PSynchFD 算法部分)和主自动机 Ri。
   
   - Ri 以 inform - stoppedi 动作作为输入,维护一个变量 stopped,用于记录它收到 inform - stopped(j)i 输入的进程 j 的集合,即它得知已发生故障的进程集合。同时,Ri 还维护一个包含 A 中进程 i 模拟状态的变量。
   
   - 为了模拟每一轮 r,进程 Ri 首先根据 A 的 msgsi 函数确定并发送算法 A 中所有第 r 轮的消息(为每个目标进程使用一个任务)。然后,对于每个 j ≠ i,Ri 等待,直到它要么收到来自 Rj 的第 r 轮消息,要么看到 j ∈ stopped。最后,Ri 根据收到的消息(对于没有收到第 r 轮消息的进程使用空消息)从旧状态确定 A 的新模拟状态。
  
   现在固定 f,假设 A 是一个解决同步网络模型中一致性问题的 f - 容错、f + 1 轮算法。我们按照上述方法构造 A 的部分同步版本 A’,但 A’ 的输入/输出约定与我们这里使用的不同,所以我们对 A’ 进行修改得到算法 B:
   
   - 在 B 中,Ri 在收到 init(v)i 输入之前不会开始模拟 A。收到输入时,它将值 v 放入其模拟输入变量并开始模拟第 1 轮。(不过,Qi 在定时执行开始时就开始其超时活动。)
   
   - 在 B 中,当 Ri 模拟将值 v 写入其输出变量时,它随后立即执行 decide(v)i 输出动作。
  
定理 25.3 :B 解决了部分同步网络模型中的一致性问题,并保证 f - 故障终止。而且,在所有端口都有输入到达且最多发生 f 个故障的任何可允许定时执行中,从最后一个 init 事件到所有非故障进程做出决策的时间最多为 f(Ld + d) + d + O(fLτ2)。
   
    证明
   
   :显然 B 能正确模拟 A,所以 B 解决了一致性问题。对于时间界限,我们进行如下操作论证。固定 B 的一个可允许定时执行 α,设 S 是 PSynchFD 算法的一个上界,S = Ld + d + O(Lτ2)(根据定理 25.2,这样的 S 存在)。我们定义一系列时间里程碑 T(0), T(1), T(2), …,T(r) 将被证明是所有尚未发生故障的进程完成 A 的 r 轮模拟的时间上界。
   
   - 首先,定义 T(0) 为 α 中最后一个 init 事件发生的时间。
   
   - 然后,定义 T(1):
   
   - 如果在时间 T(0) + τ2 之前有进程发生故障,T(1) = T(0) + τ2 + S;
   
   - 否则,T(1) = T(0) + τ2 + d。
   
   - 最后,对于 r ≥ 2,定义 T(r):
   
   - 如果在时间区间 (T(r - 2) + τ2, T(r - 1) + τ2] 内有进程发生故障,T(r) = T(r - 1) + τ2 + S;
   
   - 否则,T(r) = T(r - 1) + τ2 + d。
  
   因为 S 是检测故障时间的上界,所以很容易得到以下结论:
   
   -
   
    Claim 25.4
   
   :设 r > 0,j 是任何进程索引。如果进程 j 在时间 T(r) + τ2 之前发生故障,那么在时间 T(r + 1) 之前,所有尚未发生故障的进程都会检测到 j 发生故障。
  
   我们可以证明关键的结论:
   
   -
   
    Claim 25.5
   
   :对于所有 r > 0,T(r) 是所有尚未发生故障的进程完成 A 的 r 轮模拟的时间上界。
   
   -
   
    证明
   
   :通过对 r 进行归纳。
   
   -
   
    基础情况
   
   :r = 0,这是显然的。
   
   -
   
    归纳步骤
   
   :r ≥ 1。如果进程 j 在时间 T(r - 1) + τ2 之前发生故障,根据 Claim 25.4,所有尚未发生故障的进程会在时间 T(r) 之前对其进行超时处理。另一方面,如果进程 j 在时间 T(r - 1) + τ2 之前没有发生故障,那么它会在时间 T(r - 1) + τ2 之前成功发送所有第 r 轮的消息,这些消息会在时间 T(r - 1) + τ2 + d ≤ T(r) 之前到达目的地。因此,所有进程会在时间 T(r) 之前完成第 r 轮。
  
现在我们证明所需的时间界限。根据 Claim 25.5,T(f + 1) 是所有非故障进程完成 f + 1 轮模拟的时间上界,所以 T(f + 1) + O(τ2) 是所有非故障进程执行 decide 输出动作的时间上界。由于里程碑的定义以及最多有 f 个故障的事实,我们有 T(f + 1) ≤ T(0) + f(τ2 + S) + (τ2 + d)。将 S 的界限代入可得 T(f + 1) ≤ T(0) + f(Ld + d) + d + O(fLτ2),从而完成定理 25.3 的证明。
4.2 下界
在同步网络模型中,我们证明了具有 f 个故障进程的一致性问题所需的轮数下界为 f + 1。我们可以将这个界限扩展到部分同步模型,得到 (f + 1)d 时间的下界,且这个界限中没有提到时间不确定性 L。
定理 25.6 :假设 n ≥ f + 2,那么不存在一个用于部分同步网络模型的 n 进程一致性算法,能保证 f - 故障终止,且所有非故障进程总是在时间 (f + 1)d 之前严格做出决策。
   
    证明概要
   
   :假设存在这样的算法 A,我们将 A 转换为一个 f 轮的同步算法 A’,这将与之前的定理矛盾。
   
   算法 A 在满足特定交错和时间约束的部分同步模型特殊情况下必须正确工作:
   
   1. 所有输入在时间 0 时立即到达。
   
   2. 所有任务在 τ2 上界的限制下尽可能缓慢地进行,因此进程的所有本地控制步骤发生在 τ2 的整数倍时间。而且,对于每个进程,任务步骤按预先指定的顺序发生。
   
   3. 对于每个 r ∈ N,在时间区间 [rd, (r + 1)d) 内发送的所有消息都在时间 (r + 1)d 精确送达。并且,同时送达单个进程 i 的消息按发送者索引的顺序送达。
   
   4. 在 τ2 和 d 的公倍数时间,所有消息传递发生在所有本地控制进程步骤之前。
  
我们将满足这些限制的部分同步模型称为强定时模型。我们将 A 视为强定时模型的算法。不失一般性,我们可以假设 A 是“确定性的”,即每个进程任务在任何状态下最多有一个本地控制动作启用,并且对于每个状态和每个动作,最多有一个可能的新状态。由于所有消息在 d 的倍数时间送达,且进程在时间 (f + 1)d 之前严格做出决策,我们可以不失一般性地假设进程在时间 fd 消息传递后的第一步做出决策。
算法 A 在强定时模型中的行为与 f 轮同步网络算法的行为非常接近。对于每个 r ≥ 1,由于在时间 (r - 1)d 和 rd 之间没有消息到达,在区间 [(r - 1)d, rd) 内发送的所有消息都由时间 (r - 1)d 消息传递后的进程状态决定。我们可以尝试将这些消息视为同步算法的第 r 轮消息,但存在一个显著的技术差异。在同步模型中,如果进程 i 在第 r 轮发生故障,对于每个 j ≠ i,进程 i 要么成功将其第 r 轮的所有信息发送给进程 j,要么不发送任何信息。但在强定时模型中,如果 i 在该区间内向 j 和 j’ 都发送了多条消息,这种行为是不可能的。
为了将 A 转换为同步算法,我们对同步模型进行了稍微的扩展:允许每个进程 i 在每一轮 r 向每个其他进程发送有限的消息序列,每个消息可以发送到任意指定的目的地,并且允许 i 的故障在任何前缀之后中断这个序列。可以证明之前的定理证明可以扩展到这个稍微广义的模型,只需要在证明中构建的链中添加额外的步骤来逐个添加和移除序列中的消息。
现在可以将给定的一致性算法 A 转换为这个更强同步模型中的一致性算法 A’,使得 A’ 的每个执行都对应 A 的一个定时执行。进程 i 在 A’ 的第 r 轮发送的消息序列由它在 A 的区间 [(r - 1)d, rd) 内发送的所有消息组成,按 A 中的步骤顺序排列。这样,A’ 中故障引起的行为就与 A 的可能行为相对应。
下面是 PSynchFD 算法的流程示意图:
graph TD;
    A[进程 Pi] --> B[持续向所有 Pj 发送消息];
    B --> C{是否 m 步未收到 Pj 消息};
    C -- 是 --> D[记录 Pj 停止并输出 inform - stopped(j)i];
    C -- 否 --> B;
  
   同时,我们可以用表格总结部分同步网络模型中的一致性问题相关条件:
   
   | 条件 | 描述 |
   
   | ---- | ---- |
   
   | 格式良好性 | init 和 decide 动作序列是 init(v)i, decide(w)i 形式序列的某个前缀 |
   
   | 一致性 | 所有决策值相同 |
   
   | 有效性 | 若所有 init 动作值相同为 v,则 v 是唯一决策值 |
   
   | 无故障终止 | 无故障时所有端口都有 init 则都有 decide 事件 |
   
   | f - 故障终止 | 最多 f 个端口 stop 时非故障端口有 decide 事件 |
  
5. 更复杂的算法与下界结果探讨
前文我们得到了部分同步网络模型中一致性问题的基本算法和基本上下界,但二者在时间复杂度上存在差距。接下来我们将探讨更复杂的算法和下界结果,以缩小这个差距。虽然具体的复杂算法和下界结果推导过程未详细给出,但我们可以理解其重要性在于进一步优化解决一致性问题的时间性能。
5.1 复杂算法思路
复杂算法可能会在基本算法的基础上,更巧妙地利用故障检测器的信息,减少不必要的等待时间。例如,在模拟轮次时,可能会根据故障进程的情况动态调整消息的发送和接收策略,而不是像基本算法那样严格按照固定的模式进行。同时,可能会对消息的处理和状态的更新进行更精细的优化,以提高算法的效率。
5.2 复杂下界推导
复杂下界的推导可能会考虑更多的因素,不仅仅是故障进程的数量和消息传递时间。可能会结合时间不确定性参数 L,以及进程任务的执行时间等因素,来得到更精确的下界。这有助于我们更准确地了解解决一致性问题所需的最少时间,从而为算法的设计提供更严格的约束。
6. 弱定时模型结果与未来展望
除了上述讨论的部分同步网络模型,我们还可以考虑一些弱定时模型下的结果。弱定时模型可能对进程的执行时间和消息传递时间有更宽松的约束,这会使得一致性问题的解决更加具有挑战性。
6.1 弱定时模型结果
在弱定时模型中,由于时间约束的减弱,可能需要重新设计算法来保证一致性。一些已有的算法可能无法直接应用,需要进行调整和改进。例如,故障检测器的性能可能会受到影响,需要开发更适应弱定时环境的故障检测机制。同时,一致性问题的上下界也可能会发生变化,需要重新进行推导和分析。
6.2 未来工作展望
未来的工作可以从多个方面展开。一方面,可以继续深入研究部分同步和弱定时模型下的一致性问题,寻找更高效的算法和更精确的上下界。另一方面,可以将这些研究成果应用到实际的分布式系统中,如云计算、区块链等领域,以提高系统的可靠性和性能。此外,还可以探索不同模型之间的联系和转换,为分布式系统的设计和优化提供更全面的理论支持。
   下面是一个关于不同模型下一致性问题解决方法对比的表格:
   
   | 模型 | 算法特点 | 上下界特点 | 挑战 |
   
   | ---- | ---- | ---- | ---- |
   
   | 部分同步模型 | 利用故障检测器模拟同步算法 | 基本上下界有差距,需复杂算法缩小 | 时间不确定性处理 |
   
   | 弱定时模型 | 需重新设计适应宽松时间约束的算法 | 上下界需重新推导 | 时间约束弱,故障检测困难 |
  
最后,我们给出一个未来工作方向的流程图:
graph LR;
    A[深入研究理论] --> B[寻找更高效算法和精确上下界];
    A --> C[探索不同模型联系与转换];
    B --> D[应用到实际系统];
    C --> D;
    D --> E[提高系统可靠性和性能];
  综上所述,部分同步网络中的一致性问题是一个充满挑战和机遇的研究领域。通过不断地探索和创新,我们有望找到更优的解决方案,推动分布式系统的发展。
                      
                            
                        
                            
                            
                          
                          
                            
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
              
            
                  
					38
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
            


            