冪等性設計

1、概念

任意多次執(zhí)行產生的影響與一次執(zhí)行產生的影響相同父泳,無 副作用般哼。

冪等函數/冪等方法==使用相同參數重復執(zhí)行并可以獲取相同結果的函數

2吴汪、冪等

2.1、API接口

API接口響應情況:成功蒸眠、失敗漾橙、超時

冪等多發(fā)于超時后的上游發(fā)起的重試,下游應保證”同一請求重復執(zhí)行多次對系統(tǒng)造成的影響相同“楞卡。

冪等設計

  • 上游在請求信息中添加全局唯一屬性供下游判重/下游下發(fā)全局唯一屬性值霜运,供上游交互前獲取,供下游做冪>等驗證

  • 下游提供結果/狀態(tài)查詢接口臀晃,異常時上游可通過查詢接口獲取實時結果/狀態(tài)

  • 業(yè)務上:狀態(tài)機限定

  • 實現(xiàn)上
    1觉渴、update:樂觀鎖更新機制;悲觀鎖 select for update
    2徽惋、insert:數據庫唯一索引兜底---->分庫分表案淋?---->分布式鎖

2.2、HTTP

Get:冪等险绘。http://hl.com/activity/1 獲取資源踢京。資源本身不會因為Get 請求而受到影響、改變宦棺。

Delete:冪等瓣距。http://hl.com/activity/delete/1 刪除id為1的資源。刪除本身造成的影響--資源1被刪除代咸,無論執(zhí)行多少次蹈丸,影響都是相同的--->刪除id為1的資源。

POST:非冪等呐芥。 http://hl.com/activity/create 創(chuàng)建一個資源逻杖。多次請求會創(chuàng)建多個資源,所以是非冪等的思瘟。

冪等設計

token 下發(fā)荸百,防止表單重復提交。

2.3 數據庫

select:冪等滨攻。查到地球??爆炸??也不會導致數據改變够话。

update:

1、update B set name='hl' 非冪等光绕。記錄數量不一樣女嘲,update 影響有所不同。

2诞帐、update B set version=version+1 where id=1 and version=${version} 冪等欣尼。多次執(zhí)行造成影響相同--->將id為的1且version 等于當前version 的記錄,version+1 景埃。

insert:

1媒至、unique index idx_u_name ('name') ; insert into user values (null,'hl'); 冪等。多次執(zhí)行插入谷徙,最終只能插入一條拒啰。

2、no index完慧;insert into user values (null,'hl'); 非冪等谋旦。多次執(zhí)行插入,會重復屈尼。

冪等設計

1册着、樂觀鎖更新機制
2、唯一索引

3脾歧、i tell you

nice to meet all you guys 甲捏。

冪等==多次請求響應報文相同?

多次請求是否返回相同的結果不屬于冪等定義范圍內鞭执。這個可以上下游約定

  • ①下游提供查詢接口司顿,當發(fā)生超時情況下上游調用查詢接口獲取下游處理結果

  • ②下游在內部實現(xiàn)處理前查詢,若查詢到結果直接返回上游

推薦:① 因為超時屬于低概率事件兄纺,大多數非超時場景對DB的查詢對CPU大溜、網絡、IO 等資源是不必要的浪費估脆。

若實際場景對由DB做冪等防重钦奋,異常情況下上游重試會導致DB大量duplicate 報錯,如果對此SQL 異常不能容忍就設計成 select insert 模式冪等疙赠,即:插入前先查詢付材。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市棺聊,隨后出現(xiàn)的幾起案子伞租,更是在濱河造成了極大的恐慌,老刑警劉巖限佩,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件葵诈,死亡現(xiàn)場離奇詭異,居然都是意外死亡祟同,警方通過查閱死者的電腦和手機作喘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來晕城,“玉大人泞坦,你說我怎么就攤上這事∽┣辏” “怎么了贰锁?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵赃梧,是天一觀的道長。 經常有香客問我豌熄,道長授嘀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任锣险,我火速辦了婚禮蹄皱,結果婚禮上,老公的妹妹穿的比我還像新娘芯肤。我一直安慰自己巷折,他們只是感情好,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布崖咨。 她就那樣靜靜地躺著锻拘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪击蹲。 梳的紋絲不亂的頭發(fā)上逊拍,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機與錄音际邻,去河邊找鬼芯丧。 笑死,一個胖子當著我的面吹牛世曾,可吹牛的內容都是我干的缨恒。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼轮听,長吁一口氣:“原來是場噩夢啊……” “哼骗露!你這毒婦竟也來了?” 一聲冷哼從身側響起血巍,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤萧锉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后述寡,有當地人在樹林里發(fā)現(xiàn)了一具尸體柿隙,經...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年鲫凶,在試婚紗的時候發(fā)現(xiàn)自己被綠了禀崖。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡螟炫,死狀恐怖波附,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤掸屡,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布封寞,位于F島的核電站,受9級特大地震影響仅财,放射性物質發(fā)生泄漏钥星。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一满着、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧贯莺,春花似錦风喇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至爹耗,卻和暖如春耙考,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背潭兽。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工倦始, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人山卦。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓鞋邑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親账蓉。 傳聞我的和親對象是個殘疾皇子枚碗,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348