淺談如何解決RocketMQ訊息堆積的問題
MQ訊息堆積是指生產者傳送的訊息短時間內在Broker端大量堆積,無法被消費者及時消費,從而導致業務功能無法正常使用。
訊息堆積常見於以下幾種情況:
(1)新上線的消費者功能有BUG,訊息無法被消費。
(2)消費者例項宕機或因網路問題暫時無法同Broker建立連線。
(3)生產者短時間內推送大量訊息至Broker,消費者消費能力不足。
(4)生產者未感知Broker消費堆積持續向Broker推送訊息。
解決上述問題就要做到:
(1)解決問題一,要做好 灰度釋出。每次新功能上線前,選取一定比例的消費例項做灰度,若出現問題,及時回滾;若消費者消費正常,平穩執行一段時間後,再升級其它例項。如果需要按規則選出一部分賬號做灰度,則需要做好訊息過濾,讓正常消費例項排除灰度訊息,讓灰度消費例項過濾出灰度訊息。
(2)解決問題二,要做到 多活。極端情況下,當一個IDC內消費例項全部宕機時,需要做到讓其他IDC內的消費例項正常消費訊息。同時,若一個IDC內Broker全部宕機,需要支援生產者將訊息傳送至其它IDC的Broker。
(3)解決問題三,要 增強消費能力。增強消費能力,主要是增加消費者執行緒數或增加消費者例項個數。增加消費者執行緒數要注意消費者及其下游服務的消費能力,上線前就要將執行緒池引數調至最優狀態。增加消費者例項個數,要注意Queue數量,消費例項的數量要與Queue數量相同,如果消費例項數量超過Queue數量,多出的消費例項分不到Queue,只增加消費例項是沒用的,如果消費例項數量比Queue數量少,每個消費例項承載的流量是不同的。
(4)解決問題四,要做到 熔斷與隔離。當一個Broker的隊列出現訊息積壓時,要對其熔斷,將其隔離,將新訊息傳送至其它佇列,過一定的時間,再解除其隔離。
轉載:https://blog.csdn.net/weixin_43506048/article/details/121051405
開源專案:https://github.com/webankfintech/DeFiBus
TRANSLATE with x English TRANSLATE with EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back 此頁面的語言為中文(簡體) 翻譯為
- 中文(簡體)
- 中文(繁體)
- 丹麥語
- 烏克蘭語
- 烏爾都語
- 亞美尼亞語
- 俄語
- 保加利亞語
- 克羅埃西亞語
- 冰島語
- 加泰羅尼亞語
- 匈牙利語
- 卡納達語
- 印地語
- 印尼語
- 古吉拉特語
- 哈薩克語
- 土耳其語
- 威爾士語
- 孟加拉語
- 尼泊爾語
- 布林語(南非荷蘭語)
- 希伯來語
- 希臘語
- 庫爾德語
- 德語
- 義大利語
- 拉脫維亞語
- 挪威語
- 捷克語
- 斯洛伐克語
- 斯洛維尼亞語
- 旁遮普語
- 日語
- 普什圖語
- 毛利語
- 法語
- 波蘭語
- 波斯語
- 泰盧固語
- 泰米爾語
- 泰語
- 海地克里奧爾語
- 愛沙尼亞語
- 瑞典語
- 立陶宛語
- 緬甸語
- 羅馬尼亞語
- 寮國語
- 芬蘭語
- 英語
- 荷蘭語
- 薩摩亞語
- 葡萄牙語
- 西班牙語
- 越南語
- 亞塞拜然語
- 阿姆哈拉語
- 阿爾巴尼亞語
- 阿拉伯語
- 韓語
- 馬爾加什語
- 馬拉地語
- 馬拉雅拉姆語
- 馬來語
- 馬耳他語
- 高棉語