RocketMQ消費能力慢的優化方案

RocketMQ是解決數據同步的一箇中間件,那麼生產者與消費者之間的速度不一致對系統造成的壓力是可想而知的,如果生產者發送消息的速度遠遠大於消費者消費的速度消息會不及時,而且還會造成數據堆積,可能還會引發各種各樣的問題。

RocketMQ消費速度提不上去的幾種常見的處理方式如下:

1. 提高消費並行讀
a)同一個ConsumerGroup下,通過增加Consumer實例的數量來提高並行度,超過訂閱隊列數的Consumer實例無效。可以通過添加機器或者在已有的機器啓動多個進程的方式提高並行度
b)提高單個Consumer的消費並行線程,通過修改Consumer的consumerThreadMin和consumerThreadMax來設置線程數
2. 批量方式消費
某些業務流程如果支持批量的方式消費,則可以很大程度上提高消費吞吐量,例如訂單扣款類應用,一次處理一個訂單耗時1秒,一次處理是個訂單可能也只耗時2秒,這樣就可大幅度提高消費的吞吐量,通過設置Consumer的consumerMessageBathMaxSize這個參數,默認是1,一次只消費一條消息,例如設置N,那麼每次消費的消息條數小於等於N
3. 跳過非重要消息
一般不會這樣,除非消息對完整性要求不高,當消息發生堆積時,如果消費速度跟不上消費速度,可以選擇丟棄一些不重要的消息,一般跟不上是在高峯期,如果一直跟不上,那就是這個系統的問題了。
4. 優化消息消費的過程
對於消費消息的過程一般包括業務處理以及跟數據庫的交互,可以試着通過一些其他的方法優化消費的邏輯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章