簡體   English   中英

Kafka Producer(具有多個實例)寫入同一主題

[英]Kafka Producer (with multiple instance) writing to same topic

我有一個用例,其中消息來自某個渠道,我們希望將其推送到一個Kafka主題(多個分區)中。 在我們的情況下,消息順序很重要,因此我們必須按接收消息的順序將消息推送到主題,如果我們只有一個producer和單個分區,這看起來非常簡單。 在我們的案例中,為了實現負載平衡和可伸縮性,我們希望為同一producer運行多個實例,但是問題是如何維護消息的順序

任何想法或解決方案將大有幫助。

即使我認為只有一個分區,也可以將其復制到多個代理以提高可用性和容錯能力嗎?

我們必須按收到消息的順序將消息推送到主題,如果我們只有一個生產者和單個分區,這看起來非常簡單

您可以在一個生產者的主題中具有多個分區,並且如果您為消息提供密鑰,則仍然可以保持順序。 由單個生產者產生的具有相同密鑰的所有消息總是井井有條。


當您說多個生產者時 ,我假設您正在運行應用程序的多個實例,並且沒有在同一個JVM實例中創建多個生產者。

既然您說過channel ,我想它是一個網絡通道,例如Datagram通道。 在這種情況下,我想您正在某個端口上偵聽並將接收到的數據發送到Kafka。

我看不到在同一實例中有多個生產者針對同一個主題進行生產的意義,因此最好由一個生產者發送所有消息,並且為了提高性能,您可以調整生產者屬性,例如batch.sizelinger.ms等等

為了實現容錯能力,請讓另一個實例在HA模式(故障轉移模式)下運行,以便該實例死亡后,另一個實例將自動啟動。

如果是網絡通道,則可以運行多個實例,並在StandardSocketOptions中使用選項SO_REUSEADDR打開套接字,這樣,在任何時候您只有一個生產者將處於活動狀態,並且一旦活動的生產者死亡,新的生產者將變為活動狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM