消息隊列產(chǎn)生嚴重消息堆積怎么處理坞笙?

1. 為什么產(chǎn)生消息堆積?

大多是因為 Consumer 出問題了荚虚,沒有及時發(fā)現(xiàn)薛夜,或者故障恢復(fù)需要較長的時間,導(dǎo)致大量消息積壓在 MQ 中版述。

2. 消息堆積會有什么后果呢梯澜?

2.1 消息被丟棄

例如 RabbitMQ 有一個消息過期時間 TTL,過期的消息會被扔掉渴析,這樣消息就徹底沒有了晚伙。

2.2 磁盤滿了

如果堆積量太大吮龄,可能導(dǎo)致磁盤空間不足,那么新消息就進不來了咆疗。

2.3 海量消息待處理

如果消息沒過期漓帚,并且磁盤空間也夠用,那么就是產(chǎn)生海量消息等待被消費午磁,Consumer 的噩夢尝抖。

3. 如何應(yīng)對呢?

3.1 消息被丟棄的情況

首先迅皇,要實現(xiàn)防止消息過期問題昧辽,不應(yīng)該設(shè)置過期時間。

如果就是設(shè)置了過期時間登颓,導(dǎo)致了消息丟失搅荞,怎么補救呢?

那就只能在夜深人靜挺据,趁著訪問量最低的時候取具,寫一個臨時程序來補消息了。

例如有訂單消息丟了扁耐,那就需要找出哪些訂單消息丟了暇检,然后重新發(fā)到隊列。

3.2 磁盤不足的情況

系統(tǒng)通常都是有監(jiān)控的婉称,達到空間閾值時就會發(fā)警報块仆,這時就要馬上處理了。

image

例如王暗,在其他機器上創(chuàng)建臨時的消息隊列悔据,再寫一個臨時的 Consumer,作為消息的中轉(zhuǎn)俗壹,把消息積壓隊列中的消息取出來科汗,放到臨時隊列里面去。

快速疏散積壓的消息绷雏,讓磁盤空間恢復(fù)正常水平头滔。

3.3 快速處理海量積壓消息

Consumer 恢復(fù)正常之后,面對堆積如山的消息涎显,怎么處理呢坤检?

如何按照之前正常情況處理的話,猴年馬月才能消費完期吓,此過程中還有新消息在不斷進來早歇。

例如,積壓了 100 萬條,有 3 個 Consumer箭跳,每一個每秒能處理 200 條晨另,3 個 Consumer 每秒一共能處理 600 條。

大概需要一個多小時才能處理完谱姓。

這一個多小時又會積壓多少新的消息呢拯刁?

所以正常處理肯定不行,需要提速逝段。

例如 Kafka,這個消息積壓的 Topic 有 3 個 Partition割捅,那最多就能用 3 個 Consumer奶躯,所以增加 Consumer 沒有用。

還是可以使用臨時隊列的方式亿驾。

image

新建一個 Topic嘹黔,設(shè)置為 20 個 Partition

Consumer 不再處理業(yè)務(wù)邏輯了,只負責(zé)搬運莫瞬,把消息放到臨時 Topic 中

這 20 個 Partition 可以有 20個 Consumer 了儡蔓,它們來處理原來的業(yè)務(wù)邏輯。

這 20 個 Consumer 每秒一共能處理 4000 條了疼邀,這樣幾分鐘就可以處理完積壓的 100 萬條喂江。

這幾分鐘新來的消息也不會太多,所以很快就可以恢復(fù)正常水平旁振,之后获询,再把整體結(jié)構(gòu)恢復(fù)為原來的形式。

小結(jié)一下拐袜,消息積壓還是比較麻煩的吉嚣,最好是提前防范,做好硬件和消息系統(tǒng)的健康監(jiān)控蹬铺。如果出現(xiàn)消息丟失尝哆,就要人工查找丟失的消息,然后補上甜攀。在消費不過來的時候秋泄,可以考慮使用臨時隊列作為中轉(zhuǎn),提升處理能力赴邻。

推薦閱讀

OAuth2 圖解

輕松理解 Kubernetes 的核心概念

開發(fā)者必須要了解的架構(gòu)技術(shù)趨勢:Service Mesh

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末印衔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子姥敛,更是在濱河造成了極大的恐慌奸焙,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異与帆,居然都是意外死亡了赌,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門玄糟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來勿她,“玉大人,你說我怎么就攤上這事阵翎》瓴ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵郭卫,是天一觀的道長砍聊。 經(jīng)常有香客問我,道長贰军,這世上最難降的妖魔是什么玻蝌? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮词疼,結(jié)果婚禮上俯树,老公的妹妹穿的比我還像新娘。我一直安慰自己贰盗,他們只是感情好许饿,可當(dāng)我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著舵盈,像睡著了一般米辐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上书释,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天翘贮,我揣著相機與錄音,去河邊找鬼爆惧。 笑死狸页,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的扯再。 我是一名探鬼主播芍耘,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼熄阻!你這毒婦竟也來了斋竞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤秃殉,失蹤者是張志新(化名)和其女友劉穎坝初,沒想到半個月后浸剩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡鳄袍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年绢要,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拗小。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡重罪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出哀九,到底是詐尸還是另有隱情剿配,我是刑警寧澤,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布阅束,位于F島的核電站惨篱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏围俘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一琢融、第九天 我趴在偏房一處隱蔽的房頂上張望界牡。 院中可真熱鬧,春花似錦漾抬、人聲如沸宿亡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挽荠。三九已至,卻和暖如春平绩,著一層夾襖步出監(jiān)牢的瞬間圈匆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工捏雌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留跃赚,地道東北人。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓性湿,卻偏偏與公主長得像纬傲,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子肤频,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內(nèi)容