節(jié)假日出行背后,藏著消息隊列的用法
首先,輸入車票信息,起點站,終點站,出發(fā)時間,票數(shù)以及座席,發(fā)送訂票請求。然后,單擊“預(yù)訂”按鈕,12306 App界面開始轉(zhuǎn)圈圈。與此同時全國大概3億人民也在和你一起做相同的事情。3s后,應(yīng)用告訴你訂票失敗。你修改車次,重新發(fā)送訂票請求。應(yīng)用重復(fù)第二步繼續(xù)等待。又一個3s后,12306 App告訴你訂票成功。
12306 App在處理以上邏輯時,會遇到以下挑戰(zhàn):比如今天這個車次只售出4000張票,而實際有30萬人發(fā)送了訂票信息,如果逐一請求處理,那么90%以上的人都將要耗時3s來等待,怎么辦?答案是:消息隊列!
業(yè)務(wù)系統(tǒng)在超高并發(fā)場景中,由于后端服務(wù)來不及同步處理過多、過快的請求,可能導(dǎo)致請求堵塞,嚴(yán)重時可能由于高負(fù)荷拖垮Web服務(wù)器。
實際的流量會隨著時間不短變化,像12306 App這樣的App流量大得難以想象,而一年中不同的時間段,其流量也不同。為了能支持最高峰流量,我們通常采取短平快的方式——直接擴容服務(wù)器,增加服務(wù)端的吞吐量。
優(yōu)點是顯而易見的,短時間內(nèi)吞吐量增加了好幾倍,甚至數(shù)十倍。缺點也明顯,流量低峰期服務(wù)器相對較閑。
如何平衡平時的空閑與節(jié)假日的超高峰呢?我們想到了消息隊列(比如Apache RocketMQ,Apache Kafka),也是目前業(yè)界比較常用的手段。利用消息隊列扭轉(zhuǎn)處理訂票請求,告知用戶30min內(nèi)會告訴他/她訂票結(jié)果。
新網(wǎng)消息隊列RabbitMQ是一款支持持久化消息隊列的消息中間件。通過創(chuàng)建集群的方式來實現(xiàn)RabbitMQ以及所依賴的服務(wù)的部署,完全兼容RabbitMQ開源生態(tài)以及多語言客戶端,為用戶提供快速創(chuàng)建、方便管理的消息中間件。
電商業(yè)務(wù)場景中經(jīng)常會有秒殺或者團搶的活動,此時會產(chǎn)生大量的請求涌入系統(tǒng),如果直接打到服務(wù)器上可能超出服務(wù)的最大承載能力,導(dǎo)致系統(tǒng)癱瘓。引入RabbitMQ,先將請求寫在RabbitMQ中,后臺服務(wù)器從RabbitMQ中讀取請求處理,把巨大的壓力從后端服務(wù)器轉(zhuǎn)移到RabbitMQ上來保障業(yè)務(wù)正常運行。
目前消息隊列已經(jīng)成為云原生時代企業(yè)上云的核心基礎(chǔ)設(shè)施!快快點擊進行了解吧:http://www.xinnet.com/cs/rabbitmq.html
聲明:免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請發(fā)
送郵件至:operations@xinnet.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時
需注明出處:新網(wǎng)idc知識百科