5.1 分布式系统的八大问题

还是笔者那句老话,解决问题,先从认识问题开始。分布式应用大多数都运行在复杂的环境中,这也导致了其更容易比单体服务发生问题。早在 20 世纪 90 年代在 Sun MicroSystem 中就被提出了分布式系统的八大谬误[1]。我们在设计分布式系统的时候,坚决不能做以上假设,否则必然会导致系统灾难性的故障。

我们来认识下这八大谬误是什么?

  • 网络是可靠的
  • 延迟为零
  • 带宽是无限的
  • 网络是安全的
  • 拓扑不会变
  • 只存在一个管理员
  • 传输代价为零
  • 网络是同质的

这些谬误自从最初提出以来,虽然已经过去了三十余年,但现在它们仍然很有意义。三十余年的变化是业界对如何处理这些谬误更加成熟,这并不是说问题已经解决,而是构建分布式系统的挑战已经有了足够的理论沉淀、技术发展,对现在的我们而言,已经能充分地认识到问题。

尽管技术已经经过了多年的发展,但还是要清楚 “这些谬误是长久存在的技术挑战,而不要把它们想成是可以轻松躲开的陷阱”(例如计算机网络技术已经发展了 50 年,但解决网络通信不可靠的手段还是依靠 TCP 握手)。毕竟分布式的底色是混乱、无序和矛盾冲突,如果你认为解决以上问题很简单,那八大谬论就应该再加上新的一条谬论 - “避免分布式计算的谬误很简单”。


  1. 参考 https://nighthacks.com/jag/res/Fallacies.html ↩︎

Last Updated:
Contributors: isno