针对Flink 1.12.0版本的核心模块进行源码级讲解,从任务提交流程、通讯过程、Task调度、内存模型四大方面入手,庖丁解牛逐行分析源码,手术刀级别剖析Flink内核架构!
1
任务提交流程模块 从任务提交脚本入手,探本溯源,找到程序执行入口,继而解析输入参数、选择创建客户端类型、获取有效配置、调用用户代码的main方法、调用执行环境的excute方法,直至最后进入任务提交流程,详细分析了Flink各组件启动顺序、资源申请流程、资源注册以及分配流程。分析上千行源码,层层追踪,并给出源码关键注释。 2
通讯过程模块 从Akka与Actor模型入手,以点带面,一步步引出Flink的整体组件通信全景。对Flink中RPC框架涉及的主要类RpcGateway、RpcEndpoint、RpcService、RpcServer、AkkaRpcActor进行仔细拆解,之后通过代码的跳转详细分析了RPC的交互过程。 3
Task调度模块 详细讲解Flink四层执行图StreamGraph、JobGraph、ExecutionGraph、物理执行图,分别如何生成转换,均配详尽源码讲解,并深入讲解了Flink的Task调度,分别从源码层面讲解了几个调度的重要组件,调度器、调度策略和调度模式。 内存模型模块 详细讲解Flink自主的内存管理模型,如何有效避免了JVM内存管理的不足之处,分别讲解了JobManager内存模型、TaskManager内存模型、源码分析内存分配过程。并讲解了内存数据结构、内存管理器和网络传输中的内存管理等内容。 搭配左元老师的mini flink效果更好:https://www.github.com/confucianzuoyuan/mini-flink
|