分布式系統(tǒng)接口冪等性

https://blog.csdn.net/qq_39291929/article/details/81429275(主內(nèi)容)

http://www.itdecent.cn/p/25f4b64e2068(token機(jī)制)


概念:對其任意次數(shù)的操作結(jié)果與一次操作的結(jié)果相同(不用擔(dān)心重復(fù)執(zhí)行會對系統(tǒng)造成改變)

業(yè)務(wù)場景:

1.綁定銀行卡發(fā)送短信接口。如果APP重復(fù)點擊調(diào)用后臺接口,后臺重復(fù)調(diào)用第三方接口,造成用戶收到多條短信,一般情況下控制在60s內(nèi)再重發(fā)短信,如果不做控制,每一次調(diào)用第三方接口都會收費(fèi)。

2.創(chuàng)建訂單接口。如果APP端因網(wǎng)絡(luò)問題用戶重復(fù)點擊多次,會生成多個訂單號,會造成系統(tǒng)業(yè)務(wù)問題。


解決方案:

冪等性解決方案

1.數(shù)據(jù)庫表加唯一索引,防止新增臟數(shù)據(jù)。比如對訂單號進(jìn)行加唯一索引,防止生成重復(fù)訂單。

如果不加索引的后果是:當(dāng)根據(jù)訂單號去支付,支付表生成兩條重復(fù)的訂單號,然后去支付寶、微信、易寶支付去支付,付款完成后,第三方異步回調(diào)接口,本地接口首先根據(jù)訂單號查詢實體,發(fā)現(xiàn)查詢到兩條,系統(tǒng)就會拋出異常。

2.分布式鎖

利用redis,在業(yè)務(wù)系統(tǒng)插入數(shù)據(jù)或者更新數(shù)據(jù),獲取分布式鎖,然后做操作,之后釋放鎖,這樣其實是把多線程并發(fā)的鎖的思路

3.token機(jī)制,防止重復(fù)提交

(1). 數(shù)據(jù)提交前要向服務(wù)的申請token,token放到redis中,token有效時間

(2). 提交后后臺校驗token,同時刪除token,生成新的token返回(http://www.itdecent.cn/p/25f4b64e2068)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.冪等性定義 1.1 數(shù)學(xué)定義 在數(shù)學(xué)里,冪等有兩種主要的定義: 在某二元運(yùn)算下,冪等元素是指被自己重復(fù)運(yùn)算(或...
    王帥199207閱讀 5,038評論 0 152
  • 一、背景 我們實際系統(tǒng)中有很多操作,是不管做多少次,只要是同一個動作都應(yīng)該產(chǎn)生一樣的效果或返回一樣的結(jié)果。例如:1...
    jesse_cheng閱讀 875評論 0 1
  • 含義:接口可重復(fù)調(diào)用后,在調(diào)用方多次調(diào)用的情況下,接口最終得到的結(jié)果是一致的。 有些接口天然具備冪等性,如查詢接口...
    劉敏_15da閱讀 1,858評論 0 0
  • 實際系統(tǒng)中有很多操作,是不管做多少次,都應(yīng)該產(chǎn)生一樣的效果或返回一樣的結(jié)果。 例如: 1. 前端重復(fù)提交選中的數(shù)據(jù)...
    值得一看的喵閱讀 6,862評論 1 6
  • 雪下的不大,但刺骨,雪花像鵝絨般飄落在我的衣服上,褲子上,即使手中撐著一面敞開的大傘也對這溫柔可愛的對手毫無辦法。...
    丹庭書閱讀 228評論 0 1

友情鏈接更多精彩內(nèi)容