MQ簡(jiǎn)介
什么是MQ
- MQ(Message Queue)是一種跨進(jìn)程的通信機(jī)制,用于傳遞消息此再。通俗點(diǎn)說(shuō)牢贸,就是一個(gè)先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu)饵较。
MQ的應(yīng)用場(chǎng)景
異步解耦
-
最常見(jiàn)的一個(gè)場(chǎng)景是用戶注冊(cè)后溉跃,需要發(fā)送注冊(cè)郵件和短信通知,已告知用戶注冊(cè)成功告抄。傳統(tǒng)的做法如下:
image - 此架構(gòu)下注冊(cè)撰茎,郵件,短信三個(gè)任務(wù)打洼,全部完成后龄糊,才返回注冊(cè)結(jié)果到客戶端,用戶才能使用賬號(hào)登錄募疮。但是對(duì)于用戶來(lái)說(shuō)炫惩,注冊(cè)功能實(shí)際只需要注冊(cè)系統(tǒng)存儲(chǔ)用戶的賬戶信息后,該用戶便可以登錄阿浓,而后續(xù)的注冊(cè)短信和郵件不是即時(shí)需要關(guān)注的步驟他嚷。
-
所以實(shí)際當(dāng)數(shù)據(jù)寫入注冊(cè)系統(tǒng)后,注冊(cè)系統(tǒng)就可以把其他的操作放入對(duì)于的消息隊(duì)列MQ中然后馬上返回用戶結(jié)果芭毙,由消息隊(duì)列MQ異步地進(jìn)行這些操作筋蓖。架構(gòu)圖如下:
image - 異步解耦是消息隊(duì)列MQ的主要特點(diǎn),主要目的是減少請(qǐng)求響應(yīng)時(shí)間和解耦退敦。主要的使用場(chǎng)景就是將比較耗時(shí)而且不需要即時(shí)(同步)返回結(jié)果的操作作為消息放入消息隊(duì)列粘咖。同時(shí),由于使用了消息隊(duì)列MQ侈百,只要保證消息格式不變瓮下,消息的發(fā)送方和接收方不需要彼此聯(lián)系,也不需要受對(duì)方影響钝域,即解耦合讽坏。
流量削峰
- 流量削峰也是消息隊(duì)列MQ的常用場(chǎng)景,一般在秒殺或團(tuán)隊(duì)搶購(gòu)活動(dòng)中使用廣泛例证。
-
在秒殺或團(tuán)隊(duì)搶購(gòu)活動(dòng)中路呜,由于用戶請(qǐng)求量較大,導(dǎo)致流量暴增战虏,秒殺的應(yīng)用在處理如此大量的訪問(wèn)流量后拣宰,下游的通知系統(tǒng)無(wú)法承載海量的調(diào)用量党涕,甚至?xí)?dǎo)致系統(tǒng)崩潰等問(wèn)題而發(fā)生漏通知的情況烦感。為解決這些問(wèn)題,可在應(yīng)用和下游通知系統(tǒng)之間加入消息隊(duì)列MQ膛堤。
image