• Kafka--Rebalance重平衡


    Rebalance总览

    Rebalance触发条件

    (1)消费组成员发生变更,有新消费者加入或者离开,或者有消费者崩溃
    (2)消费者组订阅的主题数量发生变更
    (3)消费组订阅主题的分区数发生变更

    避免不必要的Rebalance

    针对(1)中消费者崩溃问题,有时候是Consumer没有在配置的制定时间内完成消息的处理,Coordinator就认为该Consumer已经“崩溃”,引发新一轮的Rebalance
    可调优参数:
    session.timeout.ms:该配置定义了消费者与Kafka集群之间的会话超时时间,如果在这个时间内未发送心跳包到集群服务器,服务器就会将其标记未离线并触发Rebalance
    heartbeat.interval.ms:配置心跳包发送的频率,如果session配置6s hearbeat配置2s,那么至少能够保证三轮的心跳请求
    max.poll.interval.ms:消费者是通过poll()方法来拉取消息,这个配置定义了两次poll之间的间隔,如果消费者处理数据量非常大超过了max.poll.interval.ms仍没有继续拉取,就会触发Rebalance

    Group Coordinator职能

    四大类:Coordinator/Group/Offset/Heartbeat
    ApiKeys.Find_coordinator
    ApiKeys.Join_Group
    Apikeys.Leave_Group
    Apikeys.Sync_group
    Apikeys.Offset_commmit
    Apikeys.Offset_Fetch
    Apikeys.Offset_for_leader_epoch
    Apikeys.Offset_delete
    Apikeys.Heartbeat
    1)负责管理消费者组的分区分配信息和Offset,存储消费者组成员元数据,分配GroupID和ConsumerID
    2)负责处理JoinGroupRequest和SyncGroupRequest完成分区分配的工作
    3)通过心跳检查消费者的状态

    Consumer Group状态机
    image

    分区分配策略

    RangeAssignor(默认)、RoundRobinAssignor、StickyAssignor
    RangeAssignor:按照+Topic+的维度进行分配的,对于每个Topic,首先对Partition按照分区ID进行排序,然后对订阅这个Topic的ConsumerGroup的Consumer再进行排序,之后尽量均衡的按照范围区段将分区分配给Consumer
    RoundRobinAssignor:将 Consumer Group 内订阅的所有 Topic 的 Partition 及所有 Consumer 进行排序后按照顺序尽量均衡的一个一个进行分配。如果 Consumer Group 内,每个 Consumer 订阅都订阅了相同的Topic,那么分配结果是均衡的。如果订阅 Topic 是不同的,那么分配结果是不保证“尽量均衡”的,因为某些 Consumer 可能不参与一些 Topic 的分配
    StickyAssignor:可通过partition.assignment.strategy参数配置,发生Rebalance时尽量与上一次分配的结果保持一致

    RangeAssignor图解
    image

    RoundRobinAssignor图解

    组内订阅Topic相同

    image

    组内订阅Topic不同

    image

    StickyAssignor图解

    重平衡前

    image

    重平衡后

    image

  • 相关阅读:
    SAP UI5 视图里的 OverflowToolbar 控件
    【数据结构与算法】常见排序算法(Sorting Algorithm)
    想进入游戏建模行业,这4点必须了解
    gRPC入门学习之旅(五)
    高德地图API-通过经纬度获取当前位置附近的建筑
    力扣刷题学习SQL篇——1-17 查询近30天活跃用户数(日期进行区间判定)
    Python自动化小技巧11——excel文件的文字内容筛选
    【luogu P4590】游园会(DP套DP)
    1310. 数三角形
    C++ 嵌套循环
  • 原文地址:https://www.cnblogs.com/iamxiaofu/p/18141427