學(xué)AI,好工作 就找北大青鳥
關(guān)注小青 聽課做題,輕松學(xué)習(xí)
周一至周日
4000-9696-28

看“消息隊列”如何讓你更快、更爽

來源:北大青鳥總部 2023年02月06日 11:38

摘要: Message Queue運行機(jī)制是怎樣的?業(yè)內(nèi)常用的MQ包括Kafka、ActiveMQ、RabbitMQ、RocketMQ,四者基本原理差不多,只是根據(jù)類型不同而有些許區(qū)別,我們以RabbitMQ來進(jìn)行講解吧~

之前疫情帶來的隔離使得我們只能待在家里,除了工作、上網(wǎng)課、自我充電之外,即使有云健身、云購物、做美食等等活動,我們似乎還是覺得少了點什么。一天24小時,活動的最大空間就是從客廳到廚房,這時候最大的釋放莫過于買買買了。

說到買買買,最激動人心的就是雙十一了,雙十一活動雖然多可即使你提前開始打開手機(jī)電腦iPad等著,準(zhǔn)點開搶,然而還是搶不到搶不到搶不到!這背后的原因真的是因為有的人手速快、有的人運氣好,而并不是供應(yīng)商搞這樣的活動來吸引人然而實際沒做活動。

我們以最讓大家激情澎湃的雙十一為例,從23:59分開始,每個人都打開手機(jī),不斷的刷新頁面,不斷的點擊商品去結(jié)算,直到00:00這一時刻過去。除了商品買到或沒買到之外,淘寶app或網(wǎng)頁版卻也還是可用的,只不過是這件商品買不到而已,但不影響其它的商品的購買,在2019年的雙十一中淘寶每秒處理544000筆請求,如此大的用戶請求量下還保障業(yè)務(wù)的正常運行,可以說阿里云是非常了不起的。在以前的交易系統(tǒng)中,我們購買一個商品,先進(jìn)行商品的篩選,然后提交購買商品的款式、數(shù)量給到系統(tǒng),這時候需要等待查詢庫存的結(jié)果,如果有商品的話則可以繼續(xù)進(jìn)行付款,如果沒有的話就返回錯誤。如果是這樣的機(jī)制運行在雙十一這樣的大流量里,那么所有的人都要瘋了,一來一回的等,索性不買了!實際上我們也找到了一個特別好的解決方案— 消息隊列Message Queue,用其來實現(xiàn)消息的異步傳輸?,F(xiàn)在的交易系統(tǒng)是這樣的,我們篩選好商品之后,直接向訂單系統(tǒng)發(fā)起購買請求,訂單系統(tǒng)一邊給庫存系統(tǒng)發(fā)送用戶訂單,另一邊直接返回用戶訂單結(jié)果,用戶無須等待即可快速的完成整個購物流程。

那么MQ(Message Queue)的運行機(jī)制是怎么樣的呢?現(xiàn)在業(yè)內(nèi)常用的MQ包括Kafka、ActiveMQ、RabbitMQ、RocketMQ,四者的基本原理都差不多,只不過是根據(jù)自己的類型不同而有些許區(qū)別,我們以RabbitMQ來進(jìn)行講解吧~

在RabbitMQ中有三個角色,生產(chǎn)者producer、Broker、消費者consumer,



? 生產(chǎn)者

即消息的創(chuàng)建者,將業(yè)務(wù)產(chǎn)生的數(shù)據(jù)進(jìn)行一定的包裝,放進(jìn)broker中。


? 消費者

即接收消息的一方,通過連接broker,訂閱隊列里面的消息。


? broker

即管理消息的服務(wù)器,它包含exchange和queue。exchange即交換器,生產(chǎn)者將消息投給broker后,broker內(nèi)的exchange決定把消息分發(fā)給哪個隊列queue。

典型的MQ設(shè)計模式有兩種,即點對點P2P(point to point)、發(fā)布訂閱pub\sub(publish\subscribe).


? P2P模式

P2P的典型特點是發(fā)送的消息都會被成功處理。每個消息只有一個消費者,并且成功消費后告知生產(chǎn)者。它包含生產(chǎn)者、消息隊列、消費者三個模塊。



? Pub\Sub模式



發(fā)布\訂閱模式的特點是一條消息可以被多個消費者消費、也可以不必消費,消費者根據(jù)自己的需要來訂閱生產(chǎn)者消息。包含生產(chǎn)者、topic、消費者三個模塊,topic也就是主題。對于生產(chǎn)者消費者大家很熟悉了,但topic有點晦澀,我們以阿里巴巴旗下有淘寶、天貓、支付寶等產(chǎn)品來講解一下,在客戶注冊不同app后發(fā)送注冊成功的短信中,淘寶的注冊成功短信是一個topic,天貓的短信是另一個topic。

其實整個消息管理系統(tǒng)的運轉(zhuǎn)就和平時寄快遞差不多,假設(shè)我們要寄個物品回家,首先將我們的快遞給到快遞公司,快遞公司內(nèi)部根據(jù)目的地再分配走哪條路線,到達(dá)目的地后再由快遞員送到家里。我們就是生產(chǎn)者,整個快遞公司就是broker,不同的目的地就是不同的topic,收件人就是消費者。

MQ是隨著云計算的出現(xiàn)而出現(xiàn)的,隨著互聯(lián)網(wǎng)的發(fā)展,應(yīng)用變得越來越復(fù)雜,系統(tǒng)與系統(tǒng)之間互相依賴,這樣就導(dǎo)致在開發(fā)過程中開發(fā)周期長、上線要互相等待、上線后用戶使用某個服務(wù)時也要互相等待。這時候MQ就擔(dān)任了系統(tǒng)與系統(tǒng)之間的橋梁,讓它們不再互相強依賴,訂單系統(tǒng)可以獨自開發(fā)完成上線、庫存系統(tǒng)也可以獨自開發(fā)完成上線,用戶使用時感覺順暢,實現(xiàn)了系統(tǒng)與系統(tǒng)之間的解耦。

MQ除了異步處理、解耦外,另一個主要的應(yīng)用場景就是削峰。以我們在京東搶商品為例,15:00準(zhǔn)時開搶,這個時候可能一下子就來了10000個用戶(平常也就是1000個用戶,一下多了十倍),如果每個用戶的下單請求都去請求庫存系統(tǒng)的話,那么后臺的數(shù)據(jù)庫一下子就崩潰了,但有了MQ,我們可以把用戶的請求全都放在消息隊列里,等到后臺一個個的處理,就等價于把流量高峰削減了,保障了網(wǎng)站的正常運行。

隨著5G的到來、云計算的發(fā)展、人工智能的應(yīng)用與普及,會有越來越多的人同時接入互聯(lián)網(wǎng),傳統(tǒng)的“巨無霸”應(yīng)用已不可取,將消息隊列融合在應(yīng)用中,實現(xiàn)應(yīng)用的解耦、異步使用,才能保障用戶的使用體驗,也才能保障互聯(lián)網(wǎng)繼續(xù)大步的往前發(fā)展,用戶更快、更爽~


標(biāo)簽: rabbitmq
熱門班型時間
人工智能就業(yè)班 即將爆滿
AI應(yīng)用線上班 即將爆滿
UI設(shè)計全能班 即將爆滿
數(shù)據(jù)分析綜合班 即將爆滿
軟件開發(fā)全能班 爆滿開班
網(wǎng)絡(luò)安全運營班 爆滿開班
報名優(yōu)惠
免費試聽
課程資料
官方微信
返回頂部
培訓(xùn)課程 熱門話題 站內(nèi)鏈接