超碰人人人人人,亚洲AV午夜福利精品一区二区,亚洲欧美综合区丁香五月1区,日韩欧美亚洲系列

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

MQ如何實(shí)現(xiàn),消息必達(dá)到?

admin
2025年1月6日 10:44 本文熱度 1042
MQ能不能實(shí)現(xiàn)消息必達(dá)?

要想消息必達(dá),架構(gòu)設(shè)計(jì)上有兩個(gè)核心設(shè)計(jì)點(diǎn):
1. 消息落地;
2. 消息超時(shí)、重傳、確認(rèn);
更具體的,要從MQ的架構(gòu)與流程談起。

MQ的核心架構(gòu)如何?
如上圖所示,MQ的核心架構(gòu)圖分為三大塊:
1. 發(fā)送方 -> 左側(cè)粉色部分;
2. MQ核心集群 -> 中間藍(lán)色部分;
3. 接收方 -> 右側(cè)黃色部分;

粉色發(fā)送方又由兩部分構(gòu)成:
1. 業(yè)務(wù)調(diào)用方;
2. MQ-client-sender;

其中,后者向前者提供了兩個(gè)核心API:
SendMsg(bytes[] msg)
SendCallback()

藍(lán)色MQ核心集群由MQ-server,zk,db,管理后臺(tái)web等一系列子系統(tǒng)組成。

黃色接收方也由兩部分構(gòu)成:
1. 業(yè)務(wù)接收方;
2. MQ-client-receiver

其中,后者向前者也提供了兩個(gè)核心API:
RecvCallback(bytes[] msg)
SendAck()
MQ是一個(gè)系統(tǒng)間解耦的利器,它能夠很好的解除發(fā)布訂閱者之間的耦合,它將上下游的消息投遞解耦成兩個(gè)部分,如上述架構(gòu)圖中的箭頭1和箭頭2:
箭頭1,上半場(chǎng):發(fā)送方將消息投遞給MQ;
箭頭2,下半場(chǎng):MQ將消息投遞給接收方;

MQ既然將消息投遞拆成了上下半場(chǎng),為了保證消息的可靠投遞,上下半場(chǎng)都必須盡量保證消息必達(dá)。

上半場(chǎng),消息投遞流程如何?
MQ消息投遞上半場(chǎng),流程見上圖123:
1. sender將消息發(fā)送給MQ-server;
2. MQ-server將消息落地;
3. MQ-server回調(diào)sender;

上半場(chǎng),如果消息丟了怎么辦?
答:超時(shí)與重傳。

MQ上半場(chǎng)的123如果丟失或者超時(shí),sender內(nèi)置的timer會(huì)重發(fā)消息,直到收到3。如果重傳N次后還未收到3,則SendCallback向業(yè)務(wù)方回調(diào)發(fā)送失敗。

下半場(chǎng),消息投遞流程如何?
?
MQ消息投遞下半場(chǎng),流程見上圖456:
4. MQ-server回調(diào)reciever;
5. reciever收到消息,處理業(yè)務(wù)邏輯,將ACK發(fā)送給MQ-server;
6. MQ-server收到ACK,將之前已經(jīng)落地的消息刪除,流程結(jié)束;

下半場(chǎng),如果消息丟了怎么辦?
答:還是超時(shí)與重傳。

MQ下半場(chǎng)的456如果丟失或者超時(shí),MQ-server內(nèi)置的timer會(huì)重發(fā)消息,直到收到5并且成功執(zhí)行6。

上下半場(chǎng)都要超時(shí)重發(fā),策略如何?
常見的策略有兩種:
1. 定時(shí)重發(fā),每隔10秒發(fā)一次,直到超出次數(shù);
2. 指數(shù)退避,先隔x秒重發(fā),2x秒重發(fā),4x秒重發(fā),以此類推;

總結(jié)
1. MQ是系統(tǒng)之間的解耦利器,它能解除消息發(fā)送方與接收方的直接耦合;
2. MQ將消息投遞解耦成了上下兩個(gè)半場(chǎng);
3. MQ消息必達(dá),架構(gòu)上有兩個(gè)核心設(shè)計(jì)點(diǎn):
 - 消息落庫(kù)
 - 消息超時(shí)、重傳、確認(rèn)

未盡事宜
消息重發(fā)可能導(dǎo)致收到重復(fù)的消息,如何進(jìn)行架構(gòu)冪等性設(shè)計(jì),下次撰文另述。

知其然,知其所以然。
思路比結(jié)論更重要。

補(bǔ)充閱讀材料:
《MQ系統(tǒng)設(shè)計(jì)
https://www.geeksforgeeks.org/message-queues-system-design/


==全文完==


該文章在 2025/1/6 10:44:29 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved