Kafka 核心源码解读
胡夕
Apache Kafka Committer,老虎证券技术总监
19216 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 44 讲
结束语 (1讲)
Kafka 核心源码解读
15
15
1.0x
00:00/00:00
登录|注册

30 | GroupMetadataManager:位移主题保存的只是位移吗?

你好,我是胡夕。今天,我们学习位移主题管理的源码。
位移主题,即 __consumer_offsets,是 Kafka 的两大内部主题之一(另一个内部主题是管理 Kafka 事务的,名字是 __transaction_state,用于保存 Kafka 事务的状态信息)。
Kafka 创建位移主题的目的,是保存消费者组的注册消息和提交位移消息。前者保存能够标识消费者组的身份信息;后者保存消费者组消费的进度信息。在 Kafka 源码中,GroupMetadataManager 类定义了操作位移主题消息类型以及操作位移主题的方法。该主题下都有哪些消息类型,是我们今天学习的重点。
说到位移主题,你是否对它里面的消息内容感到很好奇呢?我见过很多人直接使用 kafka-console-consumer 命令消费该主题,想要知道里面保存的内容,可输出的结果却是一堆二进制乱码。其实,如果你不阅读今天的源码,是无法知晓如何通过命令行工具查询该主题消息的内容的。因为这些知识只包含在源码中,官方文档并没有涉及到。
好了,我不卖关子了。简单来说,你在运行 kafka-console-consumer 命令时,必须指定--formatter "kafka.coordinator.group.GroupMetadataManager\$OffsetsMessageFormatter",才能查看提交的位移消息数据。类似地,你必须指定 GroupMetadataMessageFormatter,才能读取消费者组的注册消息数据。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Kafka源码解析:深入理解位移主题管理 本文深入解析了Kafka中位移主题的管理源码,重点介绍了位移主题的作用、消息类型以及消息的实现代码。首先介绍了位移主题的作用和消息类型,包括消费者组注册消息和消费者组的已提交位移消息。然后详细解释了位移主题消息的实现代码,包括GroupTopicPartition类和BaseKey接口的作用。文章强调了消息的Key和Value的定义方式,并介绍了具体消息类型的构造方式。此外,还介绍了Tombstone消息的作用,以及消费者组如何注册到Coordinator组件的原理。通过源码解析的方式,深入浅出地介绍了位移主题的管理及消息类型的实现,为读者提供了深入理解Kafka位移主题的技术视角。 文章还介绍了位移主题和消费者组Coordinator之间的关系,以及如何确定Coordinator。每个Broker在启动时都会启动Coordinator组件,但一个消费者组只能被一个Coordinator组件所管理。Kafka是如何确定哪台Broker上的Coordinator组件为消费者组服务的原理也得到了详细解释。最后,文章总结了位移主题的重要性,消息类型的定义以及Coordinator确认原则,为读者提供了全面的知识体系。 总的来说,本文通过深入解析Kafka源码,全面介绍了位移主题的管理及消息类型的实现,为读者提供了深入理解Kafka位移主题的技术视角。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Kafka 核心源码解读》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(2)

  • 最新
  • 精选
  • 胡夕
    置顶
    你好,我是胡夕。我来公布上节课的“课后讨论”题答案啦~ 上节课,我们重点学习了消费者组管理器GroupMetadataManager类。课后我请你思考在什么场景下,需要移除GroupMetadataManager中保存的消费者组记录?其实,这个场景有两个:1、Broker成为位移主题分区的Follower副本时;2、位移主题分区下线时。 okay,你同意这个说法吗?或者说你有其他的看法吗?我们可以一起讨论下。
    2020-07-07
    1
    1
  • 旭杰
    根据位移主题分区号是如何确定Leader副本的?它们之间的对应关系保存在哪个字段?

    作者回复: “根据位移主题分区号是如何确定Leader副本的” --- 不需要确定。每个分区都有leader副本啊,如果你问的是Kafka如何知道每个分区的leader副本都在哪些broker上,那么这些数据保存在Controller元数据缓存和ZooKeeper之中

    2020-09-28
收起评论
显示
设置
留言
2
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部