Idempotency(幂等性)意味着执行一个操作多次与执行一次的效果相同。它之所以重要,是因为网络不可靠:当 client 发出一个请求而 response 从未到达时,它无法判断 server 是否已处理。如果它 retry,一个非幂等的操作可能会运行两次。
问题
Client ──POST /payments {$100}──▶ Server (charges $100 ✓)
Client ◀────────X (timeout)────── Server (response lost)
Client ──POST /payments {$100}──▶ Server (charges $100 AGAIN ✗ → $200!)
、 和 天然是幂等的,因此 retry 它们是安全的。 ——这正是重复扣款和重复 order 的来源。
