Kafka-服务端-GroupMetadataManager

GroupMetadataManager是GroupCoordinator中负责管理Consumer Group元数据以及其对应offset信息的组件。

GroupMetadataManager底层使用Offsets Topic,以消息的形式存储Consumer Group的GroupMetadata信息以及其消费的每个分区的offset,如图所示。

consumer_offsets的某Partition记录某consumerGroup的GroupMotadata消息记录某ConsumerGroup对Partition的offset消息记录某ConsumerGroup对Partition1的offset消费记录某ConsumerGroup的Partition2的offset消费。

为了提高查询的效率,GroupMetadataManager同时还会将Consumer Group的GroupMetadata信息和offset信息在内存中维护一份相同的副本,并进行同步修改。

GroupMetadataManager依赖的组件如图所示。

GroupMetadataManager中各个字段的含义和功能如下所述。

  • offsetsCache:PoolGroupTopicPartition,OffsetAndMetadata类型,记录了每个Consumer Group消费的分区的offset位置。

  • groupsCache:PoolString,GroupMetadata类型,记录每个Consumer Group在服务端对应的GroupMetadata对象。

  • loadingPartitions SetInt类型,记录了正在加载的Offsets Topic分区的id,后续详述。

  • ownedPartitions:SetInt类型,记录了已经加载的Offsets Topic分区的id,后续详述。

  • groupMetadataTopicPartitionCount:记录Offsets Topic的分区数量。该字段会调用getOffsetsTopicPartitionCount方法进行初始化。

  • replicaManager:ReplicaManager对象,Offsets Topic与普通的Topic一样,在ZooKeeper中也记录相关的配置信息;Offsets Topic分区与普通的Topic的分区一样,也有Leader副本、ISR集合、AR集合等概念,也会出现Leader副本的迁移等情况,所以也是由ReplicaManager进行管理的。

  • scheduler:KafkaScheduler对象,用于执行delete-expired-consumer-offsets、GroupCoordinator迁移等任务。

groupsCache管理与offsetsCache管理

记录GroupMetadata信息的消息和记录消费offset位置的消息都是通过partitionForO方法在Offsets Topic中选择合适的分区。

所以同一Consumer Group对应的这两类消息会被分配到同一个Offsets Topic分区中,但是这两类消息的key有所不同。

GroupMetadataManager提供了对groupsCache集合的管理方法,getGroup、addGroup方法实现比较简单,这里需要注意的是removeGroup方法。

removeGroup不仅会将groupCache集合中的GroupMetadata对象删除,还会向OffsetsTopic中写入一个value为空的消息作为"删除标记"。将value为空的消息看作对前面相同key的消息的"删除标记"。

相关推荐
爱吃苹果的梨叔8 分钟前
2026年分布式坐席系统哪家好:指挥中心与调度大厅选型参考
分布式·python
段一凡-华北理工大学17 分钟前
工业领域的Hadoop架构学习~系列文章23:物流行业Hadoop应用实践 - 智能物流的数字化引擎
大数据·人工智能·hadoop·分布式·学习·架构·高炉炼铁
Ze3G90nYt27 分钟前
Redis 分布式锁进阶第一百三十一篇
数据库·redis·分布式
云烟成雨TD31 分钟前
Spring AI Alibaba 1.x 系列【75】分布式智能体
人工智能·分布式·spring
giaz14n9X14 小时前
Redis 分布式锁进阶第六十三篇
分布式
ha_lydms15 小时前
AnalyticDB分区、分布键性能优化
android·大数据·分布式·性能优化·分布式计算·分区·analyticdb
pqk6V6Vep16 小时前
Redis 分布式锁进阶第一篇讲解
数据库·redis·分布式
梦想的颜色16 小时前
Kafka内核解密:架构拓扑、数据流转与生产消费模型的深度剖析
kafka·高并发·多线程·异步·消息组件·生产者与消费者模式
giaz14n9X16 小时前
Redis 分布式锁进阶第六十一篇
数据库·redis·分布式
洛水水17 小时前
消息队列与Kafka详解
分布式·kafka