Hey Edvard,

https://developer.confluent.io/learn-kafka/architecture/consumer-group-protocol/?_gl=1*c3fnxf*_ga*MTQzNDM3Njc5OS4xNjg2MjIyNjAy*_ga_D2D3EGKSGD*MTY4NjIyMjYwMi4xLjAuMTY4NjIyMjYwMi42MC4wLjA.&_ga=2.244068423.375119977.1686222603-1434376799.1686222602
is also a good read that might provide some more information as well.

Andrew

On Thu, Jun 8, 2023 at 7:19 AM Edvard Fagerholm <edvard.fagerh...@gmail.com>
wrote:

> Hi Richard,
>
> Thanks! That answers my question and Kafka also supports exactly what I'm
> looking for.
>
> Best,
> Edvard
>
> On Thu, Jun 8, 2023 at 2:13 PM Richard Bosch <richard.bo...@axual.com>
> wrote:
>
> > Hello Edvard,
> >
> > This is handled by the consumer partition assignment strategy
> > configuration.
> > The StickyAssignor and CooperativeStickyAssignor use an algorithm that
> > aims to leave all the assigned topics to their own consumer.
> > You can read a bit about it here
> >
> >
> https://kafka.apache.org/documentation/#consumerconfigs_partition.assignment.strategy
> > If you search for Kafka Consumer Assignor you can find a lot of
> > articles about this subject.
> >
> > The nice thing about this is that the consumer controls this
> > behaviour, and is not fixed in the broker.
> >
> > Kind regards,
> >
> > Richard Bosch
> > Developer Advocate
> > Axual BV
> > https://axual.com/
> >
> > On Thu, Jun 8, 2023 at 1:03 PM Edvard Fagerholm
> > <edvard.fagerh...@gmail.com> wrote:
> > >
> > > 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
> > > > >
> > > >
> >
>


-- 
Andrew Grant
8054482621

Reply via email to