vlambda博客
学习文章列表

Flink 源码分析系列预告


最近快年底了,对一年的工作内容盘整了一下,同时花了点时间,系统理了一遍 Flink 源码,主要是

  • 可以学习一下大型项目的系统结构,代码组织,包括其设计的抽象性和扩展性,借以提高自身的代码能力。

  • 也可以乘机学习一下当下最火的大数据框架的设计思想,深入底层了解一下其工作原理,以彻底揭开这几年虽然是偶尔用到这个系统,但是一直压在头的疑团其是如何这么高效、低延迟完成流式计算任务的。


整个阅读过程耗时比较长,毕竟代码量很大,从开始的无从下手,到逐渐可以顺藤摸瓜;从开始的管中窥豹,到后期有个初步的该揽全局。感觉收获颇丰,尤其在代码风格上、系统抽象上、整个庞大系统的组件拆分上都有良好的设计。因此感觉很有必要将读代码过程中的一些心得和体会用文字记录下来,一来可以分享交流,其次可以加深印象,更加加深自身对系统的理解。


由于系统代码量庞大,不可能对所有代逐行分析,代码分析和记录的形式主要会从相关功能组件,比较巧妙的设计思想等角度抽取具有代表性的点进行分析和记录,初步规划的切入点大概可能会分成如下几步(后续文章发布可能不一定会按下列次序):

  • 集群的组织结构,功能组件介绍,集群的启动流程。

  • 集群的RPC框架分析。

  • Flink任务启动流程,JobGraph等拓扑抽象分析。

  • Flink 中几对重要组件注册机制和源码分析。

  • Flink任务的网络栈、数据交换、通信机制分析。

  • Flink checkpoint 触发整体机制和流程分析。

  • Flink对象序列化压缩机制分析。


整体的切入点大致会有上面几个,其中具体发布的内容可能会其中一个拆成好几篇,或者可能其中几个合并到一个里一起记录。希望有兴趣的可以一起加入讨论分享。