在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

RocketMQ最佳實踐之坑

jf_ro2CN3Fa ? 來源:yes的練級攻略 ? 2023-06-02 14:13 ? 次閱讀

前不久踩了個坑,而這個坑跟 RocketMQ 推薦的一個最佳實踐有關。

看下我從官網的截圖,官方推薦一個應用盡可能只用一個 topic,然后用 tags 來標識子類型。

9711106c-0103-11ee-90ce-dac502259ad0.png

從訂單角度來看,可以用一個 Topic-Order,然后再用不同的 tag 來區分這是 3C 類的訂單,還是母嬰類的訂單等,然后下游應用根據不同的需求過濾不同的 tag。

這樣的實現方式從業務上來看關系更清晰(有點樹狀的感覺),但是在實踐上有點問題。

問題和起因

一般而言,生產上同一個服務至少會部署兩臺機器,不僅僅是為了負載均衡,也是為了系統的可靠性,當一臺機器意外掛了,另一臺可以扛起大旗。

我們在發服務的時候,都是分批發布。

這是為了驗證新功能的正確性,不讓其一次性影響所有實例,我們會先發布一批,然后觀察下日志,確保無誤后繼續發布后續幾臺機器。

而這個操作再結合 RocketMQ 一個 Topic 多 tag 就會出現訂閱消息不一致的情況,導致丟消息。

原理分析

我們借用官網的圖來分析一下。

一般我們都用集群模式,以下描述默認使用集群模式

從使用層來看,發送和消費消息給我們最直觀的感受如下:

生產者往一個 Topic 發送消息,消費者訂閱了這個 Topic 就能消費到這個消息。

974595bc-0103-11ee-90ce-dac502259ad0.png

而實際上在 RocketMQ 中有隊列的概念:

97759410-0103-11ee-90ce-dac502259ad0.png

也就是生產者往一個 Topic 發送消息時,消息會被分到不同的隊列中。

而屬于同一個消費組的消費者們會平分消費這些隊列,從上圖可以看到 Topic A 分了三個隊列,分別是 MessageQueue 0、1、2。

而消費組 ConsumerGroupA 中的 Consumer1 僅消費 MessageQueue0 和 MessageQueue1 這兩個隊列中的消息,而 Consumer2 僅消費 MessageQueue2。

這樣劃分后,Consumer1 是無法消費到 MessageQueue2 中的消息的。

看到可能有人會說,這跟 tag 有什么關系嗎?沒錯,問題就在這個分割跟 tag 沒關系!

在默認情況下生產者發送消息是以輪詢隊列的方式發送的。

比如現在 Producer A 要發送 TopicA-tag1、TopicA-tag2、TopicA-tag3 這三條數據,輪詢發送后,MessageQueue 0、1、2 分別存儲了這 3 條消息。

97a02c48-0103-11ee-90ce-dac502259ad0.png

假設同樣訂閱了 TopicA,但是 Consumer 1訂閱的 tag 是 tag1和 tag3,而 Consumer 2 訂閱的是 tag1、tag2,那么問題就來了。

97c1257e-0103-11ee-90ce-dac502259ad0.png

按輪詢的順序 Consumer 1 要消費的 tag3 被投遞到 MessageQueue2 這個隊列中,而 Consumer 1 又無法消費 MessageQueue2 中的消息,Consumer 2 能消費 MessageQueue2 中的消息,但偏偏它又不要 tag3 的消息。這樣一來 tag3 的這條消息就丟了,問題就出現了。

所以,在實踐中,我們要求同一個消費組的消費者的訂閱關系要保持一致。

也就是 Conusmer1 和 Conusmer2 需要訂閱一樣的 Topic、一樣的 tag,這樣消息才不會丟失。

再回到問題

現在我們已經知道訂閱關系一致的重要性,但是有時候不得已就會“明知故犯”。

假設我們訂單服務線上一共部署了 5 臺,這 5 臺機器屬于同一個消費組,因此它們負載均衡消費有關訂單的消息,如 Topic-Order。

這 5 臺機器部署的都是同一套代碼,它們都訂閱了 Topic-Order,且 tag 是 A、B、C 三個。

這次發版需要訂單服務新增消費 Topic-Order 下的 tag D 消息,由于分批部署,所以先部署了 1 臺機器觀察。

而此時線上就出現了訂閱關系不一致的情況!5臺機器,有 1 臺訂閱了 Topic-Order tag A、B、C、D,而其他 4 臺訂閱了 Topic-Order tag A、B、C。

這段時間內就出現了上述所說的丟消息的情況,如果有 Topic-Order tagD 的消息產生,那么就有可能會丟了。

明知有錯,不想犯,卻犯了!

針對這個場景,我暫時沒啥思路,不知道業界是否有什么方式可以優雅的處理這個問題?歡迎各位留言指導或探討!

然后留個坑,如果一臺機器訂閱的是 tagA||tagB,而另一臺訂閱的是 tagB||tagA,這樣算訂閱消息一致嗎?




審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器人
    +關注

    關注

    213

    文章

    29537

    瀏覽量

    211769
  • 過濾器
    +關注

    關注

    1

    文章

    436

    瀏覽量

    20259

原文標題:RocketMQ 最佳實踐之坑

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    天馬榮獲新財富雜志“2024 ESG最佳實踐獎”

    天馬可持續發展?ESG表現再獲認可,上榜2024年新財富雜志最佳上市公司評選“ESG最佳實踐榜單”。
    的頭像 發表于 05-21 14:43 ?260次閱讀

    兆芯最佳實踐應用場景解決方案發布

    《兆芯最佳實踐應用場景解決方案》現已正式發布,掃描下方二維碼或點擊閱讀原文即可獲取下載。
    的頭像 發表于 01-13 14:45 ?526次閱讀

    立訊精密入選2024可持續發展最佳實踐案例

    近日,由中國上市公司協會(以下簡稱中上協)主辦的2024上市公司可持續發展大會在京召開。會上,中上協發布了2024上市公司可持續發展最佳及優秀實踐案例。立訊精密憑借“立志高遠 訊航可持續高質量發展”的卓越實踐,從596篇投稿中脫
    的頭像 發表于 11-28 13:50 ?647次閱讀

    4G模組UDP應用的最佳實踐

    今天說的是4G模組UDP應用,展示最佳實踐,送你參考。
    的頭像 發表于 11-08 09:24 ?1002次閱讀
    4G模組<b class='flag-5'>之</b>UDP應用的<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>!

    MES系統的最佳實踐案例

    效率、降低成本、保證產品質量。 MES系統的最佳實踐案例 引言 在當今競爭激烈的制造業環境中,企業必須不斷尋求創新和改進的方法來保持競爭力。MES系統作為一種關鍵的信息技術工具,已經被廣泛應用于各種制造行業,以實現生產過程的優化和管理。本文將探討MES系統的
    的頭像 發表于 10-27 09:33 ?2816次閱讀

    愛芯元速榮膺最佳技術實踐應用獎

    愛芯元智車載事業部(品牌“愛芯元速”)憑借在車載芯片領域的創新技術研發實力以及在推動量產上車方面的卓越成績收獲本屆“金輯獎”的“2024最佳技術實踐應用獎”。
    的頭像 發表于 10-25 11:39 ?658次閱讀

    邊緣計算架構設計最佳實踐

    邊緣計算架構設計最佳實踐涉及多個方面,以下是一些關鍵要素和最佳實踐建議: 一、核心組件與架構設計 邊緣設備與網關 邊緣設備 :包括各種嵌入式設備、傳感器、智能手機、智能攝像頭等,負責采
    的頭像 發表于 10-24 14:17 ?1006次閱讀

    云計算平臺的最佳實踐

    云計算平臺的最佳實踐涉及多個方面,以確保高效、安全、可擴展和成本優化的云環境。以下是一些關鍵的最佳實踐: 一、云成本優化 詳細分析云使用情況 :通過細致的監控和分析,識別低ROI(投資
    的頭像 發表于 10-24 09:17 ?662次閱讀

    TMCS110x 布局挑戰和最佳實踐

    電子發燒友網站提供《TMCS110x 布局挑戰和最佳實踐.pdf》資料免費下載
    發表于 09-12 09:23 ?0次下載
    TMCS110x 布局挑戰和<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>

    衰減 AMC3301 系列輻射發射 EMI 的最佳實踐

    電子發燒友網站提供《衰減 AMC3301 系列輻射發射 EMI 的最佳實踐.pdf》資料免費下載
    發表于 09-11 09:59 ?0次下載
    衰減 AMC3301 系列輻射發射 EMI 的<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>

    毫米波雷達器件的放置和角度最佳實踐應用

    電子發燒友網站提供《毫米波雷達器件的放置和角度最佳實踐應用.pdf》資料免費下載
    發表于 09-09 09:57 ?2次下載
    毫米波雷達器件的放置和角度<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>應用

    電機驅動器電路板布局的最佳實踐

    電子發燒友網站提供《電機驅動器電路板布局的最佳實踐.pdf》資料免費下載
    發表于 09-05 11:33 ?18次下載
    電機驅動器電路板布局的<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>

    MSP430 FRAM技術–使用方法和最佳實踐

    電子發燒友網站提供《MSP430 FRAM技術–使用方法和最佳實踐.pdf》資料免費下載
    發表于 08-23 09:23 ?0次下載
    MSP430 FRAM技術–使用方法和<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>

    RTOS開發最佳實踐

    基于RTOS編寫應用程序時,有一些要注意事項。在本節中,您將學習RTOS開發最佳實踐,例如POSIX合規性、安全性和功能安全認證。
    的頭像 發表于 08-20 11:24 ?779次閱讀

    偉創力蘇州斬獲客戶施耐德電氣最佳實踐競賽雙金獎

    在日前結束的施耐德電氣首屆PCBA制造最佳實踐競賽中,偉創力蘇州團隊以優異的表現,一舉奪得“工廠金獎”及“最佳生產效率提升單項金獎”。憑借對卓越制造的不懈追求,蘇州團隊目標堅定,雷厲風行,使卓越制造能力再創新高!
    的頭像 發表于 07-24 17:39 ?930次閱讀
    主站蜘蛛池模板: 精品videosex性欧美 | 亚洲精品成人a | 久久成人综合网 | 亚洲综合色站 | 午夜网站视频 | 免费看欧美一级特黄α大片 | 午夜影院免费观看视频 | 国产黄色在线 | 亚洲一区 在线播放 | 天天干天天上 | 性free中国美女hd | 日日噜噜噜夜夜爽爽狠狠 | 国模在线视频一区二区三区 | 中文字幕一区二区三区永久 | 五月婷婷丁香久久 | 国产色婷婷精品综合在线观看 | 日韩欧美亚洲综合一区二区 | 九九午夜 | 午夜视频1000 | 日日爽天天干 | 狠狠狠色丁香婷婷综合激情 | 婷婷的五月 | 日本大片在线看 | 日本黄色免费电影 | 亚欧成人乱码一区二区 | 狠狠色狠狠色综合网 | vvvv98国产成人综合青青 | 欧美一级在线免费观看 | 国产gav成人免费播放视频 | 天天爽夜夜春 | 亚洲合集综合久久性色 | 色噜噜狠狠狠狠色综合久 | 亚洲最大成人综合网 | 亚洲第一色图 | 久久美女视频 | 插菊综合网 | 呦交小u女国产秘密入口 | 婷婷免费视频 | 青草久| 国产夜夜爽 | 狠狠色成色综合网 |