[
https://issues.apache.org/jira/browse/KAFKA-2017?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14957665#comment-14957665
]
Guozhang Wang commented on KAFKA-2017:
--------------------------------------
Here is my two cents comparing those two approaches:
1. ZK-based approach:
Pros: simple implementation, and easy tooling for querying consumer group
states.
Cons: ZK-writes (and perhaps also ZK-reads, which may be optimized further in
the loading process).
2. Kafka-based approach:
Pros: reuse offset topic, no ZK burden.
Cons: not-so-simple implementation, admin tools may need sending the
consumer-group-metadata-request only to the coordinator.
Now about the tradeoffs, I personally think the conceptual cleanness of
"putting broker metadata in ZK while consumer metadata in Kafka" should not put
much weights in the design, since what really matters is just the read / write
workloads. For example we decided to move consumer offsets from ZK to Kafka not
primarily because we want to separate it from broker registry but just that its
write frequency is too high for ZK (of course later there are some other
motivations like security / multi-tenancy so that we want to make consumer
ZK-free), while broker registry changes are relatively infrequent so that it
can live in ZK. Consumer group changes are somewhere between this two
workloads, but I assume it would still be closer to broker registry changes in
the spectrum compared with consumer offset changes.
In addition, I feel it is not a best solution in general to persist all data in
a logging format: it gives you better write performance in the trade of worse
read performance. For our case, we could unnecessarily increase the loading
time upon coordinator migration, either we piggy-back it in offsets topic or in
another topic (BTW I agree with [~jjkoshy] that piggy-backing in the offset
topic is a bit tricky). If we agree that consumer membership change workload is
rather write-light instead of write-heavy, then this trade may not be
worth-while.
I also second [~hachikuji]'s point about ops benefits in storing membership in
ZK: it allows all brokers to handle consumer group metadata request, and in
addition for ops team to get around admin requests (KIP-4) but directly query
ZK.
> Persist Coordinator State for Coordinator Failover
> --------------------------------------------------
>
> Key: KAFKA-2017
> URL: https://issues.apache.org/jira/browse/KAFKA-2017
> Project: Kafka
> Issue Type: Sub-task
> Components: consumer
> Affects Versions: 0.9.0.0
> Reporter: Onur Karaman
> Assignee: Guozhang Wang
> Fix For: 0.9.0.0
>
> Attachments: KAFKA-2017.patch, KAFKA-2017_2015-05-20_09:13:39.patch,
> KAFKA-2017_2015-05-21_19:02:47.patch
>
>
> When a coordinator fails, the group membership protocol tries to failover to
> a new coordinator without forcing all the consumers rejoin their groups. This
> is possible if the coordinator persists its state so that the state can be
> transferred during coordinator failover. This state consists of most of the
> information in GroupRegistry and ConsumerRegistry.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)