簡體   English   中英

Apache Kafka-僅在特定分區中使用的使用者之間的負載平衡

[英]Apache Kafka - Load-Balancing between Consumers consuming only from a specific partition

我了解在Apache Kafka中,我可以編寫Producer和Partitioner的方式是TypeA的消息進入PartitionA,TypeB的消息進入PartitionB。 而且,我還可以編寫一個Consumer / ConsumerGroup,使Consumer / ConsumerGroupA僅從PartitionA消費,而Consumer / ConsumerGroupB僅從PartitionB消費(使用assign())。

但是,我真正想了解的是,這是一種很好的做法。 因為據我所知,這將嚴重限制我的負載平衡能力並同時增加復雜性。 原因是,如果我的TypeA消息增加了,並且我想創建另一個分區來處理負載(例如PartitionA2),並且我創建了更多的Consumer,請將新的和舊的Consumer都添加到ConsumerGroup中,並確保它們共同處理來自新分區和舊分區都可以嗎?

使用assign不會限制您的負載平衡功能,而只是將新使用者使用或關閉時重新分配分區的所有問題交到您手中。 訂閱方式是免費的。 關於您的特定問題,請確保在添加PartitionA2時可以添加另一個使用分配給該分區的使用者。

您可以使用訂閱API將更多使用者實例添加到使用者組。 使用Assign API,您必須自己進行重新平衡。 同樣,如果您的應用程序依賴於分區策略(根據事件順序),則可能不想更改分區。 例如,假設您有一個分區用於用戶登錄/注銷操作。 現在,如果將分區更改為具有2個分區(一個用於登錄和注銷),則您的應用程序可以在該特定用戶的登錄事件之前看到注銷事件。 當然,您需要查看什么是typeA,以及是否可以將typeA事件發送到2個不同的分區。

感謝ppatierno&mrnakumar的幫助,盡管我的TypeA事件都將是獨立的,並且不需要時間排序,但是我必須處理自己的平衡這一事實無疑是令人沮喪的。

暫無
暫無

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

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