APNIC Blog最近回顾了“分布式计算八大谬误”。这份清单流传二十多年,听起来像老工程师的备忘录,但它刺中的问题一点也不旧。
反常的地方在这里:云服务、CDN、HTTPS、QUIC都普及了,网络体验比早年好得多,可很多系统设计仍在默认“网络会替我兜底”。一旦遇到丢包、延迟、抖动、跨区域链路变化,问题就会从网络层一路冒到应用账单、订单状态和用户体验里。
我更在意的不是这八条是否过时,而是它们为什么还会反复命中今天的系统。答案很硬:现代网络从来没有承诺可靠、零延迟、无限带宽、绝对安全和免费传输。
这八条不是新理论,是旧约束还在生效
“分布式计算八大谬误”不是APNIC新提出的理论。它更像一份长期流传的工程经验清单,源头可追溯到Sun Microsystems时期。
通常的来源脉络是:Bill Joy和Tom Lyon整理了前四条,L. Peter Deutsch后来补充三条,James Gosling提出最后一条。它提醒的对象也很明确:写网络软件的人、服务提供者、协议设计者和网络运营者。
八条本身很短,但每一条都能落到真实约束上:
| 谬误 | 现实约束 | 设计含义 |
|---|---|---|
| 网络可靠 | 丢包、连接中断、服务端故障都会发生 | 超时、重试、幂等、降级不能后补 |
| 延迟为零 | 跨地域、移动网络、排队都会带来延迟 | 同步调用要克制,链路预算要写清 |
| 带宽无限 | 骨干网、云区间、边缘节点都有容量限制 | 大文件、日志、复制流量要限速和分层 |
| 网络安全 | TLS/HTTPS保护内容,但不等于绝对安全 | 元数据、包大小、访问模式仍可能泄露信息 |
| 拓扑不变 | BGP选路、运营商策略、移动切换会改变路径 | 监控不能只看自家机房和单一区域 |
| 只有一个管理员 | 云、CDN、运营商、企业网络各有控制面 | 故障定位要接受跨组织协作成本 |
| 传输零成本 | 云出站费、跨区流量、对象存储取回都要钱 | 架构评审要把数据移动写进预算 |
| 网络同质 | Wi-Fi、以太网、移动网络、跨境链路差异很大 | 客户端、服务端和边缘节点不能按同一网络假设设计 |
一个容易被说错的点是可靠性。IP层不保证可靠送达,它只尽力转发。可靠传输通常由TCP、QUIC等更高层处理。
TCP能重传,QUIC也能改善连接迁移和拥塞控制体验。但这不等于网络变成了无损管道。协议能缓冲现实,不能取消现实。
CDN和HTTPS改善体验,但没有消灭网络问题
今天的网络确实比过去更“顺”。CDN把内容推到离用户更近的地方,HTTPS和TLS成为网页通信默认配置,QUIC减少了一些连接建立和迁移时的摩擦。
这些改进很重要,但它们更像遮住了粗糙边缘,不是把边缘磨平了。
CDN降低了长距离传输的不确定性,却带来缓存一致性、区域调度、边缘节点容量这些新问题。HTTPS保护传输内容,但包大小、时间间隔、访问模式仍可能暴露行为轮廓。BGP让全球网络互联,也让路径受自治系统策略和商业关系影响。
家庭宽带速度只是最表层的例子。带宽、成本和拓扑问题同样存在于运营商骨干网、云厂商可用区、跨境链路和对象存储服务里。
以Amazon S3这类对象存储为例,存储、请求、取回和出站流量的计费结构,本身就在提醒架构师一件事:数据放在那里不等于搬出来免费。
这里的限制也要说清。加密不是安全的全部,CDN不是稳定的全部,QUIC也不是低延迟的全部。它们解决的是一部分工程问题,不是给系统发一张“网络无风险”的通行证。
后端和网络团队该改的是默认动作
这份清单最有用的地方,不是让团队背八句话,而是拿来检查设计文档。
对后端与分布式系统开发者,影响很直接:接口失败后能不能安全重试,消息重复投递会不会造成重复扣款,任务超时后状态能不能恢复,跨区域调用是不是被写成了本地函数调用。
更具体一点,开发团队至少要调整这些动作:
| 对象 | 该检查什么 | 不改会怎样 |
|---|---|---|
| 后端开发者 | 超时、重试、幂等、限流、熔断 | 小抖动放大成雪崩,重复请求变成脏数据 |
| 分布式系统团队 | 跨区复制、消息顺序、缓存一致性 | 局部延迟变成全局状态不一致 |
| 网络工程师 | 丢包、延迟、抖动、BGP路径、CDN命中 | 只能看到“慢”和“偶发失败”,看不到原因 |
| 架构师 | 跨区流量、云出站费、对象存储取回费 | 系统没坏,账单先失控 |
对网络工程师和架构师,重点是别只盯应用日志。云负载均衡、服务网格、CDN、BGP、Wi-Fi和移动网络切换,都可能把不同故障表现成同一种症状:慢、断、偶发失败。
接下来真正该观察的,也不是这份清单会不会扩展到第九条。更现实的观察点有三个。
团队是否把丢包、延迟、抖动纳入压测和演练;是否把跨区、跨云、跨运营商链路纳入监控;是否在架构评审里明确计算数据移动成本。
如果这些没有进入流程,八大谬误就只是一张贴在墙上的老清单。等线上故障出现,系统还是会按同一套旧假设摔倒。
APNIC这次重提它,价值就在这里。不是提醒大家尊重历史,而是提醒工程团队承认默认条件:网络会变慢,会丢包,会改路,会收费,也不会天然安全。
