[ 
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)

Reply via email to