前言
为什么要阅读源码?怎样阅读源码?阅读源码有啥好处?我也常常问自己。也许是因为每天的CURD没有太多挑战,也许是内心强烈的好奇心驱使,也许是为了能在面试的时候“问倒”面试官,又或许是在工作中有用武之地吧。碰到一个问题,我只会根据问题去查文档,我却不会抱着整篇kafak文档去读,主要是文档太无趣,一堆没有上下文的高度概括的文字,没有起承转合,赤裸裸的告诉你怎么去做,怎么做是对的,却不告诉你为什么这样做?这个为什么就是”设计思想“。如果我不阅读源码的话,再过几年,我每年熟练地学会几个新工具,kafka/elasticsearch/redis/mysql/docker/kubernetes,我永远不停地在学习新的工具、新的轮子,却总也赶不上技术的变化,慢慢就会被另一批熟练工代替。我也一直在想的问题是,我与培训班出来的学员有什么不同,同样的CURD,凭啥大家的工资不同呢?所以,为了培养自己独特的能力,我打算做点有趣的事,扎进源码的世界里看看。
目标
结合源码+《深入理解Kafka》这本书,写一写自己的心得和经验,作为知识储备下来。这个月大致将整个kafka server端浏览了一遍,许多细节的东西需要沉淀下来。第一期先剖析kafka server端,从kafka启动的各个模块分析:
-
- server.startup: 启动总览
-
- initZkClient: 初始化ZK
-
- kafkaScheduler: kafka内置的定时器
-
- metrics:kafka配置jmx指标监控
-
- quotaManagers: 配额管理器
-
- logManager:日志管理器
-
- socketServer:网络IO
-
- replicaManager:副本管理器
-
- kafkaController: 控制器
-
- KafkaApis: request请求
-
- ……
目前暂时先列出以上几点,慢慢更新补充。