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:Pool[GroupTopicPartition,OffsetAndMetadata]类型,记录了每个Consumer Group消费的分区的offset位置。

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

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

  • ownedPartitions:Set[Int]类型,记录了已经加载的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的消息的"删除标记"。

相关推荐
smileNicky44 分钟前
RabbitMQ Linux 安装教程详解
linux·分布式·rabbitmq
冼紫菜2 小时前
[特殊字符] 基于Docker部署Nacos注册中心及微服务注册发现详解(含MySQL持久化配置)
分布式·mysql·docker·微服务·容器
九章云极AladdinEdu7 小时前
量子机器学习中的GPU加速实践:基于CUDA Quantum的混合编程模型探索
人工智能·分布式·机器学习·ai·ai编程·gpu算力·量子计算
时序数据说9 小时前
IoTDB集群部署中的网络、存储与负载配置优化
大数据·网络·分布式·时序数据库·iotdb
XY.散人12 小时前
初识Redis · 分布式锁
数据库·redis·分布式
慧一居士12 小时前
Spring Boot集成Kafka并使用多个死信队列的完整示例
分布式·架构·kafka
佳腾_15 小时前
【分布式系统中的“瑞士军刀”_ Zookeeper】二、Zookeeper 核心功能深度剖析与技术实现细节
分布式·zookeeper·云原生·集群管理·命名服务
FISCO_BCOS16 小时前
分布式数字身份:迈向Web3.0世界的通行证 | 北京行活动预告
分布式·web3
搞不懂语言的程序员21 小时前
Kafka的Topic分区数如何合理设置?
分布式·kafka
NON-JUDGMENTAL1 天前
Hadoop 集群基础指令指南
大数据·hadoop·分布式