現在的面試要求越來越高了,打開看了看幾個 BOSS 招聘 Node.js 全棧開發的,其中都有一條“了解 消息隊列,并在項目中應用過”,其實沒有多么高大上,看了消息隊列RabbitMQ 就知道了。
MQ全稱為Message Queue, 消息隊列(MQ)是一種應用程序對應用程序的通信方法。應用程序通過讀寫出入隊列的消息(針對應用程序的數據)來通信,而無需專用連接來鏈接它們。
消息傳遞指的是程序之間通過在消息中發送數據進行通信,而不是通過直接調用彼此來通信,直接調用通常是用于諸如遠程過程調用的技術。排隊指的是應用程序通過 隊列來通信。隊列的使用除去了接收和發送應用程序同時執行的要求。
RabbitMQ是使用Erlang語言開發的開源消息隊列系統,基于AMQP協議來實現。AMQP的主要特征是面向消息、隊列、路由(包括點對點和發布/訂閱)、可靠性、安全。
AMQP協議更多用在企業系統內,對數據一致性、穩定性和可靠性要求很高的場景,對性能和吞吐量的要求還在其次。
一、為什么要使用 rabbitmq
在分布式系統下具備異步,削峰,負載均衡等一系列高級功能;
擁有持久化的機制,進程消息,隊列中的信息也可以保存下來。
實現消費者和生產者之間的解耦。
對于高并發場景下,利用消息隊列可以使得同步訪問變為串行訪問達到一定量的限流,利于數據庫的操作。
可以使用消息隊列達到異步下單的效果,排隊中,后臺進行邏輯下單。
二、消息隊列優勢
1、應用解耦消息隊列可以使消費者和生產者直接互不干涉,互不影響,只需要把消息發送到隊列即可,而且可獨立的擴展或修改兩邊的處理過程,只要能確保它們遵守同樣的接口約定,可以生產者用Node.js實現,消費者用python實現。
2、靈活性和峰值處理能力當客戶端訪問量突然劇增,對服務器的訪問已經超過服務所能處理的大峰值,甚至導致服務器超時負載崩潰,使用消息隊列可以解決這個問題,可以通過控制消費者的處理速度和生產者可進入消息隊列的數量等來避免峰值問題。
3、排序保證消息隊列可以控制數據處理的順序,因為消息隊列本身使用的是隊列這個數據結構,FIFO(先進選出),在一些場景數據處理的順序很重要,比如商品下單順序等。
4、異步通信消息隊列中的有些消息,并不需要立即處理,消息隊列提供了異步處理機制,可以把消息放在隊列中并不立即處理,需要的時候處理,或者異步慢慢處理,一些不重要的發送短信和郵箱功能可以使用。
5、可擴展性前面提到了消息隊列可以做到解耦,如果我們想增強消息入隊和出隊的處理頻率,很簡單,并不需要改變代碼中任何內容,可以直接對消息隊列修改一些配置即可,比如我們想限制每次發送給消費者的消息條數等。有優勢定有它現實的應用場景,文章后面會針對優勢講它們對應的應用場景。
親,別只看,你試試呀!直接進入創新互聯,裝個 RabbitMQ,挺有意思的。
標題名稱:面試時,碰到消息隊列RabbitMQ問題應該怎么說?
鏈接地址:http://m.newbst.com/article16/sdsodg.html
成都網站建設公司_創新互聯,為您提供App設計、網站改版、品牌網站建設、建站公司、網站策劃、Google
廣告
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源:
創新互聯