分布式与并发系统核心要点解析
1. 通信交付语义
在分布式系统的通信中,“恰好一次”(Exactly once)交付并不意味着没有消息传输失败、重试或应用崩溃,这些情况是不可避免的。重要的是重试最终会成功,且结果始终一致。通信交付存在不同的语义,各有不同的保证和性能特点,具体如下表所示:
| 交付语义 | 特点 | 示例协议 |
| ---- | ---- | ---- |
| 最多一次(At-most-once) | 速度快但不可靠 | UDP 协议 |
| 至少一次(At-least-once) | 有交付保证,但可能有重复消息 | TCP/IP 协议 |
| 恰好一次(Exactly-once) | 需防止重复消息,可靠性高但性能较慢 | 部分高级通信机制 |
由于一些高级通信机制虽能提供“恰好一次”语义,但受性能影响无法在互联网规模下运行。而应用基于 TCP/IP 的“至少一次”语义构建,因此在会导致状态变更的 API 中,必须实现“恰好一次”语义。
2. 分布式系统中的共识问题
2.1 两将军问题
两将军问题可用于说明分布式系统中达成共识的困难。想象有两座军队围攻一座城市,为确保胜利,两支军队必须同时进攻。第一位将军派信使传达进攻时间,但信使可能被狙击手捕获或杀害,所以发送将军需收到第二位将军的确认信使才能确定消息已送达。然而,确认信使也可能遭遇同样情况,如此反复,无法保证两位将军能就进攻时间达成共识。
这个问题类似于分布式系统中两个节点希望就某个状态(如数据项的值)达成一致。部分故障类似于消息和确认信息丢失,消息可能丢失或延迟,这是异步网络的特点。在存在崩溃故障
超级会员免费看
订阅专栏 解锁全文
1647

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



