升級版 Idempotency Key:用 Redis 實現分散式冪等保護

上一篇 用 IDistributedCache + MemoryCache 做了一個簡單版本的冪等,適合單節點演練。但在多 Pod / Container 部署的環境下,MemoryCache 各自獨立,不同 Pod 看不到彼此的快取,冪等保護會直接失效。

這篇換用 Redis 來實現分散式冪等,目標是能跑在 Kubernetes / Docker Swarm 這類環境。

...繼續閱讀 »

簡單實作 ASP.NET Core 6 的 Idempotent Key / Idempotency Key

HttpMethod 的幂等性(Idempotent),指的是相同的請求參數,不論調用幾次結果都是相同的,不會影響結果。例如,PUT 要求必須具有等冪性。 若用戶端多次送出相同的 PUT 要求,結果應該永遠保持不變 (使用相同的值會修改相同的資源)。為什麼需要冪等,假設,在店商平台購物,付款時,連續點選了兩次支付,如果平台沒有做好保護、驗證,就會發生扣款兩次,我們會有幾種手段來避免這樣的事發生:前端攔截(PRG 防止表單重送)、平台語言鎖、分散式鎖、資料庫主鍵、唯一鍵 / 唯一索引、資料庫樂觀鎖定(搭配版號)、Token 令牌…等。

...繼續閱讀 »