[ https://issues.apache.org/jira/browse/KAFKA-687?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14099304#comment-14099304 ]
Joel Koshy commented on KAFKA-687: ---------------------------------- [~junrao] I was thinking over this a little more and I felt it is better not to design the new consumer's partition allocator API in this jira. There are a couple of reasons: * The new consumer's allocator's interface requirements and desired implementations will be known precisely only when we get to it - i.e., when we are implementing the partition assignment in the new consumer. So we will most likely change it anyway when we implement the new consumer. * The allocation code is not very complicated anyway so I don't think it is a lot of work to rewrite it in the new consumer implementation. * With the "more general" API that we discussed, the range allocation can no longer an exact copy (unlike the original patch). I would prefer to avoid touching the range-partitioner in the existing consumer at this point since that is the default that most people use. So what I would propose is the following: keep the partition allocation interface as in the original patch and provide only one more allocation implementation: roundrobin. This allocation scheme is legal only when using wildcards on all consumer instances and all the regexes are identical (although stream counts can be different). > Rebalance algorithm should consider partitions from all topics > -------------------------------------------------------------- > > Key: KAFKA-687 > URL: https://issues.apache.org/jira/browse/KAFKA-687 > Project: Kafka > Issue Type: Improvement > Affects Versions: 0.9.0 > Reporter: Pablo Barrera > Assignee: Joel Koshy > Attachments: KAFKA-687.patch, KAFKA-687_2014-07-18_15:55:15.patch > > > The current rebalance step, as stated in the original Kafka paper [1], splits > the partitions per topic between all the consumers. So if you have 100 topics > with 2 partitions each and 10 consumers only two consumers will be used. That > is, for each topic all partitions will be listed and shared between the > consumers in the consumer group in order (not randomly). > If the consumer group is reading from several topics at the same time it > makes sense to split all the partitions from all topics between all the > consumer. Following the example, we will have 200 partitions in total, 20 per > consumer, using the 10 consumers. > The load per topic could be different and the division should consider this. > However even a random division should be better than the current algorithm > while reading from several topics and should harm reading from a few topics > with several partitions. -- This message was sent by Atlassian JIRA (v6.2#6252)