• Kafka消费分组和分区分配策略


    Kafka消费分组,消息消费原理

    同一个消费组里的消费者不能消费同一个分区,不同消费组的消费组可以消费同一个分区

    Kafka分区分配策略

    Kafka 内部存在两种默认的分区分配策略:Range 和 RoundRobin。当以下事件发生时,Kafka 将会进行一次分区分配:

    • 同一个 Consumer Group 内新增消费者
    • 消费者离开当前所属的Consumer Group,包括shuts down 或 crashes
    • 订阅的主题新增分区

    将分区的所有权从一个消费者移到另一个消费者称为重新平衡(rebalance),如何rebalance就涉及到本文提到的分区分配策略。下面我们将详细介绍 Kafka 内置的两种分区分配策略。

    RoundRobin(轮循分配):

    这个分区分配策略简单来说就是列出所有的分区,然后和消费线程之间进行循环的分配即可。

    如果你需要使用该分配策略,你需要满足所有的消费线程都是消费相同的topic,且每个消费者之间的消费线程数是一样的。

    Range(范围策略):

    上述简单来说就是分区总数/消费线程数,如果有余,则表明有的消费线程之间分配的分区不均匀,那么这个多出来的分区会给前几个消费线程处理。

    比如上述5个分区,2个comsumer,4个消费线程,则5/4=1,这个表明如果4个消费线程均分5个分区还会多出一个分区,

    那么这个多出的额外分区就会给前面的消费线程处理,所以它会把第一个分区先给到c1-0消费线程消费。

    也可以这样的认为分配:

    5/4余1,则分配规则为2,1,1,1,对应的消费线程为C1-0,C1-1,C2-0,C2-1

    如果是6个分区的话:

    6/4余2,则分配规则为2,2,1,1,对应的消费线程为C1-0,C1-1,C2-0,C2-1

  • 相关阅读:
    @Controller 与 @RestController 的区别
    Java泛型
    Java面试被经常问到的常用算法
    jdk和jre的区别
    Spring获取对象的方式
    xsi:schemaLocation的作用
    SpringBoot学习(一)
    docker-elk装IK自定义分词库
    MySQL存储引擎
    docker环境下elasticsearch安装ik和拼音分词
  • 原文地址:https://www.cnblogs.com/dummyly/p/10097423.html
Copyright © 2020-2023  润新知