A few days ago, some water friends asked questions ：
Through message queuing （MsgQueue,MQ） Send tasks and messages , In case MQ What if you restart it ? Can it be guaranteed MQ Don't lose news ?
Let's talk about it today MQ Architecture and process of message delivery .
Don't lose news ,MQ What is the core direction of architecture design ?
MQ If you want information, you will get it , There are two core design points in the architecture ：
（1） News landing ;
（2） Message timeout , Retransmission , confirm ;
In order to achieve the above two core points ,MQ What is the architecture ?
The image above is a MQ Core architecture of , It can be divided into three parts ：
（1） Sender -> Pink part on the left ;
（2）MQ Core cluster -> Middle blue part ;
（3） Receiver -> The yellow part of the excrement on the right ;
The pink sender consists of two parts ：
（1） Business caller ;
The latter provides two cores for the former API：
blue MQ The core cluster is divided into four parts ：
（4） Management backstage web;
The Yellow receiver also consists of two parts ：
（1） Business receiver ;
The latter provides two cores for the former API：
MQ It is a powerful tool for decoupling between systems , It can decouple publishing subscribers , It decouples the upstream and downstream message delivery into two parts , As in the frame composition 1 Arrow and 2 arrow ：
arrow 1： The sender delivers the message to MQ, first half ;
arrow 2：MQ Post message to receiver , second half ;
MQ What is the core process of reliable message delivery ?
MQ Since we split the delivery of the message into the first and second half , In order to ensure the reliable delivery of the message , In the first half and the second half, the news must be delivered .
MQ First half of message delivery ,MQ-client-sender reach MQ-server The process is shown in the figure above 1-3：
（1）MQ-client Send message to MQ-server;
Voice over ： At this point, the business side calls API：SendMsg.
（2）MQ-server Drop the news , After landing, the system is sent successfully ;
（3）MQ-server Send response to MQ-client;
Voice over ： At this time, call back the business API：SendCallback.
MQ Message delivery second half ,MQ-server reach MQ-client-receiver The process is shown in the figure above 4-6：
（4）MQ-server Send message to MQ-client;
Voice over ： At this time, call back the business API：RecvCallback.
（5）MQ-client Reply to MQ-server;
Voice over ： At this time, the business side calls the API：SendAck.
（6）MQ-server received ack, Delete the message that has landed before , Complete the reliable delivery of messages ;
What if the news is lost ?
MQ The first and second half of message delivery , Message loss can occur , To ensure message accessibility ,MQ Timeout and retransmission are required .
How to implement overtime and retransmission in the first half ?
MQ First half 1 perhaps 2 perhaps 3 If lost or timed out ,MQ-client-sender Internal timer The message will be retransmitted
, Until you expect it 3, If retransmission N I haven't received it yet , be SendCallback Callback send failed , It should be noted that , In the process MQ-server Multiple retransmissions of the same message may be received .
How to implement overtime and retransmission in the second half ?
MQ In the second half 4 perhaps 5 perhaps 6 If lost or timed out ,MQ-server Internal timer The message will be retransmitted , Until we get it 5 And it was successfully implemented 6, This process can be repeated many times .
Voice over ： Generally, the strategy of exponential backoff is adopted , Septum propria x Second retransmission ,2x Second retransmission ,4x Second retransmission , and so on .
It should be noted that , In the process MQ-client-receiver You may also receive multiple retransmissions of the same message .
MQ It is a powerful tool for decoupling between systems ,MQ In order to ensure that the news will arrive , The direction of architecture design is ：
（1） When the message is received, it will land first ;
（2） Message timeout , Retransmission , Confirm to ensure that the message will arrive ;
remaining problems ：
first half ,MQ-server Duplicate messages may be received ; second half ,MQ-client-receiver, That is, the message receiver may receive duplicate messages , What should I do? ?
Voice over ： How to remove duplicate , How to design idempotent , Listen to the live broadcast of sister Xuan .
event ：《RocketMQ Enterprise application and customized development practice 》
character ： Naixue Education CEO, Sister Xuan
time ：6.4,6.5,6.6 Three days ,20:00-22:00
Voice over ： Two hours a day , Free Admission , Is there sincerity ?
How to participate ?
Scan code and add assistant , Get live address , Send architect growth map
What about the content outline ?
（1）MQ Analysis of enterprise application scenarios ;
（2） common MQ Selection comparison ;
（3）MQ High availability and horizontal expansion architecture ;
（4）MQ In depth analysis of storage principle ;
（5）MQ Deep analysis of service registration and service discovery ;
（6）MQ Deep analysis of load balancing architecture ;
（7）MQ Principle of transaction message implementation ;
（8）MQ Principle of delay message architecture ;
（9）RocketMQ Customized development practice ;
（10） Homework and explanation ;
continuity 3 day (6.4/6.5/6.6), Every day 2 hour (20:00-22:00), Free live broadcast of sister Xuan ,MQ, A lot of dry goods , Read the original , Get live address , I can only help you get here , Let's learn together .