1. 常見面試題,消息堆積了怎么辦?

        共 1407字,需瀏覽 3分鐘

         ·

        2022-07-09 19:32


        點擊上方藍字“設(shè)為星標”



        大家好,我是【架構(gòu)擺渡人】,一只十年的程序猿。這是消息隊列的第八篇文章,這個系列會給大家分享很多在實際工作中有用的經(jīng)驗,如果有收獲,還請分享給更多的朋友。
         
        這個問題在面試中出現(xiàn)的概率極高,這也是面試官考察你是否在工作中有過實際解決問題的能力。當(dāng)然也不一定每個人都能遇到這個問題,即使遇不到,我們也要對這些問題的解決方式了然于胸。
         
        如果你被問到這個問題,可以從兩個方面來回答。一個是前置的預(yù)防,另一個是發(fā)生后的處理過程。
         


        前置預(yù)防




        前置預(yù)防,我們需要有強大的監(jiān)控體系。當(dāng)某個Topic中消息堆積的量到達一定程度,那么此時要能夠及時告警,早點介入進去。
         
        另一個就是平時要監(jiān)控消費的速度和耗時,如果消費耗時突然變高了,也要及時關(guān)注,有可能是因為迭代的過程中不斷的加邏輯,沒有進行優(yōu)化,導(dǎo)致處理時間越來越長。處理時間變長,那么也就意味著消費的吞吐量會下降。
         
        其次,還需要監(jiān)控消息的發(fā)送方速度,平時發(fā)送的TPS也就1000左右,能夠被正常消費,幾乎沒有消息堆積。但是有天突然消息的發(fā)送TPS慢慢的增長了5000,此時必然消費不過來,隨著時間的推移,消息必然出現(xiàn)堆積情況。

        過程處理





        消息可丟棄

        對于消息可以丟棄的處理方式非常簡單,一般有2種方式。
         
        第一種:消費的代碼中增加一個開關(guān),當(dāng)開關(guān)開啟的時候不進行業(yè)務(wù)邏輯的處理,這樣相當(dāng)于消費的RT是0ms,堆積的消息很快就會被消費完的。然后再把開關(guān)關(guān)掉,開始正常的消費邏輯。
         
        第二種:利用MQ自帶的功能,重置消費點的位置。一般都是可以基于時間來進行重置,你可以直接重置到當(dāng)前的這一分鐘,也就是當(dāng)前時間之前的消息都會被跳過,這樣也能快速恢復(fù)正常的消費。

         

        消息不能丟

        對于消息不能丟的場景,只能從消費速度去提升了,這樣才能盡快將堆積的消息消費掉。
         
        第一種:增加消費線程數(shù)量,讓消費盡可能并發(fā)處理,但是一定得考慮消費邏輯的問題,如果消費邏輯里面是對數(shù)據(jù)庫進行操作,那么得看數(shù)據(jù)庫的性能是否能夠扛住這些并發(fā),否則數(shù)據(jù)也需要臨時進行擴容。
         
        第二種:如果每個消費的線程數(shù)已經(jīng)很大了,這個時候需要對消費者的節(jié)點進行擴容了。說白了就是之前10個人在搬磚,現(xiàn)在多加10個人,速度自然就上來了。
         
        但是搬磚也是有規(guī)矩的,就是整個工地會劃分為多個塊,每個人負責(zé)搬一個塊,如果只有15個塊,即使有20個人也沒辦法加速,所以要把塊分多一點,讓每個人都能搬一個塊這樣效率才會高。
         
        同理,在MQ中一個Topic的消息會存儲在多個Queue中,一個Queue只會被一個消費者消費,所以如果增加消費者之后速度還是上不來,就需要新建一個Queue數(shù)量多的Topic來接收之前堆積的消息,這樣加大消費者數(shù)量才能提高消費速度。

         

        總結(jié)




        導(dǎo)致消息堆積的原因有很多,我們需要沉著冷靜的去分析為是什么原因?qū)е铝讼⒍逊e。是消費速度慢導(dǎo)致的,還是消費速度挺快,但是生產(chǎn)速度太快了,實在是更不上導(dǎo)致的,還是說MQ的重平衡邏輯有bug導(dǎo)致某些Queue沒有被消息產(chǎn)生的堆積。我們只有了解了背后的原因才能選擇合適的解決方案。
         

         

        原創(chuàng):架構(gòu)擺渡人(公眾號ID:jiagoubaiduren),歡迎分享,轉(zhuǎn)載請保留出處。

         


        瀏覽 31
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. 国产久久久久久 | 变态男把女内裤扒开让男人看 | 久久久久自慰系列免费看网站 | 婷婷丁香五月综合 | 欧美日日摸夜夜添夜夜添 |