精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

消息隊列失敗經(jīng)驗總結(jié)(冪等性概念以及影響)

開發(fā) 前端
相信大家都使用過消息MQ,他可以很好地進行系統(tǒng)解耦,減低變成的復雜度,又可以進行削峰,增加系統(tǒng)在高并發(fā)的穩(wěn)定性。

 相信大家都使用過消息MQ,他可以很好地進行系統(tǒng)解耦,減低變成的復雜度,又可以進行削峰,增加系統(tǒng)在高并發(fā)的穩(wěn)定性。那么使用MQ有哪些注意事項呢?是不是MQ就是萬無一失呢?一條MQ消息從產(chǎn)生到消費,有沒有可能失敗?在哪些環(huán)節(jié)可能失敗,如何處理?

[[330973]]

1.消息生產(chǎn)失敗

一般來說,從生產(chǎn)者到MQ中間件是通過網(wǎng)絡(luò)調(diào)用的,是網(wǎng)絡(luò)調(diào)用就有可能存在失敗。下面這些原因,都有可能造成MQ生產(chǎn)失敗,例如網(wǎng)絡(luò)波動,盡管生產(chǎn)者到MQ服務(wù)器之間是內(nèi)網(wǎng)調(diào)用,并不意味著網(wǎng)絡(luò)調(diào)用的成功率就是百分之百,內(nèi)網(wǎng)調(diào)用也會遇到網(wǎng)絡(luò)波動,造成調(diào)用超時或者失敗。又如調(diào)用的MQ機器瞬間Crash掉,這也是有可能造成調(diào)用失敗的。 面對生產(chǎn)者調(diào)用MQ的失敗,我們是容易比較容易處理的 , 我們只要簡單地進行重試即可,如果重試2-3次失敗,那么非常有可能是出現(xiàn)大問題,這個時候再重試意義不大,需要進行告警并處理。

2.MQ處理存儲失敗

消息到達消息中間件之后,通常是會被存儲起來的,只有被寫入到磁盤中,消息才是真正地被存儲,不會丟失。但是,大部分MQ中間件并不是收到消息就立馬寫入磁盤的,只是由于磁盤的寫入速度相對于內(nèi)存,現(xiàn)得慢得多得多,所以,像Kafka這樣的消息系統(tǒng),是會把消息寫到緩沖區(qū)中,異步寫入磁盤,如果機器在中途突然斷電,是有可能會丟失消息的。為了解決這個問題,大部分的MQ都是采用 分布式部署, 消息會在多臺機器上寫入緩存中成功才會返回給業(yè)務(wù)方成功,由于多臺機器同時斷電的可能性較低,我們可以認為這是比較低成本又可靠的方案。

3.消費者處理失敗

 

消息隊列失敗經(jīng)驗總結(jié)(冪等性概念以及影響)

 

一般的MQ都有MQ重試機制,如果處理失敗,就會嘗試重復消費這個MQ。這個帶來的問題就是,MQ可能已經(jīng)成功消費了,但是在通知MQ中間件的時候失敗了,這個時候帶來的結(jié)果就是消息重復消費。同理,在生產(chǎn)者重試的時候,也會遇到消息重復消費的問題。這個時候,就要求我們盡量把接口設(shè)計得有 冪等性 ,這個時候即便是重復消費,也不用擔心什么問題了?;旧献龊眠@三點,我們就能夠大大地提高我們地系統(tǒng)地可用性了!

這里需要關(guān)注幾個重點:

  1. 冪等不僅僅只是一次(或多次)請求對資源沒有副作用(比如查詢數(shù)據(jù)庫操作,沒有增刪改,因此沒有對數(shù)據(jù)庫有任何影響)。
  2. 冪等還包括第一次請求的時候?qū)Y源產(chǎn)生了副作用,但是以后的多次請求都不會再對資源產(chǎn)生副作用。
  3. 冪等關(guān)注的是以后的多次請求是否對資源產(chǎn)生的副作用,而不關(guān)注結(jié)果。

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

什么情況下需要冪等

業(yè)務(wù)開發(fā)中,經(jīng)常會遇到重復提交的情況,無論是由于網(wǎng)絡(luò)問題無法收到請求結(jié)果而重新發(fā)起請求,或是前端的操作抖動而造成重復提交情況。 在交易系統(tǒng),支付系統(tǒng)這種重復提交造成的問題有尤其明顯,比如:

用戶在APP上連續(xù)點擊了多次提交訂單,后臺應(yīng)該只產(chǎn)生一個訂單;

向支付系統(tǒng)發(fā)起支付請求,由于網(wǎng)絡(luò)問題或系統(tǒng)BUG重發(fā),支付系統(tǒng)應(yīng)該只扣一次錢。 很顯然,聲明冪等的服務(wù)認為,外部調(diào)用者會存在多次調(diào)用的情況,為了防止外部多次調(diào)用對系統(tǒng)數(shù)據(jù)狀態(tài)的發(fā)生多次改變,將服務(wù)設(shè)計成冪等。

冪等VS防重

上面例子中遇到的問題,只是重復提交的情況,和服務(wù)冪等的初衷是不同的。重復提交是在第一次請求已經(jīng)成功的情況下,人為的進行多次操作,導致不滿足冪等要求的服務(wù)多次改變狀態(tài)。 而冪等更多使用的情況是第一次請求不知道結(jié)果(比如超時)或者失敗的異常情況下,發(fā)起多次請求,目的是多次確認第一次請求成功,卻不會因多次請求而出現(xiàn)多次的狀態(tài)變化。

什么情況下需要保證冪等性

以SQL為例,有下面三種場景,只有第三種場景需要開發(fā)人員使用其他策略保證冪等性:

  1. SELECT col1 FROM tab1 WHER col2=2 ,無論執(zhí)行多少次都不會改變狀態(tài),是天然的冪等。
  2. UPDATE tab1 SET col1=1 WHERE col2=2 ,無論執(zhí)行 成功 多少次 狀態(tài) 都是一致的,因此也是冪等操作。
  3. UPDATE tab1 SET col1=col1+1 WHERE col2=2 ,每次執(zhí)行的結(jié)果都會發(fā)生變化,這種不是冪等的。

為什么要設(shè)計冪等性的服務(wù)

冪等可以使得客戶端邏輯處理變得簡單,但是卻以服務(wù)邏輯變得復雜為代價。 滿足冪等服務(wù)的需要在邏輯中至少包含兩點:

  1. 首先去查詢上一次的執(zhí)行狀態(tài),如果沒有則認為是第一次請求
  2. 在服務(wù)改變狀態(tài)的業(yè)務(wù)邏輯前,保證防重復提交的邏輯

冪等的不足

冪等是為了簡化客戶端邏輯處理,卻增加了服務(wù)提供者的邏輯和成本,是否有必要,需要根據(jù)具體場景具體分析, 因此除了業(yè)務(wù)上的特殊要求外,盡量不提供冪等的接口。

增加了額外控制冪等的業(yè)務(wù)邏輯,復雜化了業(yè)務(wù)功能;

把并行執(zhí)行的功能改為串行執(zhí)行,降低了執(zhí)行效率。

保證冪等策略

冪等需要通過 唯一的業(yè)務(wù)單號 來保證。也就是說相同的業(yè)務(wù)單號,認為是同一筆業(yè)務(wù)。使用這個唯一的業(yè)務(wù)單號來確保,后面多次的相同的業(yè)務(wù)單號的處理邏輯和執(zhí)行效果是一致的。 下面以支付為例,在不考慮并發(fā)的情況下,實現(xiàn)冪等很簡單:

①先查詢一下訂單是否已經(jīng)支付過,

②如果已經(jīng)支付過,則返回支付成功;如果沒有支付,進行支付流程,修改訂單狀態(tài)為‘已支付’。

防重復提交策略

上述的保證冪等方案是分成兩步的,第②步依賴第①步的查詢結(jié)果,無法保證原子性的。 在高并發(fā)下就會出現(xiàn)下面的情況: 第二次請求在第一次請求第②步訂單狀態(tài)還沒有修改為‘已支付狀態(tài)’的情況下到來。 既然得出了這個結(jié)論,余下的問題也就變得簡單:把查詢和變更狀態(tài)操作加鎖,將并行操作改為串行操作。

樂觀鎖

如果只是更新 已有 的數(shù)據(jù),沒有必要對業(yè)務(wù)進行加鎖,設(shè)計表結(jié)構(gòu)時使用樂觀鎖,一般通過version來做樂觀鎖,這樣既能保證執(zhí)行效率,又能保證冪等。例如: UPDATE tab1 SET col1=1,version=version+1 WHERE version=#version# 不過, 樂觀鎖存在失效的情況,就是常說的ABA問題,不過如果version版本一直是自增的就不會出現(xiàn)ABA的情況。

防重表

使用訂單號orderNo做為去重表的唯一索引,每次請求都根據(jù)訂單號向去重表中插入一條數(shù)據(jù)。第一次請求查詢訂單支付狀態(tài),當然訂單沒有支付,進行支付操作,無論成功與否,執(zhí)行完后更新訂單狀態(tài)為成功或失敗,刪除去重表中的數(shù)據(jù)。后續(xù)的訂單因為表中唯一索引而插入失敗,則返回操作失敗,直到第一次的請求完成(成功或失敗)。 可以看出防重表作用是加鎖的功能。

分布式鎖

這里使用的防重表可以使用分布式鎖代替,比如Redis。訂單發(fā)起支付請求,支付系統(tǒng)會去Redis緩存中查詢是否存在該訂單號的Key,如果不存在,則向Redis增加Key為訂單號。查詢訂單支付已經(jīng)支付,如果沒有則進行支付,支付完成后刪除該訂單號的Key。通過Redis做到了分布式鎖,只有這次訂單訂單支付請求完成,下次請求才能進來。 相比去重表,將放并發(fā)做到了緩存中,較為高效。思路相同,同一時間只能完成一次支付請求。

token令牌

這種方式分成兩個階段:申請token階段和支付階段。 第一階段,在進入到提交訂單頁面之前,需要訂單系統(tǒng)根據(jù)用戶信息向支付系統(tǒng)發(fā)起一次申請token的請求,支付系統(tǒng)將token保存到Redis緩存中,為第二階段支付使用。 第二階段,訂單系統(tǒng)拿著申請到的token發(fā)起支付請求,支付系統(tǒng)會檢查Redis中是否存在該token,如果存在,表示第一次發(fā)起支付請求,刪除緩存中token后開始支付邏輯處理;如果緩存中不存在,表示非法請求。 實際上這里的token是一個信物,支付系統(tǒng)根據(jù)token確認,你是你媽的孩子。 不足是需要系統(tǒng)間交互兩次,流程較上述方法復雜。

支付緩沖區(qū)

把訂單的支付請求都快速地接下來,一個快速接單的緩沖管道。后續(xù)使用異步任務(wù)處理管道中的數(shù)據(jù),過濾掉重復的待支付訂單。 優(yōu)點是同步轉(zhuǎn)異步,高吞吐。不足是不能及時地返回支付結(jié)果,需要后續(xù)監(jiān)聽支付結(jié)果的異步返回。

責任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2013-01-18 10:10:30

項目項目經(jīng)理

2009-10-15 09:27:00

2010-01-12 16:44:53

VB.NET數(shù)組

2021-04-02 10:30:18

Vue3.0前端代碼

2009-09-29 16:32:11

OJB Hiberna

2009-08-19 09:24:43

AJAX引擎經(jīng)驗總結(jié)

2009-09-16 17:13:54

學習Linq

2011-07-21 13:40:17

java

2009-09-25 17:26:55

使用Hibernate

2009-09-27 14:53:38

Hibernate S

2010-01-27 18:12:14

Android dia

2010-07-16 09:14:49

Perl模式

2013-12-18 15:54:21

2010-01-26 13:28:11

Android開發(fā)要點

2010-03-08 15:12:27

Python語言

2009-08-13 18:13:27

C#學習經(jīng)驗

2009-12-24 16:46:03

WPF性能優(yōu)化

2010-06-13 13:44:07

UML學習筆記

2009-10-22 15:07:12

綜合布線工程

2009-08-20 17:35:47

Servlet和JSP
點贊
收藏

51CTO技術(shù)棧公眾號

日韩国产在线| 超碰在线97国产| 精品一二三四在线| 久久成年人免费电影| 久草免费资源站| 性感女国产在线| 国产精品传媒视频| 国产乱码精品一区二区三区卡| 九九热精品视频在线| 99久久激情| 日韩精品亚洲元码| 性欧美在线视频| 91av亚洲| 亚洲国产cao| 亚洲无玛一区| 三级视频在线| 国产美女视频一区| 欧美性受xxx| 四虎永久免费在线| 国产成人1区| 精品国产99国产精品| 日韩肉感妇bbwbbwbbw| 国产色婷婷在线| 中文字幕一区二区三中文字幕| 精品视频第一区| 国产国语亲子伦亲子| 久久精品91| 欧美激情伊人电影| 国产美女久久久久久| 国产九一精品| 日韩黄色av网站| 超碰人人cao| 亚洲免费一区| 欧日韩精品视频| 国产l精品国产亚洲区久久| 欧洲成人综合网| 岛国在线视频免费看| 亚洲自拍电影| 亚洲第一区在线观看| 91福利免费观看| 香蕉成人影院| 日韩欧美精品中文字幕| 国产黄色片免费在线观看| www.欧美日本韩国| 综合精品久久久| 亚洲精蜜桃久在线| 成人av一区| 国产日韩欧美不卡在线| 久久精品午夜一区二区福利| 欧美性猛交 xxxx| 国产99精品在线观看| 成人黄色片在线| 亚洲一卡二卡在线观看| 免费成人在线视频观看| 国产精品久久久久久久久久三级| 你懂的国产在线| 99亚洲视频| 2020国产精品视频| 久久一区二区三区视频| 亚洲欧美清纯在线制服| 日韩av电影院| 欧美人一级淫片a免费播放| 视频一区中文字幕国产| 国产精品18久久久久久麻辣| 波多野结衣小视频| 久久精品72免费观看| 91精品视频免费观看| 97caocao| 国产成人99久久亚洲综合精品| 丁香五月网久久综合| 国产成人在线亚洲欧美| 成年人网站免费在线观看 | 色香蕉成人二区免费| 超碰网在线观看| 成人午夜毛片| 日韩一区二区三区精品视频| 亚洲成人福利视频| 欧洲vs亚洲vs国产| 一区二区三区四区视频| 午夜三级在线观看| 国内自拍一区| 日韩av成人在线| 国产精品综合在线| 成人激情视频网站| 日韩精品一区二区三区色偷偷| 亚洲欧美视频一区二区| 亚洲久草在线视频| 鲁一鲁一鲁一鲁一澡| 在线一区视频观看| 日韩午夜激情免费电影| 四虎永久免费影院| 久久精品一区二区不卡| 97激碰免费视频| 中文字幕在线2019| 丁香婷婷综合色啪| 午夜精品短视频| 免费影视亚洲| 欧美日韩一区二区三区免费看 | 欧美成人性色生活仑片| 天天插天天操天天干| 麻豆视频观看网址久久| 国产乱码一区| 老司机免费在线视频| 亚洲va天堂va国产va久| 日韩在线不卡一区| 亚洲精品蜜桃乱晃| 欧美高清在线播放| 中文字幕一区二区在线视频| 91色综合久久久久婷婷| 国产成人精品免费看在线播放 | 欧美精品九九| 国产精品999| 91欧美日韩一区| 黄色在线免费观看| 国产精品一区一区| 日本精品免费| 精品三级久久| 日韩一级精品视频在线观看| 一区二区三区伦理片| 精品1区2区3区4区| 成人性教育视频在线观看| 可以在线观看的av网站| 欧美全黄视频| 国产精品免费久久久久影院| 少妇人妻一区二区| 亚洲激情在线激情| 黄色手机在线视频| 美女网站一区| 午夜精品免费视频| 精品国产999久久久免费| 国产精品久久久久久亚洲伦| 日韩精品一区二区三区久久| 国产成人在线中文字幕| 久久国产精品久久国产精品| 中国老头性行为xxxx| 久久婷婷综合激情| 国产成人精品视频免费看| 96sao在线精品免费视频| 久久精品99无色码中文字幕| 中文字幕欧美人妻精品| 久久久久久久综合狠狠综合| 男人揉女人奶房视频60分| 美女视频免费精品| 国模私拍一区二区三区| 理论片中文字幕| 亚洲国产aⅴ天堂久久| 国产51自产区| 亚洲国产专区| 国产偷国产偷亚洲高清97cao| 日本精品600av| 精品少妇一区二区三区 | 91一区二区| 国产精品视频在线观看| 一广人看www在线观看免费视频| 欧美在线免费观看亚洲| wwwww黄色| 久久99久国产精品黄毛片色诱| 亚洲欧洲日韩综合二区| 玖玖精品在线| 欧美理论电影在线播放| 亚洲av无码乱码国产麻豆| 亚洲在线观看免费视频| 青青草视频网站| 美女久久网站| 亚洲激情一区二区| 色悠久久久久综合先锋影音下载| 欧美精品videossex88| 色噜噜在线播放| 一本色道久久加勒比精品| 亚洲第一综合网| 精品亚洲porn| 男人的天堂狠狠干| 国产成人ay| 91免费精品视频| h片精品在线观看| 日韩精品在线播放| 一区二区三区日| 亚洲一区二区三区激情| 日本黄色网址大全| 激情五月婷婷综合| www.99热这里只有精品| 国产在线观看91一区二区三区 | 国产精品白丝在线| 中文写幕一区二区三区免费观成熟| 亚洲高清资源| 日韩国产精品一区二区| 精品视频一区二区三区在线观看| 午夜精品福利在线观看| av片在线看| 亚洲高清久久久久久| 国产成人精品亚洲| 一区二区三区在线看| 这里只有久久精品| 国产高清久久久久| av无码精品一区二区三区| 欧美jizzhd精品欧美巨大免费| 国产精品三区四区| 免费一区二区三区四区| 91精品国产高清自在线看超| 欧美私人网站| 亚洲乱码一区二区| 亚洲产国偷v产偷v自拍涩爱| 91高清视频免费看| 国产成年人免费视频| 中文字幕在线视频一区| 亚洲国产无码精品| 粉嫩av一区二区三区在线播放| 日本免费观看网站| 一本一本久久| 国产制服91一区二区三区制服| 亚洲图片久久| 精品999在线观看| 日韩精品一区二区三区免费视频| 国产福利视频一区| 不卡av免费观看| 久久精品视频一| 国产黄在线观看免费观看不卡| 亚洲第一福利视频| 国产乱淫片视频| 欧美性色欧美a在线播放| 国产一级做a爱片久久毛片a| 亚洲黄色在线视频| 少妇高潮在线观看| 欧美国产日韩亚洲一区| 成年人网站免费在线观看| jizz一区二区| 蜜臀视频在线观看| 国产91精品一区二区麻豆亚洲| www.cao超碰| 美腿丝袜亚洲三区| 丁香婷婷激情网| 鲁大师成人一区二区三区| 男人用嘴添女人下身免费视频| 欧美日一区二区在线观看| 自拍偷拍亚洲色图欧美| 日韩在线观看| 亚洲五月六月| 99国产精品一区二区| 亚洲欧美日产图| 欧美一区二区三| 天天爽天天狠久久久| 欧美日韩色图| 亚洲精品乱码视频| 日韩在线观看一区 | 国产传媒一区二区三区| 一区二区在线视频观看| 99re资源| 大桥未久女教师av一区二区| 国产福利久久| 天堂综合网久久| 欧美日韩在线观看一区二区三区| 视频精品在线观看| 五月天亚洲综合情| 欧美电影免费播放| mm131午夜| 激情婷婷亚洲| 欧美 激情 在线| 日韩av中文在线观看| 成年网站在线免费观看| 日韩中文字幕麻豆| 午夜免费看视频| 国产精品一区三区| 精品一区二区视频在线观看| 97精品久久久午夜一区二区三区| 久久精品国产亚洲av麻豆| 欧美经典一区二区| 国产性生活大片| 午夜视频一区二区| 日韩一级在线视频| 欧美日韩国产经典色站一区二区三区 | 欧产日产国产精品98| 91麻豆免费在线观看| 亚洲综合第一区| 亚洲精品日韩一| 国产九色在线播放九色| 欧美色爱综合网| 国产黄色片网站| 日韩国产欧美精品在线| 日本中文字幕在线2020| 欧美—级高清免费播放| av资源亚洲| 91美女高潮出水| 亚洲欧美日本伦理| 最近免费观看高清韩国日本大全| 亚洲日本免费| 亚洲天堂2018av| 成人黄页在线观看| 久久婷婷五月综合| 亚洲最新视频在线观看| 免费一级a毛片| 日韩女优制服丝袜电影| 精华区一区二区三区| 久久国产精品久久久| 亚洲免费福利| 成人av免费电影| 日韩精品看片| 日韩中文字幕在线免费| 久久99精品久久只有精品| 黄色性视频网站| 亚洲欧美怡红院| 99精品人妻国产毛片| 日韩精品一区二区在线| 9191在线| 人人澡人人澡人人看欧美| 国产精品一区免费在线| 日本一区二区精品视频| 好吊一区二区三区| 九九精品久久久| 久久精品一区二区三区av| 久久久久亚洲av片无码下载蜜桃| 欧美色图天堂网| 深夜福利在线观看直播| 久久影院资源网| 超薄肉色丝袜脚交一区二区| 国产一区二区高清视频| 亚洲九九视频| 国产精品一区二区羞羞答答| 99视频有精品| 国产一级片免费看| 正在播放亚洲一区| www免费网站在线观看| 欧洲日本亚洲国产区| 粉嫩久久久久久久极品| 91精品一区二区三区四区| 免费观看在线色综合| 久久精品国产亚洲av麻豆| 午夜精品久久久久久久| 亚洲精品久久久久avwww潮水 | 美国黄色片视频| 欧美在线观看视频一区二区| 深夜影院在线观看| 97视频在线观看视频免费视频| 91精品日本| www.夜夜爱| 国产精品456| 黄色一级片中国| 欧美一区二区三区免费观看视频| 高清性色生活片在线观看| 国产mv久久久| 国产精品午夜一区二区三区| av片中文字幕| 久久人人爽人人爽| 久久久久久在线观看| 亚洲欧美国产精品| 三上悠亚国产精品一区二区三区| 久久青青草原| 噜噜噜在线观看免费视频日韩| 18禁裸乳无遮挡啪啪无码免费| 欧美午夜久久久| 黄色软件在线观看| 国产精品av在线播放| 欧美午夜精品一区二区三区电影| 成人性生生活性生交12| 国产精品色婷婷| 国产精品免费无遮挡| 精品中文字幕视频| 91蜜桃臀久久一区二区| 国产色一区二区三区| 91在线免费视频观看| 黄色免费av网站| 在线中文字幕日韩| 2020国产精品小视频| 日本a在线天堂| 91在线观看免费视频| 波多野结衣在线观看一区| 日韩中文字幕在线观看| 天堂va在线高清一区| 鲁一鲁一鲁一鲁一色| 国产亚洲女人久久久久毛片| 一级日韩一级欧美| 欧美精品九九久久| 亚洲素人在线| 91精品999| 亚洲二区在线观看| 国产免费视频在线| 亚洲aⅴ日韩av电影在线观看| 国内自拍视频一区二区三区| 日韩在线免费观看av| 欧美一区二区三级| 中文字幕乱码在线播放| 亚洲欧洲精品在线| 成人在线视频首页| 中文字幕第31页| 久久久久中文字幕| 国内成人自拍| 韩国av中国字幕| 色天使久久综合网天天| 黄网站在线播放| 久久精品日韩| 国产精品一区在线观看你懂的| 九九热精品视频在线| 欧美精品日韩三级| 久久99国产精一区二区三区| 91丨porny丨九色| 色综合久久88色综合天天免费| 国产原厂视频在线观看| 欧美大香线蕉线伊人久久国产精品| 精品一区二区三区免费视频| 9i看片成人免费看片| 久久99热这里只有精品国产|