天天看點

【Azure 事件中心】使用Kafka消費Azure EventHub中資料,遇見消費慢的情況可以如何來調節呢?

問題描述

使用Kafka消費Azure EventHub中資料,遇見消費慢的情況可以如何來調節呢?

問題解答

檢視Kafka Consumer的配置參數,其中最隻要的一個參數為:max.poll.records, 表示Consumer每次調用poll()時取到的records的最大數。一般情況,在增加max.poll.records後,能讓消費速度起到明顯的提升。

Consumer讀取partition中的資料是通過調用發起一個fetch請求來執行的。而從KafkaConsumer來看,它有一個poll方法。但是這個poll方法隻是可能會發起fetch請求。原因是:Consumer每次發起fetch請求時,讀取到的資料是有限制的,通過配置項max.partition.fetch.bytes來限制的。而在執行poll方法時,會根據配置項個max.poll.records來限制一次最多pool多少個record。

那麼就可能出現這樣的情況: 在滿足max.partition.fetch.bytes限制的情況下,假如fetch到了100個record,放到本地緩存後,由于max.poll.records限制每次隻能poll出15個record。那麼KafkaConsumer就需要執行7次才能将這一次通過網絡發起的fetch請求所fetch到的這100個record消費完畢。其中前6次是每次pool中15個record,最後一次是poll出10個record。

更多Kafka Consumer Configuration見:https://www.cnblogs.com/rainwang/p/7493742.html

參考資料

kafka消費指定每次最大消費消息數量 max.poll.records: https://blog.csdn.net/yangshengwei230612/article/details/106636827

kafka consumer 配置詳解:https://www.cnblogs.com/rainwang/p/7493742.html

當在複雜的環境中面臨問題,格物之道需:濁而靜之徐清,安以動之徐生。 雲中,恰是如此!

繼續閱讀