rabbitmq的面試題

2022-06-26 07:39:12 字數 2876 閱讀 9482

rabbitmq 的使用場景有哪些?

①. 跨系統的非同步通訊,所有需要非同步互動的地方都可以使用訊息佇列。就像我們除了打**(同步)以外,還需要發簡訊,發電子郵件(非同步)的通訊方式。

③. 應用內的同步變異步,比如訂單處理,就可以由前端應用將訂單資訊放到佇列,後端應用從佇列裡依次獲得訊息處理,高峰時的大量訂單可以積壓在佇列裡慢慢處理掉。由於同步通常意味著阻塞,而大量執行緒的阻塞會降低計算機的效能。

④. 訊息驅動的架構(eda),系統分解為訊息佇列,和訊息製造者和訊息消費者,乙個處理流程可以根據需要拆成多個階段(stage),階段之間用佇列連線起來,前乙個階段處理的結果放入佇列,後乙個階段從佇列中獲取訊息繼續處理。

⑤. 應用需要更靈活的耦合方式,如發布訂閱,比如可以指定路由規則。

rabbitmq 有哪些重要的角色?

rabbitmq 中重要的角色有:生產者、消費者和**:

rabbitmq 有哪些重要的元件?

rabbitmq 中 vhost 的作用是什麼?

vhost 可以理解為虛擬 broker ,即 mini-rabbitmq server。其內部均含有獨立的 queue、exchange 和 binding 等,但最最重要的是,其擁有獨立的許可權系統,可以做到 vhost 範圍的使用者控制。當然,從 rabbitmq 的全域性角度,vhost 可以作為不同許可權隔離的手段(乙個典型的例子就是不同的應用可以跑在不同的 vhost 中)。

rabbitmq 的訊息是怎麼傳送的?

首先客戶端必須連線到 rabbitmq 伺服器才能發布和消費訊息,客戶端和 rabbit server 之間會建立乙個 tcp 連線,一旦 tcp 開啟並通過了認證(認證就是你傳送給 rabbit 伺服器的使用者名稱和密碼),你的客戶端和 rabbitmq 就建立了一條 amqp 通道(channel),通道是建立在「真實」 tcp 上的虛擬連線,amqp 命令都是通過通道傳送出去的,每個通道都會有乙個唯一的 id,不論是發布訊息,訂閱佇列都是通過這個通道完成的。

rabbitmq 怎麼保證訊息的穩定性?

提供了事務的功能。

通過將 channel 設定為 confirm(確認)模式。

rabbitmq 怎麼避免訊息丟失?

訊息持久化

ack確認機制

設定集群映象模式

訊息補償機制

要保證訊息持久化成功的條件有哪些?

宣告佇列必須設定持久化 durable 設定為 true.

訊息推送投遞模式必須設定持久化,deliverymode 設定為 2(持久)。

訊息已經到達持久化交換器。

訊息已經到達持久化佇列。

以上四個條件都滿足才能保證訊息持久化成功。

rabbitmq 持久化有什麼缺點?

持久化的缺地就是降低了伺服器的吞吐量,因為使用的是磁碟而非記憶體儲存,從而降低了吞吐量。可盡量使用 ssd 硬碟來緩解吞吐量的問題。

rabbitmq 有幾種廣播型別?

fanout: 所有bind到此exchange的queue都可以接收訊息(純廣播,繫結到rabbitmq的接受者都能收到訊息);

direct: 通過routingkey和exchange決定的那個唯一的queue可以接收訊息;

topic:所有符合routingkey(此時可以是乙個表示式)的routingkey所bind的queue可以接收訊息;

rabbitmq 怎麼實現延遲訊息佇列?

通過訊息過期後進入死信交換器,再由交換器**到延遲消費佇列,實現延遲功能;

使用 rabbitmq-delayed-message-exchange 外掛程式實現延遲功能。

rabbitmq 集群有什麼用?

集群主要有以下兩個用途:

高可用:某個伺服器出現問題,整個 rabbitmq 還可以繼續使用;

rabbitmq 節點的型別有哪些?

磁碟節點:訊息會儲存到磁碟。

記憶體節點:訊息都儲存在記憶體中,重啟伺服器訊息丟失,效能高於磁碟型別。

rabbitmq 集群搭建需要注意哪些問題?

各節點之間使用「--link」連線,此屬性不能忽略。

各節點使用的 erlang cookie 值必須相同,此值相當於「秘鑰」的功能,用於各節點的認證。

整個集群中必須包含乙個磁碟節點。

rabbitmq 每個節點是其他節點的完整拷貝嗎?為什麼?

不是,原因有以下兩個:

效能的考慮:如果每條訊息都需要完整拷貝到每乙個集群節點,那新增節點並沒有提公升處理訊息的能力,最多是保持和單節點相同的效能甚至是更糟。

rabbitmq 集群中唯一乙個磁碟節點崩潰了會發生什麼情況?

如果唯一磁碟的磁碟節點崩潰了,不能進行以下操作:

不能建立佇列

不能建立交換器

不能建立繫結

不能新增使用者

不能更改許可權

不能新增和刪除集群節點

唯一磁碟節點崩潰了,集群是可以保持執行的,但你不能更改任何東西。

rabbitmq 對集群節點停止順序有要求嗎?

rabbitmq 對集群的停止的順序是有要求的,應該先關閉記憶體節點,最後再關閉磁碟節點。如果順序恰好相反的話,可能會造成訊息的丟失。

RabbitMQ的面試題

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

RabbitMQ面試題 一

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

RabbitMQ面試題概述

rabbitmq是一款開源的,erlang編寫的,基於amqp協議的,訊息中介軟體 rabbitmq是一款開源的,erlang編寫的,基於amqp協議的,訊息中介軟體 可以用它來 解耦 非同步 削峰。解耦,系統a在 中直接呼叫系統b和系統c的 如果將來d系統接入,系統a還需要修改 過於麻煩!非同步,...