Idempotency nghĩa là thực hiện một thao tác nhiều lần cho cùng kết quả như thực hiện một lần. Nó quan trọng vì mạng không đáng tin: khi client gửi request mà response không bao giờ tới, nó không biết server đã xử lý hay chưa. Nếu retry, một thao tác không idempotent có thể chạy hai lần.
Vấn đề
Client ──POST /payments {$100}──▶ Server (trừ $100 ✓)
Client ◀────────X (timeout)────── Server (response bị mất)
Client ──POST /payments {$100}──▶ Server (trừ $100 LẦN NỮA ✗ → $200!)
, và vốn idempotent nên retry chúng an toàn. thì — đây chính là nơi sinh ra trừ tiền trùng và order trùng.
