成人免费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

2020-07-30 08:03:36

MQ死信隊列

2024-09-23 08:04:45

MYSQL數據存儲

2021-07-01 07:54:15

MQ系統高可用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一级特黄aaa大片在线观看 | 黄一区二区三区 | 精品日韩一区二区 | 毛片一级电影 | 国产精品不卡视频 | 国产精品久久久久久久久久了 | 在线视频亚洲 | 黄色网址在线免费播放 | 日韩www | 超碰人人人人 | 午夜影院在线观看视频 | 久久久久国产一区二区三区 | 中文字幕精品视频在线观看 | 国产精品视频久久 | 中文字幕人成乱码在线观看 | 九九在线精品视频 | 国产日韩欧美精品 | 91社区在线观看高清 | 国产视频亚洲视频 | 亚洲高清在线 | 国产电影精品久久 | 夜夜操天天操 | 97色免费视频 | 日本精品一区二区 | 日韩国产一区二区三区 | 毛片一级电影 | 午夜精品一区二区三区在线 | 亚洲精品久久久 | 日韩乱码一二三 | 久久久噜噜噜久久中文字幕色伊伊 | 中文一级片 | 国产一区二区三区网站 | 精品一区久久 | 九九国产在线观看 | 久热久热 | 欧美日韩一二区 | 欧美精品在线免费 | 成人不卡视频 | 国内久久 | 久久精品a| 欧美日韩一区在线 |