拜占庭将军问题(一)—— 引言与结论

拜占庭将军问题(The Byzantine Generals Problem)是Leslie Lamport在其同名的论文1提出的一种针对分布式对等网络中的容错问题。

一个可靠的计算机系统需要能够处理一个或多个系统组件的失效。一个失效的组件可能会表现为发送错误的信息,或者因组件故障不发出信息等行为。这种类型的失效问题被称为拜占庭将军问题。Leslie在这篇论文中对拜占庭将军问题进行了描述并提出解决拜占庭问题的一些方法。

拜占庭将军问题

问题描述

Leslie通过几支拜占庭将军领导的军队共同进攻敌方城池的例子描述了这个问题。

假如几支拜占庭将军领导的军队驻扎在敌方城池周围,准备攻城。将军们之间只能通过通信的方式相互沟通。在观察敌情之后,他们需要共同确定行动。但是,其中一些将军可能是叛徒,他们会试图阻止忠诚将军之间达成一致行动。因此,拜占庭将军们需要一种算法来保证:

A. 所有忠诚的将军能采取同样的行动

忠诚的将军会按照算法行动,但叛徒会采取任何行动。因此,算法需要保证无论叛徒干什么,条件A都会被满足。

B. 一小部分的叛徒不会导致忠诚的将军采取错误的行动

条件B是很难形式化的,因为它需要对错误的行动进行准确的描述。因此,Leslie用将军如何作出决定来代替。

“将军-将军”问题 or “司令-副官”问题

令:

n: 将军的数量
***v(i)***: 由第***i***将军发出的消息

每位将军采用某种函数从***(v(1), …, v(n))作出决定。例如,采用***Majority***投票方法,选取(v(1), …, v(n))***多数的行动作为最优的行动。在这种情况下,只有忠诚将军不同行动的数量大致相等,小部分叛徒才能影响忠诚将军的行动。

拜占庭将军之间要想达成一致,最明显的办法是第***i***号将军通过传令兵向其他每个将军发出***v(i)***,但是,由于叛徒可能向不同的将军发出不同的值。如果想要满足条件A,需要满足如下条件:

条件1:每个忠诚的将军必须获

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
拜占庭将军问题(Byzantine Generals Problem)是指在分布式系统中,存在多个节点(将军)之间需要达成一致的决策,但其中部分节点可能是不可信的(可能发送错误信息或者故意篡改信息)。该问题要求设计一种算法,使得系统能够在存在不可信节点的情况下仍然能够达成一致的决策。 拜占庭容错算法(Practical Byzantine Fault Tolerance, PBFT)是一种解决拜占庭将军问题的算法。简要流程如下: 1. 提案阶段:一个主节点(提议者)向其他节点发送提案消息,包含了要达成一致的决策内容。 2. 预备阶段:每个接收到提案的节点会将提案广播给其他节点,并等待其他节点的响应。在预备阶段,每个节点会收集到大多数节点的响应。 3. 收集阶段:在预备阶段后,每个节点会将收到的消息汇总,并向其他节点发送自己收集到的消息。 4. 决策阶段:每个节点根据收集到的消息进行判断,如果收集到的消息中大多数节点达成了一致的决策,则该节点也接受该决策。 5. 完成阶段:一旦节点接受了某个决策,它会向其他节点发送接受消息,以便通知其他节点它的决策。 6. 完成确认:节点接收到其他节点的完成消息后,如果收到了大多数节点的完成消息,则认为整个系统达成了一致的决策。 PBFT 算法通过多个阶段的消息交互和多数节点的确认来解决拜占庭将军问题,保证了节点之间的一致性。该算法适用于拜占庭容错要求较高的分布式系统,但也会带来一定的性能开销。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值