學AI,好工作 就找北大青鳥
關注小青 聽課做題,輕松學習
周一至周日
4000-9696-28

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

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

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

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

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

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

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

在RabbitMQ中有三個角色,生產者producer、Broker、消費者consumer,



? 生產者

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


? 消費者

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


? broker

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

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


? P2P模式

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



? Pub\Sub模式



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

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

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

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

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


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