后端系统里,最贵的不是算力,而是“错误的确定性”

28 阅读2分钟

在后端世界,有一种东西特别昂贵,
但很少有人意识到它的成本:

“我很确定这块逻辑不会有问题。”


一、一个被无数次验证的现象

几乎每一次严重线上事故,
复盘时都会听到类似的话:

  • “这块逻辑我们一直这么用”
  • “当初设计时是确定没问题的”
  • “这个场景不可能发生”
  • “理论上不会走到这里”

而事故发生的方式,往往正是:

那个被“确定排除”的场景,出现了。


二、系统最怕的不是“不确定”,而是“过早确定”

很多系统在设计阶段,会做大量假设:

  • 状态只会按这个顺序走
  • 数据不会乱
  • 异步最终一定会成功
  • 下游接口是稳定的
  • 重试次数足够多就能成功

这些假设在早期都成立。

问题是:

系统一旦变大,这些假设就会开始逐个失效。


三、错误的确定性是如何慢慢形成的?

1️⃣ 成功路径被过度强化

系统跑通一次,就开始被认为:

“这是正确路径。”

于是:

  • 异常路径没人关心
  • 回滚逻辑没人测
  • 极端情况没人模拟

成功路径变成唯一现实。


2️⃣ 异常被“包起来”了

为了稳定,系统开始:

  • catch 所有异常
  • 自动重试
  • 自动补偿
  • 自动兜底

看起来很健壮,
但实际效果是:

系统在不断吞掉“失败信号”。


3️⃣ 监控只关注“结果”,不关注“过程”

例如:

  • 请求成功率
  • QPS
  • RT

但很少有人长期看:

  • 重试率
  • 补偿触发率
  • 状态回滚率
  • 异步积压变化

系统正在“勉强成功”,
但你却以为它“运行良好”。


四、为什么错误的确定性比不确定性更危险?

因为不确定性会让你:

  • 警惕
  • 留后路
  • 保守演进

而错误的确定性会让你:

  • 删除保护
  • 合并分支
  • 简化校验
  • 忽略异常

直到有一天,你发现:

系统已经失去了自我修复能力。


五、真正成熟的系统,反而对自己“不自信”

你会发现顶级系统:

  • 经常失败
  • 经常拒绝请求
  • 经常暴露异常
  • 经常打断流程

它们不是脆弱,
而是在持续确认一个事实:

“我现在还能不能相信自己。”


六、一个反直觉但非常重要的原则

系统中所有“永远不会发生”的判断,
最终都会变成事故的入口。