分布式与并发系统:通信、共识、时间与并发模型解析
1. 分布式系统中的共识问题
1.1 两将军问题
两将军问题是理解分布式系统中共识问题的经典示例。想象有两座军队围困一座城市,为了确保胜利,两支军队必须同时发动攻击。然而,由于地形复杂且有狙击手,将军之间传递消息存在风险。第一位将军派遣信使传达攻击时间,但信使可能被捕获或杀害,因此他无法确定消息是否送达,除非收到第二位将军的确认信使。但确认信使同样可能遭遇危险,即便确认消息到达,第二位将军也需要第一位将军的再次确认才能确定。
这个问题表明,在消息可能随机丢失的情况下,无法保证两位将军能就攻击时间达成共识。实际上,可以证明在异步网络中,存在崩溃故障且消息可能延迟但不丢失时,在有限时间内达成共识是不可能的,这就是 FLP 不可能定理。
1.2 两将军问题与分布式系统的类比
两将军问题类似于分布式系统中两个节点希望就某个状态达成一致的情况,例如数据项的值。部分故障类似于消息和确认信息的丢失,消息可能丢失或延迟不确定的时间,这是异步网络的特点。
1.3 实际中的共识达成
虽然 FLP 不可能定理从理论上限制了在异步网络中无界消息延迟情况下达成共识的可能性,但在实际中,分布式系统经常达成共识。这是因为虽然网络是异步的,但我们可以为消息延迟设定合理的实际界限,并在超时后重试。
1.4 拜占庭故障
将两将军问题扩展到 N 将军问题时,会出现拜占庭故障。在这种情况下,叛徒信使可能更改攻击时间,或者叛徒将军可能向其他将军发送虚假信息。这种恶意故障在分布式系统中尤为棘手,但在实际中,我们讨论的系统通常位于受良好保护的
超级会员免费看
订阅专栏 解锁全文
3024

被折叠的 条评论
为什么被折叠?



