Kafka消费者 - rebalance

Kafka消费者群组深入解析
本文详细介绍了Kafka中消费者群组的概念及其工作原理,包括消费者实例与主题分区的关系、位移(offset)机制、再均衡(rebalance)过程以及协调者(coordinator)的角色。深入探讨了消费者群组在消费实例加入或离开、主题或分区变更时的再均衡时机及策略。

概述

生产者

消费者群组再均衡

消费者的配置

深入理解Kafka

几个概念

消费者组
多个消费实例共享一个GroupId,多个消费实例组织在一起协调消费订阅的主题和分区。
消费实例可以是一个进程也可以是一个线程
GroupId是一个字符串,唯一标识一个消费组
GroupId.consumerInstance:GroupId.partition = 1:N,也就是说同一个消费者实例和partition的对应关系是1:N
offset
位移(offset):consumer记录消费消息的位置
kafka的位移机制:

  • consumer实例保存自己的offset,通过checkPoint机制定期持久化
  • 新版本的kafka通过topic定期持久化到broker
  • 老版本的kafka是持久化到zk的,但是zk并不适合频繁的写

rebalance
一个groupId内有多个consumer,其订阅topic有多个partition,那么那个消费者消费那个partition呢?rebalance就是做consumer和partition的匹配。

什么时候rebalance

  • 组成员的变更(consumer的加入或者离开、崩溃)
  • 订阅的partition发生变更
  • 订阅的topic发生变更(按照正则方式订阅时是可能发生的)

如何rebalance
consumerClient有两种策略可选,通过partition.assignment.strategy配置;默认是Range策略

  • Range strategy:按照topic维度均分partition,问题是可能出现分配不均的问题
  • RoundRobin:所有partition均分,分配的更均匀

谁来执行rebalance和consumer group管理
每个consumer group都会被分配一个coordinator用于组管理和位移管理。
当新版本consumer group的第一个consumer启动的时候,它会去和kafka server确定谁是它们组的coordinator,之后该group内的所有成员都会和该coordinator进行协调通信。

谁是coordinator
consumer group位移信息写入__consumers_offsets的分区为partition,该partition的leader所在的broker就是该组的coordinator。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值