Flink-源码学习-FlinkCore-公共基础服务
Fink 集群启动时组件会执行 initializeServices() 方法初始化一些基础服务,比如说 JobManager 启动时会初始化一些 RPC 通信服务、高可用服务以及监控服务等。
RPC 通信服务
Flink 集群内部通信框架的最底层依赖于 Akka,定义了不同类型的消息,并且设计了通用的 RPC 通信组件,Flink 的所有提供 RPC 请求的集群组件(如 JobMaster、 TaskManager、 ResourceManager、 Dispatcher 等)都使用了这些 RPC 通信基础组件來提供对外的 RPC 接口。
JobManager RPC 服务如图所示:引用本站文章Flink-源码学习-FlinkCore-通信服务-公共基础服务-Flink RPC 设计Joker高可用服务
向集群组件提供高可用支持,集群中的组件都会通过 haService 创建高可用服务。
引用本站文章Flink-源码学习-FlinkCore-公共基础服务-HA 服务设计Joker监控服务
集群监控指标收集
心跳服务
公共心跳服务,在 Flink 集群中集群组件的心跳服务是在公共心跳服务的基础之上创建。
HeartbeatServices 是心跳服务的提供者,谁需要心跳服务,通过 HeartbeatServices 去提供一个实例 HeartBeatImpl, 用来完成心跳
引用本站文章Flink-源码学习-FlinkCore-公共基础服务-心跳服务JokerI/O 线程池
用于集群组件的 I/O 操作,如本地文件数据读取和输出等Blob 服务
用来管理二进制文件(例如上传 Job 的 jar 包以及其依赖包,或者 TaskManager 上传的 log 文件等
引用本站文章Flink-源码学习-FlinkCore-公共基础服务-Blob 服务Joker存储 ExecutionGraph 的 Store 服务
创建 ArchivedExecutionGraphStore 服务,用于压缩并存储集群中的 ExecutionGraph 默认有两种实现
MemoryArchivedExecutionGraphStore: 主要是在内存中缓存
FileArchivedExecutionGraphStore: 会持久化到文件系统,也会在内存中缓存
1
FileArchivedExecutionGraphStore archivedExecutionGraphStore = createSerializableExecutionGraphStore(...)
默认实现是基于 File 的
引用本站文章Flink-源码学习-FlinkCore-公共基础服务-JobGraphStoreJoker