接口冪等性問題解決方案

冪等性概念

一個操作如果多次任意執行所產生的影響(或者叫副作用),都是相同的。

場景

在訂單提交頁面,因網絡問題,導致訂單處理延時,用戶在無反應的情況下,多次點擊提交按鈕,會在訂單庫中插入重複的訂單。

方案一 token+Redis

用戶在進入表單提交頁面前,向支付系統申請token,後端將token存儲到redis中,如果前端提交表單,後端驗證token,如果存在,則表示第一次提交,如果不存在,則是第二次提交,給予對應處理

方案二 唯一索引

數據庫設置訂單號爲唯一索引值,比如前端生成訂單號,後端無法第二次提交插入數據請求。
(注意:前端需要根據訂單內容改變,而改變訂單號,保證訂單號爲當前訂單唯一ID)

方案三 隊列緩衝

講請求都接收,通過緩衝隊列,後續異步處理,過濾掉重複請求,然後保存數據庫處理,
(注意:異步處理不能及時返回請求結果,需要後續輪詢處理結果)

·
·
·
·
·
「如果你有什麼思路,可以瀏覽大家一起討論」

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章