生產(chǎn)者:把數(shù)據(jù)放到MQ里叫生產(chǎn)者
消費(fèi)者:從MQ里取數(shù)據(jù)叫做消費(fèi)者
作用:
1参萄、解耦:把生產(chǎn)出來的數(shù)據(jù)放到MQ中逃延,由其他消費(fèi)者消費(fèi)消費(fèi)MQ中的數(shù)據(jù)捕虽,從而使數(shù)據(jù)的生產(chǎn)者和消費(fèi)者解耦纺裁。
2、異步:生產(chǎn)者只需要將數(shù)據(jù)寫到MQ中菩貌,就可以直接返回紧索,誰想要這個(gè)數(shù)據(jù)生產(chǎn)者一點(diǎn)都不關(guān)心。數(shù)據(jù)的消費(fèi)者異步的從MQ里拿數(shù)據(jù)菜谣。
3、削峰/限流:當(dāng)請(qǐng)求數(shù)大于機(jī)器可以處理的最大請(qǐng)求數(shù)時(shí)晚缩,可以把請(qǐng)求放到MQ里尾膊,系統(tǒng)根據(jù)自身情況去MQ里拿數(shù)據(jù)處理請(qǐng)求
消費(fèi)者取數(shù)據(jù)
1、push:生產(chǎn)者將數(shù)據(jù)放到消息隊(duì)列中荞彼,消息隊(duì)列有數(shù)據(jù)了冈敛,主動(dòng)叫消費(fèi)者去拿
2、pull:消費(fèi)者不斷去輪訓(xùn)消息隊(duì)列鸣皂,看看有沒有新的數(shù)據(jù)抓谴,如果有就消費(fèi)
消息模式
點(diǎn)對(duì)點(diǎn)模式:
有三個(gè)角色:消息隊(duì)列、生產(chǎn)者寞缝、消費(fèi)者
消息發(fā)送者生產(chǎn)消息發(fā)送到queue中癌压,然后消息接收者從queue中取出并且消費(fèi)消息。消息被消費(fèi)以后荆陆,queue中不再有存儲(chǔ)滩届,所以消息接收者不可能消費(fèi)到已經(jīng)被消費(fèi)的消息。多個(gè)消費(fèi)者對(duì)于隊(duì)列內(nèi)的消息是競爭消費(fèi)關(guān)系被啼,每個(gè)消費(fèi)者只能收到隊(duì)列中的一部分消息帜消。
發(fā)布/訂閱模式:
三個(gè)角色:角色主題棠枉、發(fā)布者、訂閱者
一個(gè)生產(chǎn)者向一個(gè)特定的隊(duì)列發(fā)布消息泡挺,0 個(gè)或多個(gè)訂閱者可以接受來自特定消息主題的消息辈讶;發(fā)布者需要?jiǎng)?chuàng)建一個(gè)訂閱主題(Topic)以便客戶能夠購訂閱并保持持續(xù)的活動(dòng)以接受消息,一個(gè)訂閱主題是由至少一個(gè)隊(duì)列(Queue)組成的娄猫,除非訂閱者創(chuàng)建了持久的訂閱贱除,在訂閱者未連接時(shí)發(fā)布的消息將在訂閱者重新連接時(shí)重新發(fā)布,每個(gè)消費(fèi)者都能收到全量的消息稚新。
RocketMQ
producer:生產(chǎn)者勘伺,將消息發(fā)送到消息隊(duì)列,可以生產(chǎn)消息褂删,也可以對(duì)外提供接口飞醉,由外部來調(diào)用接口,再由生產(chǎn)者將受到的消息發(fā)送給MQ屯阀。
consumer:消費(fèi)者缅帘,從broker拉取消息進(jìn)行消費(fèi)
broker:RocketMQ服務(wù)器,實(shí)現(xiàn)了消息的存儲(chǔ)难衰、拉取钦无,每個(gè)broker上提供對(duì)制定topic的服務(wù)。
name Server:一個(gè)無狀態(tài)的名稱服務(wù)盖袭,可以集群部署失暂,可以理解為注冊(cè)中心,nameServer集群之間不互相通信
tag:用于對(duì)消息進(jìn)行過濾鳄虱,理解文件message的子主題弟塞,同一業(yè)務(wù)不同目的的message可以用相同的topic但是可以用不同的tag來區(qū)分