RabbitMQ面試題概述

2021-10-09 17:28:14 字數 1154 閱讀 5322

rabbitmq是一款開源的,erlang編寫的,基於amqp協議的,訊息中介軟體;

rabbitmq是一款開源的,erlang編寫的,基於amqp協議的,訊息中介軟體;

可以用它來:解耦、非同步、削峰。

①.解耦,系統a在**中直接呼叫系統b和系統c的**,如果將來d系統接入,系統a還需要修改**,過於麻煩!

②.非同步,將訊息寫入訊息佇列,非必要的業務邏輯以非同步的方式執行,加快響應速度

③.削峰,併發量大的時候,所有的請求直接懟到資料庫,造成資料庫連線異常

broker 是指乙個或多個 erlang node 的邏輯分組,且 node 上執行著 rabbitmq 應用程式。cluster 是在 broker 的基礎之上,增加了 node 之間共享元資料的約束。

#4、rabbitmq有什麼優缺點?

優點:解耦、非同步、削峰;

缺點:降低了系統的穩定性:本來系統執行好好的,現在你非要加入個訊息佇列進去,那訊息佇列掛了,你的系統不是呵呵了。因此,系統可用性會降低;

沒有哪個專案會只用一搭建一台rabbitmq伺服器提供服務,風險太大;

訊息不可靠的情況可能是訊息丟失,劫持等原因;

丟失又分為:生產者丟失訊息、訊息列表丟失訊息、消費者丟失訊息;

單執行緒消費保證訊息的順序性;對訊息進行編號,消費者處理訊息是根據編號處理訊息;

先說為什麼會重複消費:正常情況下,消費者在消費訊息的時候,消費完畢後,會傳送乙個確認訊息給訊息佇列,訊息佇列就知道該訊息被消費了,就會將該訊息從訊息佇列中刪除;

但是因為網路傳輸等等故障,確認資訊沒有傳送到訊息佇列,導致訊息佇列不知道自己已經消費過該訊息了,再次將訊息分發給其他的消費者。

針對以上問題,乙個解決思路是:保證訊息的唯一性,就算是多次傳輸,不要讓訊息的多次消費帶來影響;保證訊息等冪性;

由於tcp連線的建立和銷毀開銷較大,且併發數受系統資源限制,會造成效能瓶頸。rabbitmq使用通道的方式來傳輸資料。通道是建立在真實的tcp連線內的虛擬連線,且每條tcp連線上的通道數量沒有限制。

若該佇列至少有乙個消費者訂閱,訊息將以迴圈(round-robin)的方式傳送給消費者。每條訊息只會分發給乙個訂閱的消費者(前提是消費者能夠正常處理訊息並進行確認)。

RabbitMQ的面試題

1 場景 秒殺活動一般會因為流量過大,導致應用掛掉,為了解決這個問題,一般會在應用後端加入訊息佇列。2 作用 可以控制活動人數,超過一定閾值的訂單直接丟棄 這就是為什麼沒有秒殺成功哦 業務系統設定閾值,超過閾值限流 可以緩解短時間的高流量壓垮應用 應用程式按照自己的最大能力獲取訂單 3 描述 1 場...

RabbitMQ面試題 一

什麼是rabbitmq?答 rabbitmq是實現了高階訊息佇列協議 amqp 的開源訊息 軟體 亦稱面向訊息的中介軟體 生產者把訊息傳送到訊息佇列,消費者去訊息佇列中取訊息消費,實現了服務之間的高度解耦。使用rabbitmq有什麼好處?答 非同步,解耦,削峰填谷 使用rabbitmq有什麼缺點?答...

面試題 RabbitMQ部分

rabbitmq 的使用場景有哪些?簡單的傳送與接收,沒有特別的處理 單傳送多接收 發布 訂閱模式,傳送端傳送廣播訊息,多個接收端接收 按路線傳送接收 按topics傳送接收 rabbitmq 有哪些重要的角色?management policymaker monitorng administrat...