Flink-源码系列
一、架构设计
Flink 是一个批流一体的分布式计算引擎,作为一个分布式计算引擎,必须提供面向开发人员的 API,根据业务逻辑开发 Flink 作业,作业除了包含业务逻辑外,还需要跟外部的数据存储进行交互。作业开发、测试完华后,交给 Flink 集群进行执行,同时还要让运维人员能够管理与监控 Flink。
二、阅读环境准备
三、集群启动
四、Libraries 层
4.1. CEP
CEP是 Complex Event Process(复杂事件处理)的缩写,能够对一组事件序列按照指定的规则进行匹配处理。Flink CEP是一个构建在 Flink 之上的 CEP 框架。在流式数据处理场景中,CEP 接照指定的规则进行事件匹配。
CEP 与传统数据库的处理逻辑相反: 传统数据库是先存储数据,再对其进行查询分析; CEP是先定义好查询规则,再灌入实时数据,进行过滤匹配。
4.2. Flink Table & SQL
五、API 层
5.1. 作业提交
5.2. 元数据
5.3. 连接器 Connector
六、Core 层
Flink Core 提供了 Flink 最基础与最核心的功能。
1 | object WordCount { |
6.1. 基础服务
Flink 集群启动时组件会执行 initializeServices() 方法初始化一些基础服务,比如说 JobManager 启动时会初始化一些 RPC 通信服务、高可用服务以及监控服务等。
6.2. 运行时服务
在 《Spark 源码学习系列中》说过就像学习一门编程语言一样, 无论是 Java 程序还是 Scala 程序,都需要运行在其所依托的环境下~,Spark 源码中 SparkEnv
提供了多种多样的内部组件,实现不同的功能~
Spark 对任务的计算都依托于 Executor 的能力,所有的 Executor 都有自己的 Spark 执行环境 SparkEnv。Executor 有了 SparkEnv, 就可以将数据存储在 SparkEnv 提供的存储体系中; 就能利用计算引擎对计算任务进行处理,就可以在节点间进行通信等…
SparkEnv 提供了多种多样的内部组件,实现不同的功能~
那么 Flink 中 TaskManagerServices 就类似 SparkEnv ~
6.3. StreamExecutionEnvironment
Flink 流程序的入口点是 StreamExecutionEnvironment 类的一个实例,它定义了程序执行的上下文。StreamExecutionEnvironment 是所有 Flink 程序的基础。