多值共识协议、向量共识协议、原子广播协议

本文是对
《From Consensus to Atomic Broadcast: Time-Free Byzantine-Resistant Protocols without Signatures》这篇文章在多值共识协议、向量共识协议、原子广播其相关的算法流程,以及共性特性方面做的总结。

多值共识协议(Multi-Valued Consensus Protocol)

是分布式系统中的一个关键问题,它旨在使得一组分布式进程在存在故障的情况下达成对一个或多个值的一致同意。在本文中,多值共识协议被设计为在没有使用数字签名的情况下,能够抵抗拜占庭故障(Byzantine faults),并且在异步系统中运行。

多值共识问题的定义:

多值共识问题可以定义如下:在一组分布式进程中,每个进程可以提出一个值(值的长度可以是任意的),多值共识协议需要确保所有正确运行的进程最终能够就一个或多个值达成一致。如果所有正确进程提出的值相同,则协议决定该值;如果正确进程提出的值不同,则协议可以决定任何一个正确进程提出的值,或者一个默认值。

多值共识协议的特性:
  • 无签名(Signature Free):协议不依赖于基于公钥密码学的数字签名。
  • 异步(Asynchronous):协议不假设任何关于系统同步性的前提,因为这些假设可能会受到攻击。
  • 去中心化(Decentralized):协议中没有中心协调者或领导者,决策是分布式进行的。
  • 最优容错性(Optimal Resilience):协议能够容忍最多f个故障进程,其中f是根据进程总数n计算得出的,即f = ⌊n−1/3⌋
多值共识协议的工作原理:
  1. 初始化(Initialization):每个进程初始化一个空集合来存储收到的INIT消息,并启动两个并发任务T1T2

  2. 任务T1(Task T1):这是协议的主要工作部分。进程首先通过可靠广播协议发送一个包含自己提议值的INIT消息。然后,它等待接收至少(n−f)INIT消息,并根据这些消息构建一个值向量Vi。如果所有正确进程提出了相同的值v,则该进程选择此值并广播一个VECT消息,包含选择的理由。如果进程没有收到足够多的相同值v,则选择默认值并广播。

  3. 任务T2(Task T2):这个任务简单地接收INIT消息,并将它们存储在INIT deliveredi集合中。

  4. 决策过程(Decision Process):在接收到足够的VECT消息后,进程将根据这些消息中的值进行二值共识(B Consensus)。如果二值共识决定为1,则进程等待接收到足够多的相同值的VECT消息,并最终决定该值。如果二值共识决定为0,则进程决定默认值。

多值共识协议的正确性证明:
  • 有效性(Validity):如果所有正确进程提出了相同的值v,那么任何决定的进程都会决定v
  • 一致性(Agreement):没有两个正确进程会做出不同的决定。
  • 终止性(Termination):每个正确进程最终都会做出决定。
性能评估:

多值共识协议的时间复杂度是常数预期轮数,即O(1),这意味着协议在预期的轮数内完成。消息复杂度取决于通信是点对点还是广播,预期消息复杂度为O(n^3)(点对点通信)或O(n^2)(广播通信)。
总的来说,多值共识协议为分布式系统提供了一种在资源受限和异步环境中实现容错和一致性的有效方法。通过避免使用公钥密码学和保持去中心化,该协议在实际应用中具有较高的效率和实用性。

向量共识协议(Vector Consensus Protocol)

是分布式系统中用于解决在存在拜占庭故障的情况下,多个进程就一组值达成一致的协议。在本文中,向量共识协议是建立在多值共识协议之上的,它允许系统就一个由多个值组成的向量达成一致,而不仅仅是单个值。这对于实现如原子广播等更高级的分布式系统功能至关重要。
本文中的向量共识协议(Vector Consensus Protocol)是一个在分布式系统中实现多个进程间就一组值达成一致的协议。这个协议特别适用于那些需要在存在拜占庭故障的环境中工作的系统。向量共识协议允许每个进程提出一个值,然后通过一系列的交互和协议步骤,最终使得所有诚实的进程就一个包含这些值的向量达成一致。

向量共识协议的关键特性:
  • 无签名(Signature Free):协议不依赖于基于公钥密码学的数字签名。
  • 异步(Asynchronous):协议能够在没有时间同步假设的环境中运行。
  • 去中心化(Decentralized):协议中不存在中心节点,所有决策都是分布式进行的。
  • 最优容错性(Optimal Resilience):协议能够容忍最多f个故障进程,其中f是根据进程总数n计算得出的,即f = ⌊n−1/3⌋
向量共识协议的算法流程(Algorithm 2):
  1. 初始化(Initialization)
  • 每个进程初始化一个向量Wi,用于存储从其他进程接收到的值。
  • 进程初始化一个计数器ri,用于跟踪当前的轮次。
  • 进程广播一个包含自己提出的值的VC INIT消息。
  1. 接收VC INIT消息(Receiving VC INIT Messages)
  • 进程等待接收至少(n − f + ri)VC INIT消息。3. 构建并向量(Building and Proposing Vector)
  • 一旦收到足够多的VC INIT消息,进程构建一个包含这些值的向量Wi
  • 进程将向量Wi提交给多值共识协议,以尝试就这个向量达成一致。
  1. 多值共识(Multi-Valued Consensus)
  • 多值共识协议将决定一个值,该值将用于构建下一个向量或作为最终的向量共识结果。
  1. 迭代和决定(Iteration and Decision)
  • 进程重复步骤2到4,直到多值共识协议决定了一个非空向量Vi
  • 一旦决定了向量,进程将该向量作为向量共识的结果返回。
正确性证明:
  • 向量有效性(Vector Validity):每个诚实的进程决定的向量满足定义中的条件,即向量中的每个元素要么是进程提出的值,要么是默认值⊥,且至少有f+1个元素是由诚实进程提出的。
  • 一致性(Agreement):没有两个诚实的进程会做出不同的决定。
  • 终止性(Termination):每个诚实的进程最终都会做出决定。
性能评估:
  • 时间复杂度:向量共识协议的时间复杂度取决于多值共识协议的时间复杂度,预期时间复杂度为O(f)
  • 消息复杂度:预期消息复杂度取决于通信模式和系统的大小,预期消息复杂度为O(fn^3)(点对点通信)或O(fn^2)(广播通信)。
    向量共识协议在分布式系统中非常重要,因为它为实现更复杂的容错功能提供了基础。通过允许进程就一组值达成一致,而不是单个值,它扩展了系统可以解决的问题的范围,并提高了系统的可靠性和鲁棒性。

原子广播协议(Atomic Broadcast Protocol)

是分布式系统中的一个关键组件,其目标是确保所有正确运行的进程以相同的顺序接收相同的消息。这是实现故障容错系统,如状态机复制或日志复制等,的基础。在本文中,原子广播协议被设计为无时间假设、去中心化、不使用数字签名,并且能够抵抗拜占庭故障。
本文提出的原子广播协议旨在解决分布式系统中的消息传递问题,特别是在存在拜占庭故障的情况下。该协议确保所有诚实的进程能够以相同的顺序接收到相同的消息,即使系统中的一些进程可能会表现出恶意行为。以下是对该协议的详细介绍和算法流程:

原子广播协议的关键特性:
  • 无时间假设:协议不依赖于任何关于系统时间的假设,这使得它能够在没有全局时钟或时钟不同步的环境中运行。
  • 去中心化:没有中心节点控制消息的广播或交付,所有进程都以对等的方式参与协议。
  • 不使用数字签名:协议避免了使用公钥基础设施和数字签名,这在资源受限的环境中尤其重要,因为数字签名可能会成为性能瓶颈。
  • 拜占庭容错:协议能够容忍系统中最多f个进程出现拜占庭故障,即这些进程可能会发送错误或恶意的消息。
原子广播协议的算法流程(Algorithm 3):
  1. 初始化(Initialization)
  • 每个进程初始化一个空集合R_deliveredi来存储已可靠广播的消息。
  • 初始化原子广播标识符aidi和消息编号numi。 - 启动两个任务T1T2
  1. 广播消息(A Broadcast)
  • 当进程需要广播消息m时,它通过调用A_Broadcast过程,该过程使用可靠广播协议将带有唯一编号的消息发送给所有进程。
  1. 消息交付(Message Delivery)
  • T1任务检查R_deliveredi集合中的所有消息,并尝试就这些消息的交付达成一致。
  • 进程构建一个包含所有R_deliveredi中消息哈希的向量Hi
  • 进程使用向量共识协议来决定一个向量Xi,该向量包含了至少f+1个不同进程提出的哈希值。
  • 一旦所有具有足够多哈希的哈希值的消息都已收到,进程将这些消息放入A_deliveredi集合中,并按照确定的顺序交付这些消息。
  • 交付消息后,从R_deliveredi中移除已交付的消息,并递增原子广播标识符aidi
  1. 接收消息(Receiving Messages)
  • T2任务负责接收通过可靠广播协议发送的A_MSG类型的消息,并将其添加到R_deliveredi集合中。
正确性证明:
  • 有效性(Validity):如果一个诚实的进程广播了一个消息,那么最终会有一个诚实的进程交付该消息。
  • 一致性(Agreement):如果一个诚实的进程交付了一个消息,那么所有其他诚实的进程最终也会交付该消息。
  • 完整性(Integrity):每个诚实的进程最多只交付一次具有相同标识符的消息。
  • 全序性(Total Order):如果两个诚实的进程都交付了两个消息,那么它们将以相同的顺序交付这两个消息。
性能评估:
  • 时间复杂度:原子广播协议的时间复杂度主要取决于向量共识协议的时间复杂度,每条消息的预期时间复杂度为O(f)
  • 消息复杂度:预期消息复杂度取决于消息的数量和通信模式,预期消息复杂度为O(fn^3)(点对点通信)或O(fn^2)(广播通信)。
    本文提出的原子广播协议通过使用哈希函数和向量共识协议来确保消息的一致性和顺序性,同时避免了数字签名的使用,使其在资源受限的环境中更为高效。该协议的设计强调了在分布式系统中实现可靠性和容错性的重要性。

多值共识、向量共识与原子广播的区别:

多值共识(Multi-Valued Consensus)、向量共识(Vector Consensus)和原子广播(Atomic Broadcast)都是分布式系统中用于实现一致性的协议,但它们在目标、协议结构和应用场景上存在明显的区别:

多值共识(Multi-Valued Consensus):
  • 目标:允许分布式系统中的进程在存在故障的情况下,就多个可能的值中的一个达成一致。每个进程可以提出一个值,协议的目标是确定一个被所有诚实进程接受的单一值。
  • 结构:通常涉及多个进程之间的通信和投票,以确定一个共同的值。这个过程可能包括多轮消息交换。
  • 应用场景:适用于需要就单个决策达成一致的情况,例如选举一个领导者或者决定系统的一个配置参数。
向量共识(Vector Consensus):
  • 目标:在分布式系统中,让进程就一个由多个元素组成的向量达成一致,每个元素代表一个进程提出的值。向量共识关注的是整个向量作为一个整体的一致性。
  • 结构:需要处理向量中的每个元素,并确保向量中的大多数元素是一致的。这可能涉及到更复杂的协议步骤,因为需要维护和一致化整个向量。
  • 应用场景:适用于需要就一组相关值达成一致的场景,例如在分布式日志复制或状态机复制中,确保所有副本就一系列操作或事件的顺序达成一致。
原子广播(Atomic Broadcast):
  • 目标:确保所有诚实的进程以相同的顺序接收到相同的一组消息。原子广播协议不仅关注消息的内容,还关注消息的传递顺序。
  • 结构:通常包括可靠广播和一致性排序两个部分。首先,确保每个消息被所有进程可靠地广播;其次,通过向量共识或其他机制确保消息的一致性排序。
  • 应用场景:适用于需要确保消息传递的顺序性和一致性的系统,例如分布式日志记录、状态机复制和事务处理。
总结区别:
  • 一致性层面:多值共识关注单个值的一致性,向量共识关注向量中多个值的一致性,而原子广播关注消息的传递和顺序一致性。
  • 协议复杂性:原子广播通常比多值共识和向量共识更复杂,因为它需要处理消息的可靠性和排序两个方面。
  • 应用范围:多值共识适用于需要单一决策的场景,向量共识适用于需要一系列决策的场景,原子广播适用于需要保证消息传递顺序的场景。
    在选择适合的协议时,系统设计者需要根据系统的具体需求和场景来决定使用哪一种协议,或者将它们组合使用以满足更复杂的一致性需求。
  • 30
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值