防止重復(fù)下單和冪等模式的應(yīng)用

重復(fù)下單

案例1:
   1. 用戶點擊“確認下單”按鍵進行下單操作;
   2. 后臺系統(tǒng)接收到請求逼庞,并處理返回結(jié)果搜变;
   3. 網(wǎng)絡(luò)發(fā)生問題把跨,用戶沒有收到成功返回鸳劳,以為沒有下單成功戈锻,再次發(fā)起請求;

案例2:
   1. 用戶因為某種原因轩性,多次發(fā)起“確認下單”請求声登,但以為只請求一次;
   2. 后臺系統(tǒng)在1秒內(nèi)接收到同一個用戶的多次相同請求揣苏,并處理返回結(jié)果悯嗓;

HTTP的冪等性

HTTP方法的冪等性是指一次和多次請求某一個資源應(yīng)該具有同樣的結(jié)果。在HTTP 1.1規(guī)范中冪等性定義是:
Methods can also have the property of "idempotence" in that (aside from error or expiration issues) the side-effects of N > 0 identical requests is the same as for a single request.
冪等性的數(shù)學(xué)表達:f(f(x)) = f(x)卸察。

冪等性的系統(tǒng)說明

冪等性是系統(tǒng)的接口對外一種承諾而不是實現(xiàn), 承諾只要調(diào)用接口成功, 外部多次調(diào)用對系統(tǒng)的影響是一致的. 聲明為冪等的接口會認為外部調(diào)用失敗是常態(tài), 并且失敗之后必然會有重試脯厨。

檢測重復(fù)下單

在下單接口中,使用隨機字符串來生成一個處理訂單Id來標識一個訂單接口傳入(由后端系統(tǒng)來生成)坑质;后臺系統(tǒng)保證每個訂單傳入的都必須是唯一合武,如果后臺系統(tǒng)發(fā)現(xiàn)處理訂單Id重復(fù)就拒絕成生訂單

接口的冪待性

接單接口中傳入的ID个少,至多只會被處理一次(處理完的,直接刪除傳入的ID)眯杏,且每次調(diào)用都返回第一次調(diào)用時的處理結(jié)果。這樣調(diào)用方就可以放心的多次調(diào)用壳澳,而不會造成系統(tǒng)數(shù)據(jù)混亂與結(jié)果的錯亂岂贩。

鑒于這個機制,案例1與2的解決方案如下:

  • 每次進入下單場景,都需要獲取一個全新的Id
  • 用戶一旦點擊“確認下單”按鍵進行下單操作巷波,此按建都要立刻Hold住萎津,設(shè)置為“不可用狀態(tài)”,等待后端接口返回抹镊;
  • 如果超過一定的時限(1-2秒)沒有收到后端系統(tǒng)的返回锉屈,則進入到另一個頁面彈出相應(yīng)的提示告之用戶下單異常請查詢或訂單無法確定,引導(dǎo)用戶去查詢訂單狀態(tài)垮耳,反復(fù)確認直到訂單狀態(tài)是成功或失敗颈渊。
  • 如果反復(fù)確認都不無法得后端返回的響應(yīng),請在相應(yīng)的界面上引導(dǎo)人戶去重新下單终佛。
  • 后臺在接單接口上要符合冪等性俊嗽。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市铃彰,隨后出現(xiàn)的幾起案子绍豁,更是在濱河造成了極大的恐慌,老刑警劉巖牙捉,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件竹揍,死亡現(xiàn)場離奇詭異,居然都是意外死亡邪铲,警方通過查閱死者的電腦和手機芬位,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來霜浴,“玉大人晶衷,你說我怎么就攤上這事∫趺希” “怎么了晌纫?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長永丝。 經(jīng)常有香客問我锹漱,道長,這世上最難降的妖魔是什么慕嚷? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任哥牍,我火速辦了婚禮毕泌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嗅辣。我一直安慰自己撼泛,他們只是感情好,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布澡谭。 她就那樣靜靜地躺著愿题,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蛙奖。 梳的紋絲不亂的頭發(fā)上潘酗,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機與錄音雁仲,去河邊找鬼仔夺。 笑死,一個胖子當著我的面吹牛攒砖,可吹牛的內(nèi)容都是我干的歧匈。 我是一名探鬼主播携悯,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了话告?” 一聲冷哼從身側(cè)響起挂捅,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤涂佃,失蹤者是張志新(化名)和其女友劉穎愿卒,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體路克,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡樟结,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了精算。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓢宦。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖灰羽,靈堂內(nèi)的尸體忽然破棺而出驮履,到底是詐尸還是另有隱情,我是刑警寧澤廉嚼,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布玫镐,位于F島的核電站,受9級特大地震影響怠噪,放射性物質(zhì)發(fā)生泄漏恐似。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一傍念、第九天 我趴在偏房一處隱蔽的房頂上張望矫夷。 院中可真熱鬧葛闷,春花似錦、人聲如沸双藕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽忧陪。三九已至治笨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赤嚼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工顺又, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留更卒,地道東北人。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓稚照,卻偏偏與公主長得像蹂空,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子果录,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容