成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MQ 如何實現,消息冪等( MQ 真的不能再背鍋了)?

開發 架構
架構設計上有兩個核心設計點:消息落地和息超時、重傳、確認,但消息重傳可能導致reciever收到重復的消息,從而對業務產生影響。

MQ如何實現,消息必達?》消息必達,架構設計上有兩個核心設計點:

  • 消息落地;
  • 消息超時、重傳、確認;

但消息重傳可能導致reciever收到重復的消息,從而對業務產生影響。

MQ如何實現消息冪等呢?這還是得從MQ的消息發送流程說起。

如《MQ如何實現,消息必達?》所述,MQ能解除發布訂閱者之間的耦合,它將消息投遞解耦成上下兩個半場:

  • 箭頭1,上半場:發送方將消息投遞給MQ;
  • 箭頭2,下半場:MQ將消息投遞給接收方;

MQ要想實現冪等,上下半場都必須做到冪等。

上半場,如何做到冪等?

MQ消息投遞上半場,流程見上圖123:

  • 1:sender將消息發送給MQ-server;
  • 2:MQ-server將消息落地;
  • 3:MQ-server回調sender;

如果步驟3超時,步驟1會重傳,會導致步驟2收到重復的消息。此時,

  • 重發方是:MQ-client
  • 接收方是:MQ-server

消息的收發在MQ系統內閉環,可以由MQ來實施消息冪等。

MQ如何實施消息冪等?

為了避免步驟2落地重復的消息,對每條消息,MQ系統內部必須生成一個inner-msg-id,作為去重和冪等的依據。

這個inner-msg-id的特性是:

  • 全局唯一;
  • 由MQ生成,具備業務無關性,對消息發送方和消息接收方都透明; 

有了這個inner-msg-id,就能保證上半場重發,也只有1條消息落到MQ-server的DB中,實現上半場冪等。

下半場,如何做到冪等?

MQ消息投遞下半場,流程見上圖456:

  • 4:MQ-server回調reciever;
  • 5:reciever收到消息,處理業務邏輯,將ACK發送給MQ-server;
  • 6:MQ-server收到ACK,將之前已經落地的消息刪除,流程結束;

如果步驟5超時,步驟4會重傳,會導致業務處理方收到重復的消息。此時,

  • 重發方是:MQ-server
  • 接收方是:業務處理方

消息的收發不能在MQ系統內閉環,只能由業務處理方來保證消息冪等。

業務處理方如何實施消息冪等?

在消息實體中,必須有一個biz-id,作為去重和冪等的依據,這個biz-id的特性是:

  • 對于同一個業務場景,全局唯一;
  • 由業務消息發送方生成,業務相關,對MQ透明;
  • 由業務消息接收方負責判重,以保證冪等;

最常見的biz-id有:

  • 訂單id,業務方有義務避免重復生成;
  • 支付id,業務方有義務避免重復扣款;
  • 帖子id,業務方有義務避免重復發布;
  • ...

總結

MQ要想實現冪等,上下半場都必須做到冪等。

上半場:

  • MQ-client生成inner-msg-id,保證上半場冪等;
  • inner-msg-id全局唯一,業務無關,由MQ保證;

下半場:

  • 業務發送方帶入biz-id,業務接收方去重保證冪等;
  • 這個biz-id對業務唯一,業務相關,對MQ透明。

冪等性,不僅對MQ有要求,對業務上下游也有要求,那些罵MQ無法保證冪等的架構師,其實自己...

知其然,知其所以然。

思路比結論更重要。

責任編輯:趙寧寧 來源: 架構師之路
相關推薦

2020-10-18 07:25:55

MQ消息冪等架構

2025-01-10 08:20:00

MQ消息架構

2024-11-13 00:59:13

2017-04-03 21:23:44

消息總線冪等性消息

2024-05-14 08:20:59

線程CPU場景

2022-02-18 09:20:43

消息中間件分布式MQ 冪等

2025-04-14 05:00:00

2009-06-14 17:18:55

ibmdwWebSphereMQ

2023-10-24 07:50:18

消息中間件MQ

2023-06-29 10:10:06

Rocket MQ消息中間件

2020-11-03 07:43:24

MQ版本號程序員

2021-03-08 10:19:59

MQ消息磁盤

2022-07-26 00:00:00

MQ消息中間件

2024-12-12 14:56:48

消息積壓MQ分區

2024-04-23 08:46:45

消息積壓KafkaMQ

2019-08-23 12:12:49

MQ消息隊列

2019-12-03 13:57:38

CIO背鍋IT

2024-09-23 08:04:45

MYSQL數據存儲

2020-07-30 08:03:36

MQ死信隊列

2021-07-01 07:54:15

MQ系統高可用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精产国产伦理一二三区 | 国产良家自拍 | 午夜影院免费体验区 | 亚洲精品二三区 | 九七午夜剧场福利写真 | 亚洲精品99 | 中文字幕 在线观看 | av资源中文在线天堂 | 亚洲欧美中文日韩在线v日本 | aa级毛片毛片免费观看久 | 日韩成人国产 | 中文字幕第一页在线 | 国产高清视频 | h视频免费在线观看 | 日韩国产欧美视频 | 国产美女高潮 | 久久丝袜视频 | 免费人成在线观看网站 | 中文字幕av网站 | 99亚洲精品 | 国产精品成人一区二区三区 | 亚洲视频免费 | 97成人免费| 久久99精品久久久久久国产越南 | 色综合久久天天综合网 | 久久精品一区二区 | 国产激情91久久精品导航 | 日韩在线一区二区 | 毛片在线免费 | 久久综合亚洲 | 色婷婷久久久亚洲一区二区三区 | www.青娱乐| 在线观看国产网站 | 欧美日韩中文字幕在线播放 | 一级毛片中国 | 视频一区在线播放 | 亚洲人成人一区二区在线观看 | 亚洲国产精品区 | 欧美自拍视频 | 亚洲av毛片| av看片网站|