开发者社区> 问答> 正文

通信网络中的“拜占庭将军问题”是什么?

通信网络中的“拜占庭将军问题”是什么?

展开
收起
游客qunztrp5ggyqy 2021-12-09 17:36:23 1231 0
1 条回答
写回答
取消 提交回答
  • 在两将军问题中,如果通信兵被敌军俘获并且叛变 ,将会传递错误的信息给A1将军和A2将军,从而更难达成共识 。为了解决通信中传递错误信息的问题,业界提出了拜占庭将军问题。

    如下图所示,6支军队分别由 6位拜占庭将军 ( A1~A6) 率领,他们共同围攻城池内的敌军。各支军队的行动策 略为进攻/撤退两 种,如果部分军队进攻、部分军队撤退可能会造成灾难性后果,因此A1~A6将军必须通过投票来达成共识 ,即所有军队一起进攻或所有军队一起撤退 。因为各位将军分处城市的不同方向,他们只能通过通信兵互相联系。在投票过程中,每位将军都将投票给出进攻还是撤退的信息,然后通过通信兵分别通知其他将军, 从而根据自己的投票和其 他将军送来的信息,每位将军就可知道共同的投票结果并决定行动策略。

    拜占庭将军的难题在于拜占庭故障,即通信兵可能被敌军俘获并且叛变,从而传递错误信息,还有将军也有可能成为叛徒。例如,错误消息让将军判断出3人以上要求进攻,但实际上并没有这么多进攻的投票,最终导致误判 。

    image.png

    在分布式系统中,典型的拜占庭故障,就是某台服务器的进程因CPU繁忙、内存申请超时、网络拥塞、磁盘响应慢等原因出现工作状态不正常,却继续带病工作的亚健康状态。在非安全网络中,通过伪装来窃取信息,也是安全中要预防的典型的拜占庭故障。分布式系统为了解决拜占庭故障,可以采用以下解决方案。

    1.根据分 布式系统的服务器总数,限定发生拜占庭 故障的服务器数,来确保解决该问题。例如,服务器总数为 N, 那么发生拜占庭故障 的服务器数不能超 过 1/3*N(服务器总数的 1/3),剩下的服务器还能通过多数派达成共识。

    2.根据数字签名识别伪装的服务器,或者根据序 列号识别亚健康服务器 的错误消息,并及时将它们隔离。通过防护手段,尽早地隔离系统中的不稳定因素,从而支撑共识的达成。

    1999年, MiguelCastro与 BarbaraLiskov在论文 P ractica l Byzantine Fault Tolerance andProactiveRecovery中通过高性能的运算方法,提升了拜占庭故障的容错和恢复性能。

    资料来源:《对象存储实战指南》

    2021-12-10 11:01:45
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Keynote:阿里云网络领域关键创新技术解读 立即下载
智慧光网络 关键技术应用实践和未来演进 立即下载
思科软件定义访问:实现基于业务意图的园区网络 立即下载