# Kafka核心源码解读 ## 你将获得 * 系统高效的源码阅读方法 * 深入理解 Kafka 的底层原理 * 快速定位线上问题并制定调优方案 * 25个典型案例分享+面试题讲解 ## 讲师介绍 胡夕,Apache Kafka Committer,老虎证券技术总监,著有《Apache Kafka实战》一书,曾任职于IBM、搜狗和新浪微博等公司,也是极客时间[《Kafka核心技术与实战》](https://time.geekbang.org/column/intro/191)专栏的作者。胡夕对Kafka及其它开源流处理框架与技术有深刻理解,他精通Kafka原理,主导过多个十亿级/天的消息引擎业务系统的设计与搭建,具有丰富的线上环境定位和诊断调优经验,曾给多家大型公司提供企业级Kafka培训。 ## 课程介绍 谈到源码分析,很多人会有这样的疑问:“Kafka的基本功能我已经掌握了,还有读源码的必要吗?” 实际上,阅读源码不仅能够帮你更深刻地理解底层设计原理,提升你的系统架构能力和编码功力,还能让你知道Kafka使用中有哪些坑,提前避免。更为重要的,如果你把读源码的时间分摊到解决问题的时间成本上,你会发现,读源码反而是更节省时间的选择,因为你可以借助源码快速定位问题并制定调优方案。 除此之外,很多公司在招聘资深技术岗时,常常会要求应聘者“至少读过一种开源框架的源码”。这也就意味着,阅读源码正在从“加分项”向“必选项”转变。 读源码之初,我们的目标都是“从入门到精通”,但是,在实际阅读源码的过程中,很多人却遇到了很多棘手的问题,结果只能“从入门到放弃”。这些问题主要是: * 源码有这么多,该从哪里开始读? * 读源码太枯燥了,有没有什么科学有趣的方法呢? * …… 基于这些问题,我们邀请胡夕老师开设了《Kafka核心源码解读》这个课程。鉴于服务器端源码是理解Kafka架构特别是系统运行原理的基础,老师精选出了最重要的组件代码,按照功能将其划分为7个模块,采用“丰富的流程图+代码注释”的方式进行细粒度讲解。 同时,这个课程还有大量的真实案例、社区的最新动态、经典面试题的系统解答,让你不仅能读懂源码,还能做到借助源码高效地解决真实问题。 # 常见问题 **问:Kafka服务器端源码由Scala语言编写而成,不会Scala语言也可以学习这个课程吗?** 答:这部分源码并没有用到Scala多少高大上的语法特性。即使你不熟悉Scala语言也没关系。你不需要完整、系统地学习这门语言,只要能简单了解基本的函数式编程风格,以及它的几个关键特性,就足够了。如果你有Java语言基础,那就更好了,因为它们有很多特性非常相似。 当然了,为了不影响你理解课程内涉及的源码,“导读”会先给你介绍下Scala语言。课程里涉及Scala比较难的语言特性时,也会具体解释。所以,你完全不用担心语言的问题。 **问:非Kafka使用者是否可以从这个课程中受益?** 答:如果你是开源框架爱好者,你可以从这门课里学到很多优秀的设计理念,进一步提升你的系统架构能力。另外,很多公司在招聘高级技术人员时通常会要求应聘者“至少读过一种开源框架的源码”,如果你现在没有更好的选项,不妨学习下这门课,它会让你快速掌握一种源码。 # 课程模块设计 课程主体分为7个模块。 * **日志模块**:详细介绍消息是如何被定义和组织的,帮你掌握Kafka消息在底层被读写的方法代码是怎么实现的。 * **请求处理模块**:分析各类Kafka请求在网络层传输以及被处理的逻辑代码,尤其是Reactor模式在Kafka中的实现。 * **副本管理模块**:主要阐述分区副本对象的管理逻辑代码,包括副本的创建、状态流转、删除等操作,帮你搞懂副本在Kafka中的状态流转路径。 * **延迟操作模块**:重点讲解Kafka如何实现延迟操作,以及一个O(N)时间复杂度的时间轮算法,带你搞懂延迟操作底层的实现架构。 * **消费者组管理模块**:详细分析消费者组协调器的各类管理功能代码,比如创建、管理、删除等,GroupCoordinator是Kafka中最核心的组件之一。 * **Controller模块**:结合一些实际案例,给你分享Controller组件管理Kafka集群元数据的代码和基于ZooKeeper的Controller选举。 * **状态机模块**:重点分析副本和分区的状态流转逻辑,以及Kafka集群是如何管理副本对象和分区对象的。 除此之外,还设置了“特别放送”模块,与你分享一些经典的学习资料、参与开源社区的全部流程,解析经典的面试题等,全方位提升你的源码阅读能力和Kafka实战能力。 ## 课程目录 ![](https://static001.geekbang.org/resource/image/69/3c/6961bc3841b09586cfayyf97f1fc803c.jpg) ## 适合人群 1. 对Kafka有所了解,或者订阅过[《Kafka核心技术与实战》](https://time.geekbang.org/column/intro/100029201)专栏,想要了解Kafka底层原理、掌握源码阅读方法,以及解决实际操作问题的工程师。 2. 任何对学习源码或者是开源框架感兴趣的软件工程师或架构师。 ## 特别放送 #### 免费领取福利 [![](https://static001.geekbang.org/resource/image/0c/04/0caf085f7c8a0cdda793d541722dcf04.jpg?wh=1029x315)](https://time.geekbang.org/article/374158) #### 限时活动推荐 [![](https://static001.geekbang.org/resource/image/67/a0/6720f5d50b4b38abbf867facdef728a0.png?wh=1035x360)](https://shop18793264.m.youzan.com/wscgoods/detail/2fmoej9krasag5p?dc_ps=2913145716543073286.200001) ## 订阅须知 1. 订阅成功后,推荐通过“极客时间”App端、Web端学习。 2. 本专栏为虚拟商品,交付形式为图文+音频,一经订阅,概不退款。 3. 订阅后分享海报,每邀一位好友订阅有现金返现。 4. 戳此[先充值再购课更划算](https://shop18793264.m.youzan.com/wscgoods/detail/2fmoej9krasag5p?scan=1&activity=none&from=kdt&qr=directgoods_1541158976&shopAutoEnter=1),还有最新课表、超值赠品福利。 5. 企业采购推荐使用“[极客时间企业版](https://b.geekbang.org/?utm_source=geektime&utm_medium=columnintro&utm_campaign=newregister&gk_source=2021020901_gkcolumnintro_newregister)”便捷安排员工学习计划,掌握团队学习仪表盘。 6. 戳此[申请学生认证](https://promo.geekbang.org/activity/student-certificate?utm_source=geektime&utm_medium=caidanlan1),订阅课程享受原价5折优惠。 7. 价格说明:划线价、订阅价为商品或服务的参考价,并非原价,该价格仅供参考。未划线价格为商品或服务的实时标价,具体成交价格根据商品或服务参加优惠活动,或使用优惠券、礼券、赠币等不同情形发生变化,最终实际成交价格以订单结算页价格为准。