天天看點

三分鐘帶你入門redis高可用架構之哨兵模式總結面試題及解析總結大廠面試場景知識點總結面試題及解析總結大廠面試場景知識點總結

消息中間件合集:MQ(ActiveMQ/RabbitMQ/RocketMQ)+Kafka+筆記

最近有好多朋友都去投崗秋招提前批,面完回來跟我說碰到消息中間件一類的問題就挂了。額,有點不知所措,于是乎小編就想着做一次消息中間件的專題,歸類整理了MQ(ActiveMQ/RabbitMQ/RocketMQ)+Kafka 等的純手繪知識體系圖、面試以及相關的學習筆記。

三分鐘帶你入門redis高可用架構之哨兵模式總結面試題及解析總結大廠面試場景知識點總結面試題及解析總結大廠面試場景知識點總結

1. 消息的可靠性投遞

在使用 RabbitMQ 的時候,作為消息發送方希望杜絕任何消息丢失或者投遞失敗場景。

RabbitMQ 為我們提供了兩種方式用來控制消息的投遞可靠性模式。

confirm 确認模式:當消息從 producer 發送到 exchange 則會執行 confirmCallback中的confirm方法。

return 退回模式:當消息發送給Exchange後, Exchange将消息路由到queue失敗會執行ReturnCallBack。

三分鐘帶你入門redis高可用架構之哨兵模式總結面試題及解析總結大廠面試場景知識點總結面試題及解析總結大廠面試場景知識點總結

确認模式會傳回{1.相關配置資訊, 2.交換機是否成功接收到消息 , true 成功 false失敗 3.失敗原因 }

回退模式會傳回{1.消息對象,2.錯誤碼,3.錯誤資訊,4.交換機名稱,5.路由鍵}

2.Consumer ACK(消費者 ACK)

ack指Acknowledge,确認。 表示消費端收到消息後的确認方式。

RabbitMQ提供三種确認方式:

自動确認: acknowledge=“none” 當消息一旦被Consumer接收到,則自動确認收到,并将相應 message 從 RabbitMQ 的消息緩存中移除。

手動确認: acknowledge=“manual” 如果出現異常,則調用channel.basicNack()方法,讓其自動重新發送消息。

根據異常情況确認:acknowledge=“auto”。

3. 消息過期(TTL)

TTL 全稱 Time To Live(存活時間/過期時間)。當消息到達存活時間後,還沒有被消費,會被自動清除。

RabbitMQ可以對消息設定過期時間,也可以對整個隊列(Queue)設定過期時間。

消息過期, 可以讓隊列統一過期, 也可以讓它單獨的消息過期。

           

4. 死信隊列

死信隊列,英文縮寫:DLX 。Dead Letter Exchange(死信交換機),當消息成為Dead message (死信)後,可以被重新發送到另一個交換機,這個交換機就是DLX。

三分鐘帶你入門redis高可用架構之哨兵模式總結面試題及解析總結大廠面試場景知識點總結面試題及解析總結大廠面試場景知識點總結

消息成為死信的三種情況:

1.隊列消息長度到達限制;

2.消費者拒接消費消息,并且不把消息重新放入原目标隊列;

3.原隊列存在消息過期設定,消息到達逾時時間未被消費;

死信隊列和死信交換機:

死信隊列和死信交換機與正常的隊列和交換機一模一樣, 沒有任何差別 !! 

           

如何實作隊列與死信交換機綁定 , 給隊列設定如下參數:

  • x-dead-letter-exchange : 設定死信交換機
  • x-dead-letter-routing-key : 設定死信路由key

5. 延遲隊列

消息進入隊列後不會立即被消費,隻有到達指定時間後,才會被消費。 例如:

三分鐘帶你入門redis高可用架構之哨兵模式總結面試題及解析總結大廠面試場景知識點總結面試題及解析總結大廠面試場景知識點總結
延遲隊列是一個很強大的功能 , 但是在RabbitMQ中并沒有提供延遲隊列功能。

可以使用:TTL(消息過期)+死信隊列組合實作延遲隊列的效果。

實作流程圖如下 :

三分鐘帶你入門redis高可用架構之哨兵模式總結面試題及解析總結大廠面試場景知識點總結面試題及解析總結大廠面試場景知識點總結

6. 消費端限流

三分鐘帶你入門redis高可用架構之哨兵模式總結面試題及解析總結大廠面試場景知識點總結面試題及解析總結大廠面試場景知識點總結

當系統峰值比較高的時候 , 我們我們可以使用RabbitMQ實作削峰填谷, 讓我們系統處理的請求更加平穩

實作步驟

  1. 設定akc機制為手動确認
  2. 配置監聽容器

7.RabbitMQ應用問題 (消息補償機制)

我們通過之前的消息可靠性投遞 , ACK 确認機制 , 以及死信隊列 , 基本上已經能夠保證消息投遞成功了 !

為什麼還要消息補償機制呢? 難道消息還會丢失,沒錯,系統是在一個複雜的環境,不要想的太簡單了,雖然以上的三種方案,基本可以保證消息的高可用不丢失的問題,但是作為有追求的程式員來講,要絕對保證我的系統的穩定性,有一種危機意識。

比如:持久化的消息,儲存到硬碟過程中,目前隊列節點挂了,存儲節點硬碟又壞了,消息丢了,怎麼辦?

産線網絡環境太複雜,是以不知數太多,是以要做消息補償機制 !

消息補償機制需要建立在業務資料庫和MQ資料庫的基礎之上 , 當我們發送消息時 , 需要同時将消息資料儲存在資料庫中, 兩者的狀态必須記錄。 然後通過業務資料庫和MQ資料庫的對比檢查消費是否成功,不成功,進行消息補償措施,重新發送消息處理

三分鐘帶你入門redis高可用架構之哨兵模式總結面試題及解析總結大廠面試場景知識點總結面試題及解析總結大廠面試場景知識點總結

總結

面試前的“練手”還是很重要的,是以開始面試之前一定要準備好啊,不然也是耽擱面試官和自己的時間。

我自己是刷了不少面試題的,是以在面試過程中才能夠做到心中有數,基本上會清楚面試過程中會問到哪些知識點,高頻題又有哪些,是以刷題是面試前期準備過程中非常重要的一點。

下面我就把我整理的面試資料分享給有需要的讀者朋友——戳這裡免費擷取

面試題及解析總結

三分鐘帶你入門redis高可用架構之哨兵模式總結面試題及解析總結大廠面試場景知識點總結面試題及解析總結大廠面試場景知識點總結

大廠面試場景

三分鐘帶你入門redis高可用架構之哨兵模式總結面試題及解析總結大廠面試場景知識點總結面試題及解析總結大廠面試場景知識點總結

知識點總結

1R2dB)**

面試題及解析總結

[外鍊圖檔轉存中…(img-aO1tvCRJ-1624689207657)]

大廠面試場景

[外鍊圖檔轉存中…(img-BxmioJPk-1624689207658)]

知識點總結

三分鐘帶你入門redis高可用架構之哨兵模式總結面試題及解析總結大廠面試場景知識點總結面試題及解析總結大廠面試場景知識點總結

繼續閱讀