訊息積壓 訊息丟失解決方案

2021-09-20 20:41:55 字數 704 閱讀 8391

問題本質都在於你的消費端可能出了問題,不消費或消費的太慢!更可怕的是由於積壓時間太長,導致如果起初還設定了ttl後失效了怎麼辦?

其實資料積壓的問題是架構設計不合理。

丟失的資料是通過日誌找回來,如果日誌也找不到了 那就沒招了

一般這時,只能操作臨時緊急擴容了,具體操作步驟和思路如下:

先修復consumer,確保恢復消費速度,然後將現有cnosumer都停掉

新建乙個topic,partition是原來10倍,臨時建立好原先10倍或者20倍的queue

然後寫乙個臨時的分發資料的consumer程式,這個程式部署上去消費積壓的資料,消費之後不做耗時的處理,直接均勻輪詢寫入臨時建立好的10倍數量的queue

接著臨時徵用10倍的機器來部署consumer,每一批consumer消費乙個臨時queue的資料

這種做法相當於是臨時將queue資源和consumer資源擴大10倍,以正常的10倍速度來消費資料

等快速消費完積壓資料之後,得恢復原先部署架構,重新用原先的consumer機器來消費訊息

假設用rabbitmq,可設定ttl,積壓超時後訊息就沒了,資料也就丟了。注意此時,並非資料大量積壓在mq,而是大量資料直接搞丟了。

可以採取批量重導,就是大量積壓時,就直接丟棄資料,然後等高峰期後,比如半夜,將丟失的那批資料,寫個程式查出來,然後重新灌入mq,把白天丟的資料補回來。

RocketMQ訊息丟失解決方案 事務訊息

上篇文章,王子通過乙個小案例和小夥伴們一起分析了一下訊息是如何丟失的,但沒有提出具體的解決方案。我們已經知道發生訊息丟失的原因大體上分為三個部分 1.生產者傳送訊息到mq這一過程導致訊息丟失 2.mq自己發生故障導致訊息丟失 3.消費者拿到訊息後,由於操作不當導致訊息丟失 接下來我們就針對第一種情況...

訊息佇列如何解決訊息積壓問題

訊息佇列訊息積壓了怎麼辦?q 剛開始是對這個疑問抱有質疑態度的,因為使用訊息佇列的其中目的就是削峰填谷,來避免高流量時,對下游服務的衝擊,所以使用訊息佇列進行緩衝,下游根據自己的消費能力去消費,我感覺這就是訊息積壓本就是使用訊息佇列的功能,怎麼會是問題呢?a 首先訊息積壓是正常現象,但凡是過多就不正...

Android訊息推送解決方案

怎麼定位gps座標佔時不考慮,我們來分析下服務端打折優惠資訊是怎麼推送給手機客戶端的。一 訊息推送基礎 如何使客戶端能夠實時的收到伺服器的訊息和通知,總體來說有兩種方式,第一種是客戶端使用pull 拉 的方式,就是隔一段時間就去伺服器上獲取一下資訊,看是否有更新的資訊出現。第二種就是 伺服器使用pu...