kafka源码笔记:开篇

216 阅读2分钟

前言

为什么要阅读源码?怎样阅读源码?阅读源码有啥好处?我也常常问自己。也许是因为每天的CURD没有太多挑战,也许是内心强烈的好奇心驱使,也许是为了能在面试的时候“问倒”面试官,又或许是在工作中有用武之地吧。碰到一个问题,我只会根据问题去查文档,我却不会抱着整篇kafak文档去读,主要是文档太无趣,一堆没有上下文的高度概括的文字,没有起承转合,赤裸裸的告诉你怎么去做,怎么做是对的,却不告诉你为什么这样做?这个为什么就是”设计思想“。如果我不阅读源码的话,再过几年,我每年熟练地学会几个新工具,kafka/elasticsearch/redis/mysql/docker/kubernetes,我永远不停地在学习新的工具、新的轮子,却总也赶不上技术的变化,慢慢就会被另一批熟练工代替。我也一直在想的问题是,我与培训班出来的学员有什么不同,同样的CURD,凭啥大家的工资不同呢?所以,为了培养自己独特的能力,我打算做点有趣的事,扎进源码的世界里看看。

目标

结合源码+《深入理解Kafka》这本书,写一写自己的心得和经验,作为知识储备下来。这个月大致将整个kafka server端浏览了一遍,许多细节的东西需要沉淀下来。第一期先剖析kafka server端,从kafka启动的各个模块分析:

    1. server.startup: 启动总览
    1. initZkClient: 初始化ZK
    1. kafkaScheduler: kafka内置的定时器
    1. metrics:kafka配置jmx指标监控
    1. quotaManagers: 配额管理器
    1. logManager:日志管理器
    1. socketServer:网络IO
    1. replicaManager:副本管理器
    1. kafkaController: 控制器
    1. KafkaApis: request请求
    1. ……

目前暂时先列出以上几点,慢慢更新补充。