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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RocketMQ最佳實(shí)踐之坑

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

前不久踩了個坑,而這個坑跟 RocketMQ 推薦的一個最佳實(shí)踐有關(guān)。

看下我從官網(wǎng)的截圖,官方推薦一個應(yīng)用盡可能只用一個 topic,然后用 tags 來標(biāo)識子類型。

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

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

這樣的實(shí)現(xiàn)方式從業(yè)務(wù)上來看關(guān)系更清晰(有點(diǎn)樹狀的感覺),但是在實(shí)踐上有點(diǎn)問題。

問題和起因

一般而言,生產(chǎn)上同一個服務(wù)至少會部署兩臺機(jī)器,不僅僅是為了負(fù)載均衡,也是為了系統(tǒng)的可靠性,當(dāng)一臺機(jī)器意外掛了,另一臺可以扛起大旗。

我們在發(fā)服務(wù)的時候,都是分批發(fā)布。

這是為了驗(yàn)證新功能的正確性,不讓其一次性影響所有實(shí)例,我們會先發(fā)布一批,然后觀察下日志,確保無誤后繼續(xù)發(fā)布后續(xù)幾臺機(jī)器。

而這個操作再結(jié)合 RocketMQ 一個 Topic 多 tag 就會出現(xiàn)訂閱消息不一致的情況,導(dǎo)致丟消息。

原理分析

我們借用官網(wǎng)的圖來分析一下。

一般我們都用集群模式,以下描述默認(rèn)使用集群模式

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

生產(chǎn)者往一個 Topic 發(fā)送消息,消費(fèi)者訂閱了這個 Topic 就能消費(fèi)到這個消息。

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

而實(shí)際上在 RocketMQ 中有隊(duì)列的概念:

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

也就是生產(chǎn)者往一個 Topic 發(fā)送消息時,消息會被分到不同的隊(duì)列中。

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

而消費(fèi)組 ConsumerGroupA 中的 Consumer1 僅消費(fèi) MessageQueue0 和 MessageQueue1 這兩個隊(duì)列中的消息,而 Consumer2 僅消費(fèi) MessageQueue2。

這樣劃分后,Consumer1 是無法消費(fèi)到 MessageQueue2 中的消息的。

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

在默認(rèn)情況下生產(chǎn)者發(fā)送消息是以輪詢隊(duì)列的方式發(fā)送的。

比如現(xiàn)在 Producer A 要發(fā)送 TopicA-tag1、TopicA-tag2、TopicA-tag3 這三條數(shù)據(jù),輪詢發(fā)送后,MessageQueue 0、1、2 分別存儲了這 3 條消息。

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

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

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

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

所以,在實(shí)踐中,我們要求同一個消費(fèi)組的消費(fèi)者的訂閱關(guān)系要保持一致。

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

再回到問題

現(xiàn)在我們已經(jīng)知道訂閱關(guān)系一致的重要性,但是有時候不得已就會“明知故犯”。

假設(shè)我們訂單服務(wù)線上一共部署了 5 臺,這 5 臺機(jī)器屬于同一個消費(fèi)組,因此它們負(fù)載均衡消費(fèi)有關(guān)訂單的消息,如 Topic-Order。

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

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

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

這段時間內(nèi)就出現(xiàn)了上述所說的丟消息的情況,如果有 Topic-Order tagD 的消息產(chǎn)生,那么就有可能會丟了。

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

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

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




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 機(jī)器人
    +關(guān)注

    關(guān)注

    211

    文章

    28455

    瀏覽量

    207265
  • 過濾器
    +關(guān)注

    關(guān)注

    1

    文章

    430

    瀏覽量

    19621

原文標(biāo)題:RocketMQ 最佳實(shí)踐之坑

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

收藏 人收藏

    評論

    相關(guān)推薦

    立訊精密入選2024可持續(xù)發(fā)展最佳實(shí)踐案例

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

    4G模組UDP應(yīng)用的最佳實(shí)踐!

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

    MES系統(tǒng)的最佳實(shí)踐案例

    效率、降低成本、保證產(chǎn)品質(zhì)量。 MES系統(tǒng)的最佳實(shí)踐案例 引言 在當(dāng)今競爭激烈的制造業(yè)環(huán)境中,企業(yè)必須不斷尋求創(chuàng)新和改進(jìn)的方法來保持競爭力。MES系統(tǒng)作為一種關(guān)鍵的信息技術(shù)工具,已經(jīng)被廣泛應(yīng)用于各種制造行業(yè),以實(shí)現(xiàn)生產(chǎn)過程的優(yōu)化和管理。本文將探討MES系統(tǒng)的
    的頭像 發(fā)表于 10-27 09:33 ?986次閱讀

    愛芯元速榮膺最佳技術(shù)實(shí)踐應(yīng)用獎

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

    邊緣計算架構(gòu)設(shè)計最佳實(shí)踐

    邊緣計算架構(gòu)設(shè)計最佳實(shí)踐涉及多個方面,以下是一些關(guān)鍵要素和最佳實(shí)踐建議: 一、核心組件與架構(gòu)設(shè)計 邊緣設(shè)備與網(wǎng)關(guān) 邊緣設(shè)備 :包括各種嵌入式設(shè)備、傳感器、智能手機(jī)、智能攝像頭等,負(fù)責(zé)采
    的頭像 發(fā)表于 10-24 14:17 ?451次閱讀

    云計算平臺的最佳實(shí)踐

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

    TMCS110x 布局挑戰(zhàn)和最佳實(shí)踐

    電子發(fā)燒友網(wǎng)站提供《TMCS110x 布局挑戰(zhàn)和最佳實(shí)踐.pdf》資料免費(fèi)下載
    發(fā)表于 09-12 09:23 ?0次下載
    TMCS110x 布局挑戰(zhàn)和<b class='flag-5'>最佳</b><b class='flag-5'>實(shí)踐</b>

    衰減 AMC3301 系列輻射發(fā)射 EMI 的最佳實(shí)踐

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

    毫米波雷達(dá)器件的放置和角度最佳實(shí)踐應(yīng)用

    電子發(fā)燒友網(wǎng)站提供《毫米波雷達(dá)器件的放置和角度最佳實(shí)踐應(yīng)用.pdf》資料免費(fèi)下載
    發(fā)表于 09-09 09:57 ?2次下載
    毫米波雷達(dá)器件的放置和角度<b class='flag-5'>最佳</b><b class='flag-5'>實(shí)踐</b>應(yīng)用

    電機(jī)驅(qū)動器電路板布局的最佳實(shí)踐

    電子發(fā)燒友網(wǎng)站提供《電機(jī)驅(qū)動器電路板布局的最佳實(shí)踐.pdf》資料免費(fèi)下載
    發(fā)表于 09-05 11:33 ?17次下載
    電機(jī)驅(qū)動器電路板布局的<b class='flag-5'>最佳</b><b class='flag-5'>實(shí)踐</b>

    MSP430 FRAM技術(shù)–使用方法和最佳實(shí)踐

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

    RTOS開發(fā)最佳實(shí)踐

    基于RTOS編寫應(yīng)用程序時,有一些要注意事項(xiàng)。在本節(jié)中,您將學(xué)習(xí)RTOS開發(fā)最佳實(shí)踐,例如POSIX合規(guī)性、安全性和功能安全認(rèn)證。
    的頭像 發(fā)表于 08-20 11:24 ?466次閱讀

    熱烈恭賀|開盛暉騰入圍APEC?ESCI最佳實(shí)踐獎候選

    喜訊!固德威智慧能源合作伙伴開盛暉騰成功入圍APEC能源智慧社區(qū)倡議最佳實(shí)踐獎候選名單。在智能電網(wǎng)類中,全國僅4個項(xiàng)目入圍! 04:3 APEC ESCI是于2010年由亞太經(jīng)濟(jì)合作組織
    的頭像 發(fā)表于 04-29 17:31 ?417次閱讀
    熱烈恭賀|開盛暉騰入圍APEC?ESCI<b class='flag-5'>最佳</b><b class='flag-5'>實(shí)踐</b>獎候選

    廣東移動攜手華為斬獲“2023年度SDN、NFV、網(wǎng)絡(luò)AI最佳實(shí)踐案例”

    4月10日,在北京舉辦的2024年云網(wǎng)智聯(lián)大會上,廣東移動攜手華為共同申報的《基于通信大模型的IP網(wǎng)絡(luò)運(yùn)維“數(shù)字專家”創(chuàng)新實(shí)踐》項(xiàng)目,斬獲SNAI“2023年度SDN、NFV、網(wǎng)絡(luò)AI最佳實(shí)踐案例”。
    的頭像 發(fā)表于 04-11 09:03 ?660次閱讀
    廣東移動攜手華為斬獲“2023年度SDN、NFV、網(wǎng)絡(luò)AI<b class='flag-5'>最佳</b><b class='flag-5'>實(shí)踐</b>案例”

    深度解析RocketMQ的消息存儲整體架構(gòu)

    在Client和Server之間完成一次消息發(fā)送時,需要對發(fā)送的消息進(jìn)行一個協(xié)議約定,因此就有必要自定義RocketMQ的消息協(xié)議。同時,為了高效地在網(wǎng)絡(luò)中傳輸消息和對收到的消息讀取,就需要對消息進(jìn)行編解碼。
    的頭像 發(fā)表于 02-01 11:36 ?2255次閱讀
    深度解析<b class='flag-5'>RocketMQ</b>的消息存儲整體架構(gòu)
    主站蜘蛛池模板: 天天久久综合| 高清性色生活片久久久| 男人j进女人j免费视频视频| 美女午夜| ww欧洲ww欧洲视频| 免费在线成人| 色欧美亚洲| 大桥未久加勒比女热大陆在线| 2021韩国理论片ok电影天堂| 毛片aa| 日本精高清区一| 亚洲欧美日韩动漫| 免费日本视频| 宅男在线看片| 国产精品久久久久久久久久妇女| 国产黄色网页| 欧美极品| 91福利网站| 寡妇影院首页亚洲图片| 手机在线观看免费视频| 国产www在线播放| 免费视频在线看| 人人做人人爽人人爱秋霞影视| 国产黄色在线视频| wwwwwww色| 中文字幕卡二和卡三的视频| 日本免费在线| 亚洲 [12p]| 亚洲一区二区三区四区五区六区| 美女啪啪91| 俄罗斯久久| 四虎影视地址| 三级天堂| 日本三级日本三级日本三级极| 久久婷婷久久一区二区三区| 美女黄页在线观看| 18女毛片| 国产福利影视| 久久国产热视频| 黄网站在线观看视频| 一级女性黄 色生活片|