Kafka rabalance 的底层原理、触发时机以及过程

目录

[Kafka Rebalance 原理](#Kafka Rebalance 原理)

[Rebalance 触发时机](#Rebalance 触发时机)

[Rebalance 过程](#Rebalance 过程)


Kafka Rebalance 原理

  1. 消费者组和分区分配

    • Kafka 中,消费者以组的形式订阅主题,组内的消费者共同消费主题的分区。
    • Rebalance 是指重新分配消费者组内的消费者与主题分区之间的关系。
  2. 协调者(Coordinator)

    • Kafka 为每个消费者组指定了一个协调者,负责管理组内成员和分区分配。
    • 协调者根据消费者组的成员情况和分区策略来决定分区的分配。
  3. 分区分配策略

    • Kafka 提供了多种分区分配策略,如 Range、RoundRobin 和 Sticky 等。
    • 分区分配策略决定了分区如何分配给消费者。
  4. 消费者心跳

    • 消费者定期向协调者发送心跳,证明它们仍然活跃。
    • 如果协调者在特定时间内未收到心跳,它会认为消费者已经失效。
  5. 分区所有权

    • 当分区被分配给消费者后,消费者成为该分区的所有者。
    • 只有分区的所有者能够消费该分区的消息。

Rebalance 触发时机

  1. 消费者加入或离开

    • 当新的消费者加入消费者组或现有消费者离开组时,会触发 Rebalance。
    • 加入和离开可以是消费者的启动、关闭或崩溃。
  2. 主题分区数变化

    • 如果一个消费者组订阅的主题增加了分区,这也会触发 Rebalance。
  3. 协调者发现消费者失效

    • 如果消费者未在规定时间内发送心跳,协调者会认为该消费者失效,并触发 Rebalance。
  4. 协调者自身的更换

    • 如果负责消费者组的协调者发生变化,也会触发 Rebalance。
  5. 消费者组内成员变化

    • 消费者组内成员发生变化,比如消费者的订阅模式或订阅主题列表变化,也会触发 Rebalance。

Rebalance 过程

  1. 停止消息消费

    • 一旦 Rebalance 被触发,消费者将停止消费消息。
  2. 重新分配分区

    • 协调者使用分区分配策略重新分配分区给消费者组内的成员。
  3. 同步状态

    • 消费者可能需要处理一些状态同步的问题,比如提交偏移量。
  4. 恢复消息消费

    • 一旦分区重新分配完毕,消费者将开始消费新分配的分区。

Rebalance 是 Kafka 保证消费者组高可用性和扩展性的关键机制,但频繁的 Rebalance 可能会对性能产生负面影响,因此需要合理配置消费者心跳和会话超时参数,以及合理使用消费者组。

相关推荐
青山木15 小时前
RocketMQ 入门到原理(一):整体架构与消息的生命周期
java·分布式·后端·中间件·架构·rocketmq
szephyr19 小时前
消息队列入门:RabbitMQ 和 Kafka 到底怎么选,什么时候不该用
后端·架构·kafka·消息队列·rabbitmq
lisanmengmeng1 天前
分布式追踪与监控:Skywalking介绍(一)
分布式·skywalking
HanhahnaH1 天前
Redis单线程和Tair多线程架构设计对比
分布式·缓存
rustfs1 天前
MinIO 国产开源平替正式 GA
分布式·docker·云原生·rust
螺蛳粉 螺蛳粉1 天前
MySQL 分布式集群系列 · 第五篇——全方位对比:NDB、MGR、主从复制、分库分表怎么选?
数据库·分布式·mysql
孙启超1 天前
【AI开发之Rust】第 7 课:错误处理 —— panic、Result 与 `?`
人工智能·分布式·后端·爬虫·spring cloud·架构·rust
九皇叔叔1 天前
Seata——把分布式事务理论落到 Java 微服务实践
分布式·分布式事务·cap·base·saga
程序员黎剑2 天前
RabbitMQ-消息可靠性-publisher-confirm持久化与手动ack
分布式·rabbitmq·ruby
比奥利奥还傲.2 天前
哪吒监控面板实战:部署 Dashboard、接入 Agent、钉钉告警,再配置固定公网访问
网络·人工智能·分布式·1024程序员节