• Kafka消费者Relance机制和分区机制


    Kafka消费者Relance机制和分区机制

    kafka消费者Relance

    rebalance就是说如果消费组里的消费者数量有变化或消费的分区数有变化,
    kafka会重新分配消费者消费分区的关系。比如consumer group中某个消费者挂了,此时会自动把分配给他的分区交给其他的消费者,如果他又重启了,那么又会把一些分区重新交还给他。
    
    • 1
    • 2

    注意:rebalance只针对subscribe这种不指定分区消费的情况,如果通过assign这种消费方式指定了分区,kafka不会进行rebanlance。
    如下情况可能会触发消费者rebalance

    1. 消费组里的consumer增加或减少了
    2. 动态给topic增加了分区
    3. 消费组订阅了更多的topic
    
    • 1
    • 2
    • 3

    rebalance过程中,消费者无法从kafka消费消息,这对kafka的TPS会有影响,如果kafka集群内节点较多,比如数百个,那重平衡可能会耗时极多,所以应尽量避免在系统高峰期的重平衡发生

    消费者Rebalance分区分配策略

    主要有三种rebalance的策略:range、round-robin、sticky。
    Kafka 提供了消费者客户端参数partition.assignment.strategy 来设置消费者与订阅主题之间的分区分配策略。默认情况为range分配策略。

    .假设一个主题有10个分区(0-9),现在有三个consumer消费:range策略就是按照分区序号排序,假设 n=分区数/消费者数量 = 3, m=分区数%消费者数量 = 1,那么前 m 个消费者每个分配 n+1 个分区,后面的(消费者数量-m )个消费者每个分配 n 个分区。比如分区03给一个consumer,分区46给一个consumer,分区7~9给一个consumer。

    round-robin策略就是轮询分配,比如分区0、3、6、9给一个consumer,分区1、4、7给一个consumer,分区2、5、8给一个consumer
    
    • 1
    sticky策略初始时分配策略与round-robin类似,但是在rebalance的时候,需要保证如下两个原则。
    1)分区的分配要尽可能均匀 。
    2)分区的分配尽可能与上次分配的保持相同。
    
    • 1
    • 2
    • 3

    当两者发生冲突时,第一个目标优先于第二个目标 。这样可以最大程度维持原来的分区分配的策略。

    比如对于第一种range情况的分配,如果第三个consumer挂了,那么重新用sticky策略分配的结果如下:
    consumer1除了原有的0~3,会再分配一个7
    consumer2除了原有的4~6,会再分配8和9

  • 相关阅读:
    【PAT甲级 - C++题解】1107 Social Clusters
    Mybatis-plus的介绍与使用
    中国建成世界海中最高5G基站 采用微波传输方案
    【zabbix监控三】zabbix之部署代理服务器
    简简单单入门Makefile
    基于微信小程序的英语互助小程序设计与实现(亮点:小组制打卡、模拟考试答题、错题本、学习论坛)
    DETR纯代码分享(三)coco_panoptic.py
    SP283 NAPTIME-Naptime
    该虚拟机的某个磁盘已经由虚拟机或者快照使用 vmware 损坏 .vmdk为空
    公网IP地址如何申请SSL证书?有免费的IP ssl吗?
  • 原文地址:https://blog.csdn.net/huanglu0314/article/details/125524735