我們目前每個主題都使用一個生產者。由於顯而易見的原因,我們正在考慮轉換爲一個製作人員來處理多個主題KafkaProducer(0.9):單一生產者多個主題。潛在問題?
現在,有沒有這樣的情況,一個主題可能由於某種原因而較慢,而不是其他?如果有這樣的情況,它將如何與一個單一的生產者生產多個主題?會影響其他主題的吞吐量嗎?
是否有任何其他情況下,使用單個生產者的多個主題可能不是一個好主意?
謝謝!
更新: 這裏是我們到目前爲止已經試過:
我們簡要地看了看代碼,並在這裏就是我們明白: 卡夫卡服務器接受一個批次每個主題分區的消息。 Map [TopicAndPartition,MessageSet]
它試圖在配置的超時內處理整個批處理,併發回包含成功和失敗記錄的響應。
現在讓我們來看看有什麼可以去錯了一個話題水平,以及如何將影響整批:
1)不適用於一個主題的所有副本: 比方說,一個批處理中包含的數據爲三個主題:test1,test2,test3。 對於test3,並非所有副本都可用。這種情況會立即被領導發現,並且會使記錄失敗。在這種情況下,該批次不會被延遲,並且test1和test2的吞吐量不會受到影響。
2)主題的副本很慢。 假設只有test3的副本很慢。在這種情況下,複製test3消息需要時間,這反過來會延遲整個批處理,從而影響主題test1和test2的吞吐量。
還有什麼可以出錯?
謝謝!
感謝您的答覆@Treziac。您能否對此評論一下:「是否有一個主題可能因某種原因而較慢,而不是其他主題」。這會影響其他主題的吞吐量嗎? – Ninad
我不確定你的意思。 (編輯後早期) 你的意思是,當你有 'producer1 - > topic1' 'producer2 - > topic2' ... ,並傳遞給 '生產者 - > TOPIC1,標題2,topic3'? 那麼話題的所有吞吐量至少是相同的? 如果所有的生產者都在同一個過程中,除了我之前提到的情況(如果您達到配額),應該沒有較慢的吞吐量。 – Treziac
另外,如果您改進批處理以提高吞吐量,則可能會增加延遲(吞吐量更高但延遲更高)。如果它至關重要,你會收到你的數據在5毫秒,而不是100毫秒,你將不得不犧牲批量(但你沒有提到延遲,所以我認爲沒關係) 請注意,生產者是線程安全的生產。用它來最好。 在你的情況,只需更換舊的多個實例應該沒問題 – Treziac