日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

阿里二面:RocketMQ同一个消费组内的消费者订阅量不同tag,会有问题吗?

發布時間:2025/3/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿里二面:RocketMQ同一个消费组内的消费者订阅量不同tag,会有问题吗? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

面試官:同一個消費組內的消費者,如果訂閱了相同的 topic,但是訂閱的 tag 不一樣,會有什么問題嗎?

:會出現丟消息的情況。

面試官:能詳細說一說嗎?

:RocketMQ 要求同一個消費組內的消費者必須訂閱關系一致,如果訂閱關系不一致,會出現消息丟失的問題。

面試官:什么是訂閱關系一致呢?

:訂閱關系一致是指同一個消費者組下所有消費者所訂閱的 Topic、Tag 必須完全一致。如下圖所示:

其中,消費組 1 中的消費組都訂閱了 Topic1 中的 Tag1,消費組 2 中的消費組都訂閱了 Topic1 中的所有 Tag 以及 Topic2 中的 Tag1 || Tag2,消費組 3 中的消費組都訂閱了 Topic2 中的 Tag1 和 Tag2。

面試官:能舉幾個訂閱關系不一致的例子嗎?

:訂閱不一致的情況有三種,如下圖:

  • 消費組 1 的 Consumer1 和 Consumer2 都訂閱了 Topic1,但是訂閱的 Tag 不一致。

  • 消費組 2 的 Consumer1 和 Consumer2 訂閱的 Topic 不一致。

  • 消費組 3 的 Consumer1 和 Consumer2 訂閱的 Topic 和 Tag 都一致,但是訂閱 Tag 的順序不一致。

面試官:為什么訂閱關系不一致會導致消息丟失呢?

:RocketMQ 的存儲架構,如下圖:

為了 提高消費效率,RocketMQ 引入了 ConsumeQueue,ConsumerQueue 中保存消息在 CommitLog 文件中的物理偏移量。ConsumerQueue 中的元素內容如下:

  • 前 8 個字節記錄消息在 CommitLog 中的偏移量。

  • 中間 4 個字節記錄消息消息大小。

  • 最后 8 個字節記錄消息中 tag 的 hashcode。

這個 tag 的作用是過濾消息,假如一個 Consumer 訂閱了 Topic1 中的 Tag1,那這個 Consumer ?拉取消息時,首先從 Name Server 獲取訂閱關系,得到當前 Consumer 訂閱的所有 tag 的 hashcode 集合 codeSet。每次從 ConsumerQueue 獲取一條記錄,就要判斷最后 8 個字節 tag hashcode 是否在 codeSet 中,比如 Tag2 不在 codeSet 中,就會被過濾掉。如下圖:

消費組 1 消費 Topic1 中的消息時,Consumer1 通過 ConsumeQueue1 和 ConsumeQueue2 進行消費,Consumer2 通過 ConsumeQueue3 和 ConsumeQueue4 進行消費,如果 Consumer1 訂閱了 Tag1, ? ?Consumer2 訂閱了 Tag2,那 Consumer1 從 ConsumeQueue1 和 ConsumeQueue2 消費消息時,就會把 Tag2 中的消息過濾掉,這樣即使 Consumer2 訂閱了 Tag2,也不能消費到 ConsumeQueue1 和 ConsumeQueue2 里 Tag2 中的消息了。

面試官:有沒有方法可以快速知道消費組中有沒有訂閱關系不一致的問題?

:可以在 RocketMQ 的控制臺看到。在 RocketMQ 的實例列表中,進入 Group 管理頁面,查看要查找的 Group ID,查看詳情,如下圖:(下圖來自阿里云)

面試官:恭喜你,通過了。

有道無術,術可成;有術無道,止于術

歡迎大家關注Java之道公眾號

好文章,我在看??

總結

以上是生活随笔為你收集整理的阿里二面:RocketMQ同一个消费组内的消费者订阅量不同tag,会有问题吗?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。