面試時,碰到消息隊列RabbitMQ問題應(yīng)該怎么說?

現(xiàn)在的面試要求越來越高了,打開看了看幾個 BOSS 招聘 Node.js 全棧開發(fā)的,其中都有一條“了解 消息隊列,并在項目中應(yīng)用過”,其實沒有多么高大上,看了消息隊列RabbitMQ 就知道了。
MQ全稱為Message Queue, 消息隊列(MQ)是一種應(yīng)用程序?qū)?yīng)用程序的通信方法。應(yīng)用程序通過讀寫出入隊列的消息(針對應(yīng)用程序的數(shù)據(jù))來通信,而無需專用連接來鏈接它們。
消息傳遞指的是程序之間通過在消息中發(fā)送數(shù)據(jù)進行通信,而不是通過直接調(diào)用彼此來通信,直接調(diào)用通常是用于諸如遠(yuǎn)程過程調(diào)用的技術(shù)。排隊指的是應(yīng)用程序通過 隊列來通信。隊列的使用除去了接收和發(fā)送應(yīng)用程序同時執(zhí)行的要求。
RabbitMQ是使用Erlang語言開發(fā)的開源消息隊列系統(tǒng),基于AMQP協(xié)議來實現(xiàn)。AMQP的主要特征是面向消息、隊列、路由(包括點對點和發(fā)布/訂閱)、可靠性、安全。
AMQP協(xié)議更多用在企業(yè)系統(tǒng)內(nèi),對數(shù)據(jù)一致性、穩(wěn)定性和可靠性要求很高的場景,對性能和吞吐量的要求還在其次。
一、為什么要使用 rabbitmq
在分布式系統(tǒng)下具備異步,削峰,負(fù)載均衡等一系列高級功能;
擁有持久化的機制,進程消息,隊列中的信息也可以保存下來。
實現(xiàn)消費者和生產(chǎn)者之間的解耦。
對于高并發(fā)場景下,利用消息隊列可以使得同步訪問變?yōu)榇性L問達到一定量的限流,利于數(shù)據(jù)庫的操作。
可以使用消息隊列達到異步下單的效果,排隊中,后臺進行邏輯下單。
二、消息隊列優(yōu)勢
1、應(yīng)用解耦消息隊列可以使消費者和生產(chǎn)者直接互不干涉,互不影響,只需要把消息發(fā)送到隊列即可,而且可獨立的擴展或修改兩邊的處理過程,只要能確保它們遵守同樣的接口約定,可以生產(chǎn)者用Node.js實現(xiàn),消費者用python實現(xiàn)。
2、靈活性和峰值處理能力當(dāng)客戶端訪問量突然劇增,對服務(wù)器的訪問已經(jīng)超過服務(wù)所能處理的大峰值,甚至導(dǎo)致服務(wù)器超時負(fù)載崩潰,使用消息隊列可以解決這個問題,可以通過控制消費者的處理速度和生產(chǎn)者可進入消息隊列的數(shù)量等來避免峰值問題。
3、排序保證消息隊列可以控制數(shù)據(jù)處理的順序,因為消息隊列本身使用的是隊列這個數(shù)據(jù)結(jié)構(gòu),F(xiàn)IFO(先進選出),在一些場景數(shù)據(jù)處理的順序很重要,比如商品下單順序等。
4、異步通信消息隊列中的有些消息,并不需要立即處理,消息隊列提供了異步處理機制,可以把消息放在隊列中并不立即處理,需要的時候處理,或者異步慢慢處理,一些不重要的發(fā)送短信和郵箱功能可以使用。
5、可擴展性前面提到了消息隊列可以做到解耦,如果我們想增強消息入隊和出隊的處理頻率,很簡單,并不需要改變代碼中任何內(nèi)容,可以直接對消息隊列修改一些配置即可,比如我們想限制每次發(fā)送給消費者的消息條數(shù)等。有優(yōu)勢定有它現(xiàn)實的應(yīng)用場景,文章后面會針對優(yōu)勢講它們對應(yīng)的應(yīng)用場景。
親,別只看,你試試呀!直接進入創(chuàng)新互聯(lián),裝個 RabbitMQ,挺有意思的。

標(biāo)題名稱:面試時,碰到消息隊列RabbitMQ問題應(yīng)該怎么說?
鏈接地址:http://muchs.cn/article16/sdsodg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計網(wǎng)站改版、品牌網(wǎng)站建設(shè)建站公司、網(wǎng)站策劃Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營