Sorry, but all of this I know and it doesn't answer the question. The question I have is assume that I have 3 consumers (think KafkaConsumer java class):
Consumer 1 assigned to partitions {0, 1} Consumer 2 assigned to partitions {2, 3} Consumer 3 assigned to partitions {4, 5} Now assume consumer 1 dies or leaves the consumer group whatever. Partitions are then rebalanced and you could only move 0, 1 to the existing consumers: Consumer 2 assigned to partitions {0, 2, 3} Consumer 3 assigned to partitions {1, 4, 5} However, you could also just shuffle the set {0, 1, 2, 3, 4, 5} and randomly assign them e.g. : Consumer 2 assigned to partitions {1, 2, 5} Consumer 3 assigned to partitions {0, 3, 4} In the former case, only two partitions were moved to a new consumer, but in the latter, 4 partitions were moved. Does Kafka strive to do the former? Is there some form of algorithmic guarantee for how the new partition assignment is computed, so I can build a deployment strategy around it? Best, Edvard On Thu, Jun 8, 2023 at 1:53 PM sunil chaudhari <sunilmchaudhar...@gmail.com> wrote: > I will try to answer. > rebalancing triggers when one or two consuemrs(client) leaves the group > because of any reason. > The thumb rule is Number of partitions should be equal to number of > consumer threads. > If there are 300 partitions assigned one thread each it wont rebalance > untill some consumer marked as dead. > How it marks as dead: if the kafka doesnt receive heartbeat from consumer > in 5 mins(or defined at client side). > > If 20 consumers are dead from kafka persepctive at time T1 then it will > trigger rebalance. > It will trigger rebalance at time T2 when there is new consumer added to > the group and there is poll request from new consumer. > > If there is no issue with number of partitions and number of consumers then > it wont trigger rebalance. > > Terms I used may not be accurate😊 > > Regards, > Sunil. > > On Thu, 8 Jun 2023 at 3:59 PM, Edvard Fagerholm < > edvard.fagerh...@gmail.com> > wrote: > > > Hello, > > > > I couldn't find an answer in the documentation to the following. If a new > > machine joins a consumer group and Kafka triggers a rebalance, will it > > randomly reassign partitions or will it hand over partitions from > existing > > consumers to the newly joined one? In other words, will it attempt to > move > > as few partitions as possible between consumers? > > > > The main implications of this is local in-memory caches and scaling up > the > > number of machines in a consumer group, since the scaling up operation > will > > require nuking any local caches for the partitions that were moved. This > > would cause a spike on any DBs that are being cached on the consumers. > > > > Best, > > Edvard > > >