Flink 是什么
Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. Flink has been designed to run in all common cluster environments, perform computations at in-memory speed and at any scale.
简单来说它是一个用于处理无界和有界数据流状态的计算的一个框架和分布式处理引擎。(这里的有界和无界后期会单独抽一章进行介绍)
Apache Flink是一个用于分布式流和批处理数据处理的开源平台。Flink的核心是流数据流引擎,为数据流上的分布式计算提供数据分发,通信和容错。Flink在流引擎之上构建批处理,覆盖本机迭代支持,托管内存和程序优化。
Apache Flink是apache的顶级项目,18年国内阿里工作接手社区工作,Flink开始迅速发展。
为什么用 Flink
现实生活中的数据并不是某个时间点产生一批数据,而是一条一条产生的,流数据更能接近生活的现实真实的情况
比其它数据框架对比,其它框架都是基于有限数据集的
低延迟、高吞吐、结果的准确性和良好的容错性
与其它进行对比
事务处理
架构图
介绍
传统的数据处理架构都是基于事物处理的,用户来一个事件就处理一个,将过去发生的数据存储在数据库中,当有新的事件触发时读取数据库的数据来做业务处理。
特点
实时性很好,来一个事件就处理一个事件。
能够同时处理的数据有限。
当数据越来越多的时候查询和写入会变得越来越困难
当多个表进行联合查询的时候非常困难
分析处理
架构图
介绍
当数据来了之后先放在业务数据库里,做分析预算的时候把数据库从业务数据库先在一个ETL把数据进行清洗提取出来,然后统一都放入数仓里面。(离线分析)
特点
可以读取不同的数据库将海量的数据按照规则放入数仓里,对数仓进行做统一的查询处理
整个过程非常慢,没发做到实时性
有状态的流式处理
架构图
介绍
当一条数据进来时进行计算,然后将数据存储在本地内存中,并将一条数据的计算结果进行输出,期间做周期性检查将本地存储的数据同步到数据库中。
特点
实时性好,吞吐量高
如果是分布式架构下数据的顺序无法保证
lambda 架构
架构图
介绍
用两套系统(批处理和流处理)同时保证低延迟和结果准确,最终的结果为两套系统处理的结果的结合
特点
能同时保证低延迟和结果准确
某个时间点的结果和能不准确,但最终结果准确
代价太高,当需求进行变动时,需要同时维护两套系统
Flink
架构图
介绍
Storm保证处理的速度但是做不到吞吐量,Spark Streaming 从批处理演变过来可以保证高吞吐但是做不到低延迟。Flink把所有的优点都结合到了一块
特点
低延迟
高吞吐
结果的准确性
良好的容错性