课程目录

测试题 (2讲)

  1. 期中测试 _ 这些源码知识,你都掌握了吗?
  2. 期末测试 _ 一套习题,测试你的掌握程度

特别放送 (5讲)

  1. 特别放送(一)_ 经典的Kafka学习资料有哪些?
  2. 特别放送(三)_ 我是怎么度过日常一天的?
  3. 特别放送(二)_ 一篇文章带你了解参与开源社区的全部流程
  4. 特别放送(五) _ Kafka 社区的重磅功能:移除 ZooKeeper 依赖
  5. 特别放送(四)_ 20道经典的Kafka面试题详解

课前必学 (3讲)

  1. 开篇词 _ 阅读源码,逐渐成了职业进阶道路上的“必选项”
  2. 导读 _ 构建Kafka工程和源码阅读环境、Scala语言热身
  3. 重磅加餐 _ 带你快速入门Scala语言

日志模块 (5讲)

  1. 01 _ 日志段:保存消息文件的对象是怎么实现的?
  2. 02 _ 日志(上):日志究竟是如何加载日志段的?
  3. 03 _ 日志(下):彻底搞懂Log对象的常见操作
  4. 04 _ 索引(上):改进的二分查找算法在Kafka索引的应用
  5. 05 _ 索引(下):位移索引和时间戳索引的区别是什么?

请求处理模块 (5讲)

  1. 06 _ 请求通道:如何实现Kafka请求队列?
  2. 07 _ SocketServer(上):Kafka到底是怎么应用NIO实现网络通信的?
  3. 08 _ SocketServer(中):请求还要区分优先级?
  4. 09 _ SocketServer(下):请求处理全流程源码分析
  5. 10 _ KafkaApis:Kafka最重要的源码入口,没有之一

Controller模块 (5讲)

  1. 11 _ Controller元数据:Controller都保存有哪些东西?有几种状态?
  2. 12 _ ControllerChannelManager:Controller如何管理请求发送?
  3. 13 _ ControllerEventManager:变身单线程后的Controller如何处理事件?
  4. 14 _ Controller选举是怎么实现的?
  5. 15 _ 如何理解Controller在Kafka集群中的作用?

状态机模块 (3讲)

  1. 16 _ TopicDeletionManager: Topic是怎么被删除的?
  2. 17 _ ReplicaStateMachine:揭秘副本状态机实现原理
  3. 18 _ PartitionStateMachine:分区状态转换如何实现?

延迟操作模块 (2讲)

  1. 19 _ TimingWheel:探究Kafka定时器背后的高效时间轮算法
  2. 20 _ DelayedOperation:Broker是怎么延时处理请求的?

副本管理模块 (6讲)

  1. 21 _ AbstractFetcherThread:拉取消息分几步?
  2. 22 _ ReplicaFetcherThread:Follower如何拉取Leader消息?
  3. 23 _ ReplicaManager(上):必须要掌握的副本管理类定义和核心字段
  4. 24 _ ReplicaManager(中):副本管理器是如何读写副本的?
  5. 25 _ ReplicaManager(下):副本管理器是如何管理副本的?
  6. 26 _ MetadataCache:Broker是怎么异步更新元数据缓存的?

消费者组管理模块 (7讲)

  1. 27 _ 消费者组元数据(上):消费者组都有哪些元数据?
  2. 28 _ 消费者组元数据(下):Kafka如何管理这些元数据?
  3. 29 _ GroupMetadataManager:组元数据管理器是个什么东西?
  4. 30 _ GroupMetadataManager:位移主题保存的只是位移吗?
  5. 31 _ GroupMetadataManager:查询位移时,不用读取位移主题?
  6. 32 _ GroupCoordinator:在Rebalance中,Coordinator如何处理成员入组?
  7. 33 _ GroupCoordinator:在Rebalance中,如何进行组同步?

结束语 (1讲)

  1. 结束语 _ 源码学习,我们才刚上路呢