什么是Flink
Apache Flink是一个开源的分布式流处理框架,它支持在内存中对无限量的数据进行高效的流式处理。
Flink特点
Flink 有如下特点:
- 批流一体:统一批处理和流处理;
- 分布式:Flink 程序可以运行在分布式环境下;
- 高性能、高可用;
- 准确性:Flink 可以保证数据处理的准确性;
Flink的架构
Flink 的架构可以分为四个主要层次:
+--------------------------------------+ | | | Flink Application | | | +--------------------------------------+ | +--------------------------------------+ | | | Flink APIs | | (DataStream API and DataSet API) | | | +--------------------------------------+ | +--------------------------------------+ | | | Flink Runtime | | (Task Managers and Job Managers) | | | +--------------------------------------+ | +--------------------------------------+ | | | Distributed Storage Backends | | (RocksDB, Hadoop HDFS, etc.) | | | +--------------------------------------+
1.应用层
应用层是使用 Flink 的最上层,应用层负责定义 Flink 作业,包括数据源、转换操作和输出操作等。
Flink 支持各种类型的数据源,包括本地文件、Kafka、Hadoop HDFS 等,同时提供了许多内置的数据转换操作和输出操作。
2.API 层
API 层提供了 Flink 的核心功能,它定义了数据流的基本概念和操作,包括数据流、状态和窗口等。
Flink 提供了两种 API:DataStream API 和 DataSet API。
- DataStream API 用于处理流数据;
- DataSet API 用于处理有限数据集;
3.运行时层
运行时层是 Flink 的核心组件,它负责执行应用程序。
Flink 将应用程序转换为数据流图,并将其分发到集群中的任务管理器(Task Manager)上执行。
任务管理器负责将任务划分为子任务,并将其分配给具体的 Task Slot 执行。
4.分布式存储层
分布式存储层是 Flink 的数据存储组件,它支持在内存和磁盘上存储数据。
并提供了一些高级的数据管理功能,比如:状态后端、保存点和检查点等。
Flink 支持多种存储后端,包括 RocksDB、Hadoop HDFS 等。
总体来说,Flink 的架构设计非常灵活和可扩展,它可以根据不同的需求和场景进行配置和优化。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》