美文网首页
A(12)Kafka分区分配策略

A(12)Kafka分区分配策略

作者: bigdata张凯翔 | 来源:发表于2020-07-10 01:41 被阅读0次

    在 Kafka内部存在两种默认的分区分配策略:Range和 RoundRobin。
    Range是默认策略。Range是对每个Topic而言的(即一个Topic一个Topic分),首先对同一个Topic里面的分区按照序号进行排序,并对消费者按照字母顺序进行排序。然后用Partitions分区的个数除以消费者线程的总数来决定每个消费者线程消费几个分区。如果除不尽,那么前面几个消费者线程将会多消费一个分区。
    例如:我们有10个分区,两个消费者(C1,C2),3个消费者线程,10 / 3 = 3而且除不尽。
    C1-0 将消费 0, 1, 2, 3 分区
    C2-0 将消费 4, 5, 6 分区
    C2-1 将消费 7, 8, 9 分区
    RoundRobin:前提:同一个Consumer Group里面的所有消费者的num.streams(消费者消费线程数)必须相等;每个消费者订阅的主题必须相同。
    第一步:将所有主题分区组成TopicAndPartition列表,然后对TopicAndPartition列表按照hashCode进行排序,最后按照轮询的方式发给每一个消费线程。

    相关文章

      网友评论

          本文标题:A(12)Kafka分区分配策略

          本文链接:https://www.haomeiwen.com/subject/efducktx.html