Hi Artem,

Yes, clients can reset their `client.rack` config if the broker doesn't use
a rack-aware selector. This config is only useful for improving locality
with a rack-aware selector.

On Wed, Nov 30, 2022 at 10:05 PM Artem Livshits
<alivsh...@confluent.io.invalid> wrote:

> I think it's reasonable for practical scenarios.  Is it possible to turn
> off rack awareness in the clients in case the broker selector plugin is not
> compatible with rack-aware logic in the client?
>
> -Artem
>
> On Wed, Nov 30, 2022 at 2:46 AM Rajini Sivaram <rajinisiva...@gmail.com>
> wrote:
>
> > Hi Artem,
> >
> > Understood your concern - brokers could use a replica selector that uses
> > some other client metadata other than rack id to decide the preferred
> read
> > replica, or just use the leader. In that case, consumers wouldn't really
> > benefit from aligning partition assignment on rack ids. So the question
> is
> > whether we should make the default consumer assignors use rack ids for
> > partition assignment or whether we should have different rack-aware
> > assignors that can be configured when brokers use rack-aware replica
> > selector. We had a similar discussion earlier in the thread (the KIP had
> > originally proposed new rack-aware assignors). We decided to update the
> > default assignors because:
> > 1) Consumers using fetch-from-follower automatically benefit from
> improved
> > locality, without having to update another config.
> > 2) Consumers configure rack id for improved locality, so aligning on
> > replica rack ids generally makes sense.
> > 3) We prioritize balanced assignment over locality in the consumer, so
> the
> > default assignors should work effectively regardless of broker's replica
> > selector.
> >
> > Does that make sense?
> >
> >
> > Thank you,
> >
> > Rajini
> >
> >
> >
> > On Tue, Nov 29, 2022 at 1:05 AM Artem Livshits
> > <alivsh...@confluent.io.invalid> wrote:
> >
> > > I'm thinking of a case where the broker uses a plugin that does not use
> > > rack ids to determine client locality, in that case the consumer might
> > > arrive at the wrong decision based on rack ids.
> > >
> > > -Artem
> > >
> > > On Wed, Nov 23, 2022 at 3:54 AM Rajini Sivaram <
> rajinisiva...@gmail.com>
> > > wrote:
> > >
> > > > Hi Artem,
> > > >
> > > > Thanks for reviewing the KIP. The client doesn't rely on a particular
> > > > replica assignment logic in the broker. Instead, it matches the
> actual
> > > rack
> > > > assignment for partitions from the metadata with consumer racks. So
> > there
> > > > is no assumption in the client implementation about the use of
> > > > RackAwareReplicaSelector in the broker. Did I misunderstand your
> > concern?
> > > >
> > > > Regards,
> > > >
> > > > Rajini
> > > >
> > > >
> > > > On Tue, Nov 22, 2022 at 11:03 PM Artem Livshits
> > > > <alivsh...@confluent.io.invalid> wrote:
> > > >
> > > > > Hi Rajini,
> > > > >
> > > > > Thank you for the KIP, the KIP looks good to match
> > > > RackAwareReplicaSelector
> > > > > behavior that is available out-of-box.  Which should probably be
> good
> > > > > enough in practice.
> > > > >
> > > > > From the design perspective, though, RackAwareReplicaSelector is
> just
> > > one
> > > > > possible plugin, in theory the broker could use a plugin that
> > leverages
> > > > > networking information to get client locality or some other way, so
> > it
> > > > > seems like we're making an assumption about broker replica
> selection
> > in
> > > > the
> > > > > default assignment implementation.  So I wonder if we should use a
> > > > separate
> > > > > plugin that would be set when RackAwareReplicaSelector is set,
> rather
> > > > than
> > > > > assume broker behavior in the client implementation.
> > > > >
> > > > > -Artem
> > > > >
> > > > > On Wed, Nov 16, 2022 at 8:08 AM Jun Rao <j...@confluent.io.invalid>
> > > > wrote:
> > > > >
> > > > > > Hi, David and Rajini,
> > > > > >
> > > > > > Thanks for the explanation. It makes sense to me now.
> > > > > >
> > > > > > Jun
> > > > > >
> > > > > > On Wed, Nov 16, 2022 at 1:44 AM Rajini Sivaram <
> > > > rajinisiva...@gmail.com>
> > > > > > wrote:
> > > > > >
> > > > > > > Thanks David, that was my understanding as well.
> > > > > > >
> > > > > > > Regards,
> > > > > > >
> > > > > > > Rajini
> > > > > > >
> > > > > > > On Wed, Nov 16, 2022 at 8:08 AM David Jacot
> > > > > <dja...@confluent.io.invalid
> > > > > > >
> > > > > > > wrote:
> > > > > > >
> > > > > > > > Hi Jun,
> > > > > > > >
> > > > > > > > We don't need to bump any RPC requests. The subscription is
> > > > > serialized
> > > > > > > > (including its version) and included as bytes in the RPCs.
> > > > > > > >
> > > > > > > > Best,
> > > > > > > > David
> > > > > > > >
> > > > > > > > On Tue, Nov 15, 2022 at 11:42 PM Jun Rao
> > > <j...@confluent.io.invalid
> > > > >
> > > > > > > wrote:
> > > > > > > > >
> > > > > > > > > Hi, Rajini,
> > > > > > > > >
> > > > > > > > > Thanks for the updated KIP. Just another minor comment. It
> > > would
> > > > be
> > > > > > > > useful
> > > > > > > > > to list all RPC requests whose version needs to be bumped
> > > because
> > > > > of
> > > > > > > the
> > > > > > > > > changes in ConsumerProtocolSubscription.
> > > > > > > > >
> > > > > > > > > Jun
> > > > > > > > >
> > > > > > > > > On Tue, Nov 15, 2022 at 3:45 AM Rajini Sivaram <
> > > > > > > rajinisiva...@gmail.com>
> > > > > > > > > wrote:
> > > > > > > > >
> > > > > > > > > > Hi David,
> > > > > > > > > >
> > > > > > > > > > Sorry, I was out of office and hence the delay in
> > responding.
> > > > > > Thanks
> > > > > > > > for
> > > > > > > > > > reviewing the KIP and answering Viktor's question (thanks
> > for
> > > > the
> > > > > > > > review,
> > > > > > > > > > Viktor).
> > > > > > > > > >
> > > > > > > > > > Responses below:
> > > > > > > > > > 01)  I was in two minds about adding new assignors,
> because
> > > as
> > > > > you
> > > > > > > > said,
> > > > > > > > > > user experience is better if assignors used racks when
> > > > available.
> > > > > > But
> > > > > > > > I was
> > > > > > > > > > a bit concerned about changing the algorithm in existing
> > > > > > applications
> > > > > > > > which
> > > > > > > > > > were already configuring `client.rack`. It felt less
> risky
> > to
> > > > add
> > > > > > new
> > > > > > > > > > assignor implementations instead. But we can retain
> > existing
> > > > > logic
> > > > > > if
> > > > > > > > a)
> > > > > > > > > > rack information is not available and b) racks have all
> > > > > partitions.
> > > > > > > So
> > > > > > > > the
> > > > > > > > > > only case where logic will be different is when rack
> > > > information
> > > > > is
> > > > > > > > > > available because consumers chose to use `client.rack` to
> > > > benefit
> > > > > > > from
> > > > > > > > > > improved locality, but racks only have a subset of
> > > partitions.
> > > > It
> > > > > > > seems
> > > > > > > > > > reasonable to make existing assignors rack-aware in this
> > case
> > > > to
> > > > > > > > improve
> > > > > > > > > > locality. I have updated the KIP. Will wait and see if
> > there
> > > > are
> > > > > > any
> > > > > > > > > > objections to this change.
> > > > > > > > > >
> > > > > > > > > > 02) Updated 1), so existing assignor classes will be
> used.
> > > > > > > > > >
> > > > > > > > > > 03) Updated the KIP to use version 3, thanks.
> > > > > > > > > >
> > > > > > > > > > If there are no concerns or further comments, I will
> start
> > > > voting
> > > > > > > later
> > > > > > > > > > today.
> > > > > > > > > >
> > > > > > > > > > Thank you,
> > > > > > > > > >
> > > > > > > > > > Rajini
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > On Fri, Nov 4, 2022 at 9:58 AM David Jacot
> > > > > > > <dja...@confluent.io.invalid
> > > > > > > > >
> > > > > > > > > > wrote:
> > > > > > > > > >
> > > > > > > > > > > Hi Viktor,
> > > > > > > > > > >
> > > > > > > > > > > I can actually answer your question. KIP-848 already
> > > includes
> > > > > > rack
> > > > > > > > > > > awareness in the protocol. It is actually the other way
> > > > around,
> > > > > > > this
> > > > > > > > > > > KIP takes the idea from KIP-848 to implement it in the
> > > > current
> > > > > > > > > > > protocol in order to realize the benefits sooner. The
> new
> > > > > > protocol
> > > > > > > > > > > will take a while to be implemented.
> > > > > > > > > > >
> > > > > > > > > > > Best,
> > > > > > > > > > > David
> > > > > > > > > > >
> > > > > > > > > > > On Fri, Nov 4, 2022 at 10:55 AM David Jacot <
> > > > > dja...@confluent.io
> > > > > > >
> > > > > > > > wrote:
> > > > > > > > > > > >
> > > > > > > > > > > > Hi Rajini,
> > > > > > > > > > > >
> > > > > > > > > > > > Thanks for the KIP. I have a few questions/comments:
> > > > > > > > > > > >
> > > > > > > > > > > > 01. If I understood correctly, the plan is to add new
> > > > > assignors
> > > > > > > > which
> > > > > > > > > > > > are rack aware. Is this right? I wonder if it is a
> > > > judicious
> > > > > > > choice
> > > > > > > > > > > > here. The main drawback is that clients must be
> > > configured
> > > > > > > > correctly
> > > > > > > > > > > > in order to get the benefits. From a user experience
> > > > > > perspective,
> > > > > > > > it
> > > > > > > > > > > > would be much better if we would only require our
> users
> > > to
> > > > > set
> > > > > > > > > > > > client.rack. However, I understand the argument of
> > > keeping
> > > > > the
> > > > > > > > > > > > existing assignors as-is in order to limit the risk
> but
> > > it
> > > > > also
> > > > > > > > means
> > > > > > > > > > > > that we will have to maintain multiple assignors
> with a
> > > > > > somewhat
> > > > > > > > > > > > similar core logic (within a rack). What do you
> think?
> > > > > > > > > > > >
> > > > > > > > > > > > 02. If we proceed with new rack-aware assignors, we
> > > should
> > > > > > > mention
> > > > > > > > > > > > their fully qualified names in the KIP as they will
> > > become
> > > > > part
> > > > > > > of
> > > > > > > > our
> > > > > > > > > > > > public interfaces.
> > > > > > > > > > > >
> > > > > > > > > > > > 03. KIP-792 has already introduced version 2 of the
> > > > > > subscription.
> > > > > > > > The
> > > > > > > > > > > > KIP is accepted but the PR is not merged yet. This
> KIP
> > > > should
> > > > > > use
> > > > > > > > > > > > version 3.
> > > > > > > > > > > >
> > > > > > > > > > > > Best,
> > > > > > > > > > > > David
> > > > > > > > > > > >
> > > > > > > > > > > > On Thu, Nov 3, 2022 at 5:58 PM Viktor Somogyi-Vass
> > > > > > > > > > > > <viktor.somo...@cloudera.com.invalid> wrote:
> > > > > > > > > > > > >
> > > > > > > > > > > > > Hi Rajini,
> > > > > > > > > > > > >
> > > > > > > > > > > > > If I understand correctly, the client.rack config
> > would
> > > > > stay
> > > > > > > > > > supported
> > > > > > > > > > > > > after KIP-848 but does it expand the scope of that
> > KIP
> > > > too
> > > > > > with
> > > > > > > > this
> > > > > > > > > > > > > config? I mean that currently you propose
> > > > > > > > > > ConsumerProtocolSubscription
> > > > > > > > > > > to
> > > > > > > > > > > > > be used but this protocol won't be available and we
> > > need
> > > > to
> > > > > > > > transfer
> > > > > > > > > > > the
> > > > > > > > > > > > > config to the coordinator via other means. Should
> > this
> > > be
> > > > > > added
> > > > > > > > to
> > > > > > > > > > > that KIP?
> > > > > > > > > > > > >
> > > > > > > > > > > > > Thanks,
> > > > > > > > > > > > > Viktor
> > > > > > > > > > > > >
> > > > > > > > > > > > > On Wed, Nov 2, 2022 at 9:50 PM Rajini Sivaram <
> > > > > > > > > > rajinisiva...@gmail.com
> > > > > > > > > > > >
> > > > > > > > > > > > > wrote:
> > > > > > > > > > > > >
> > > > > > > > > > > > > > Hi Jun,
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Thank you for the review. Yes, we should add rack
> > id
> > > to
> > > > > > > > > > > Subscription, had
> > > > > > > > > > > > > > missed that part. Updated the KIP, thank you for
> > > > pointing
> > > > > > > that
> > > > > > > > out!
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Regards,
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Rajini
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > On Wed, Nov 2, 2022 at 7:06 PM Jun Rao
> > > > > > > > <j...@confluent.io.invalid>
> > > > > > > > > > > wrote:
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > > Hi, Rajini,
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > Thanks for the KIP. Just one comment.
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > Should we add rackId to
> > > > GroupSubscription.Subscription
> > > > > > for
> > > > > > > > each
> > > > > > > > > > > member?
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > Thanks,
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > Jun
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > On Wed, Nov 2, 2022 at 4:57 AM Rajini Sivaram <
> > > > > > > > > > > rajinisiva...@gmail.com>
> > > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > Hi all,
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > I have submitted KIP-881 to implement
> > rack-aware
> > > > > > > partition
> > > > > > > > > > > assignment
> > > > > > > > > > > > > > for
> > > > > > > > > > > > > > > > consumers:
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-881%3A+Rack-aware+Partition+Assignment+for+Kafka+Consumers
> > > > > > > > > > > > > > > > .
> > > > > > > > > > > > > > > > It adds rack id to the consumer group
> protocol
> > to
> > > > > > > propagate
> > > > > > > > > > rack
> > > > > > > > > > > > > > > > information so that rack-aware assignors can
> be
> > > > added
> > > > > > to
> > > > > > > > > > benefit
> > > > > > > > > > > from
> > > > > > > > > > > > > > > > locality.
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > Feedback and suggestions are welcome!
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > Thank you,
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > Rajini
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to