藍色MQ核心集群由MQ-server,zk,db,管理后臺web等一系列子系統組成。RecvCallback(bytes[] msg)MQ是一個系統間解耦的利器,它能夠很好的解除發布訂閱者之間的耦合,它將上下游的消息投遞解耦成兩個部分,如上述架構圖中的箭頭1和箭頭2:MQ既然將消息投遞拆成了上下半場,為了保證消息的可靠投遞,上下半場都必須盡量保證消息必達。1. sender將消息發送給MQ-server;MQ上半場的123如果丟失或者超時,sender內置的timer會重發消息,直到收到3。如果重傳N次后還未收到3,則SendCallback向業務方回調發送失敗。?5. reciever收到消息,處理業務邏輯,將ACK發送給MQ-server;
6. MQ-server收到ACK,將之前已經落地的消息刪除,流程結束;MQ下半場的456如果丟失或者超時,MQ-server內置的timer會重發消息,直到收到5并且成功執行6。2. 指數退避,先隔x秒重發,2x秒重發,4x秒重發,以此類推;1. MQ是系統之間的解耦利器,它能解除消息發送方與接收方的直接耦合;消息重發可能導致收到重復的消息,如何進行架構冪等性設計,下次撰文另述。https://www.geeksforgeeks.org/message-queues-system-design/
==全文完==
該文章在 2025/1/6 10:44:29 編輯過