You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

106 lines
7.1 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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. 价格说明:划线价、订阅价为商品或服务的参考价,并非原价,该价格仅供参考。未划线价格为商品或服务的实时标价,具体成交价格根据商品或服务参加优惠活动,或使用优惠券、礼券、赠币等不同情形发生变化,最终实际成交价格以订单结算页价格为准。