知识卡片

分布式不确定性

专业/工作 · 490.b

内容

分布式系统最难的不是机器变多,而是不确定性变多:节点可能故障,网络可能延迟、丢包、乱序,请求是否被对端处理也可能未知。协议设计要逐步追问每一步异常会造成什么影响。

参考来源

- 位置:《Go语言高级开发与实战》第5章《分布式系统》(源文件:_epub-src/GoYu Yan Gao Ji Kai Fa Yu Shi Zhan_split_043.html) - 结论依据:原文把分布式挑战归结为不确定性,并列举 crash、断电、磁盘损坏、网络延迟和对端处理未知,因此支撑该卡片结论。 - 原始内容:请求,节点B会不会多次处理同一个请求。 总之,分布式系统的挑战来自不确定性。不确定计算机什么时候crash、断电,不确定磁盘什么时候损坏,不确定每次网络通信要延迟多久,也不确定通信对端是否处理了发送的消息。不确定性是令人讨厌的,所以有诸多的分布式理论、协议来保证在这种不确定性的情况下,系统还能继续正常工作。 处理这些异常的最佳原则是:在设计、推导、验证分布式系统的协议、流程时,最重要的工作之一就是,思考在执行流程