“分布式计算的谬误”最初由 Sun 的 Peter Deutsch 等人总结,指开发者构建分布式系统时容易轻信的错误假设,经典八条:

  1. 网络是可靠的——实际会丢包、断连、分区。
  2. 延迟为零——跨机房、跨大洲的往返不可忽略,尾部延迟决定体验。
  3. 带宽是无限的——大 payload 会打满链路,序列化与传输都有成本。
  4. 网络是安全的——默认零信任,每条链路都要认证加密。
  5. 拓扑不会改变——机器上下线、地址漂移是常态,不能写死地址。
  6. 只有一个管理员——多方运维、异构环境,配置与升级不可能瞬间一致。
  7. 传输成本为零——序列化、加密、网络设备都消耗 CPU 与金钱。
  8. 网络是同构的——异构硬件、系统、中间件共存,协议必须开放兼容。

(后来有人补充第九条:时间是全局一致的——实际时钟会漂移。)

实践含义:所有远程调用设超时、做重试与幂等;用服务发现代替固定地址;监控网络指标;按零信任设计安全。它本质是提醒:本地调用的直觉在分布式语境下全部失效。