我正在使用卡夫卡風暴來連接卡夫卡和風暴。我有3臺運行zookeeper,kafka和storm的服務器。在kafka中有一個有9個分區的「測試」主題。由ack造成的風暴等待時間
在風暴拓撲中,KafkaSpout執行器的數量是9,默認情況下,任務數量也應該是9。 '提取'螺栓是唯一連接到KafkaSpout(「原木」噴口)的螺栓。
從用戶界面來看,噴嘴出現了很大的故障率。但是,他在bolt中執行的消息數=發出的消息數 - 螺栓中失敗的消息數。當失敗的消息在開始時爲空時,該等式幾乎匹配。
根據我的理解,這意味着該螺栓確實從噴口接收到消息,但確認信號在飛行中暫停。這就是爲什麼噴口數量如此之少的原因。
可以通過增加超時秒數和噴出待處理消息號來解決此問題。但是這會導致更多的內存使用,我無法將其增加到無限。
我在徘徊,如果有強迫風暴的方法,忽略某些噴口/螺栓的響應,以便它不會等到這個信號出現。這應該會顯着增加消息處理,但不能保證消息處理。
謝謝您的建議。我通過將'topology.max.spout.pending'限制爲2000來解決這個問題。 –