单机世界里,“系统是否活着”这件事很好判断——程序要么在跑,要么崩溃退出了,看一眼堆栈跟踪,分界线清清楚楚。

可到了分布式系统,这条界限就模糊得让人不安。一个最常见的悖论是:所有服务器的健康检查都返回 200 OK,运维仪表盘一片翠绿,用户却在成片报错。另一种棘手状况是,整个系统从技术上看仍在运转,进程没退、端口开着,但它陷入了一个无法靠自己挣脱的僵死状态,所有自动化重试和切换机制全部哑火。

打开网易新闻 查看精彩图片

更隐蔽的,是静默错误。没有任何告警,没有任何指标异常,但系统已经在悄悄地给出错误数据,而每一个监控面板依然显示“一切正常”。

这些都不是我们通常理解的软件缺陷。它们是分布式世界里反复上演的典型故障模式。几十年来,这些模式在不同架构、不同语言、不同规模的环境中一版又一版地重现,并逐渐有了公认的名称、发生机理和标准化的防御手段。