Flink-初探Flink

初探Flink

0x01 Flink介绍

Apache Flink 是为分布式、高性能、随时可用以及准确的流处理应用程序打造的开源流处理框架。”Flink不仅能提供同时支持高吞吐和xactly-once 语义的实时计算,还能提供批量数据处理

0x02 Flink历史

Flink起源于Stratosphere项目,2014年捐献给Apache基金会,并成立公司data Artisans(后被阿里收购)来实现商业化。阿里巴巴自 2015 年开始改进 Flink,并创建了内部分支 Blink。2019年1月阿里开源了Blink

0x03 批处理与流处理

Flink 将批处理(即处理有限的静态数据)视作一种特殊的流处理。
Flink 分别提供了面向流处理的接口(DataStream API)和面向批处理的接口(DataSet API)。因此,Flink 既
可以完成流处理,也可以完成批处理。Flink 支持的拓展库涉及机器学习(FlinkML)、复杂事件处理(CEP),以及图计算(Gelly),还有分别针对流处理和批处理的Table API

Flink-初探Flink_第1张图片

0x04 传统架构与流处理架构

传统架构:对于后端数据而言,典型的传统架构是采用一个中心化的数据库系统(SQL或者NoSQL),需要新鲜数据的应用程序都依靠数据库实现,分布式文件系统则用来存储不需要经常更新的数据,它们也往往是大规模批量计算所依赖的数据存储方式。
这种架构面临如下问题:

  • 从数据到达到数据分析所需的工作流程太复杂,太缓慢
  • 传统的数据架构太单一,数据库是唯一正确的数据源,每个应用程序都需要通过访问数据库来获得所需的数据。
  • 这种架构有非常复杂的异常的问题处理方法,当异常问题出现时,很难保证系统还能很好的运行。
  • 需要通过在大型分布式系统中不断地更新来维持一致的全局状态,随着系统规模扩大, 维持世纪数据与状态数据间的一致性变得越来越困难,而流处理只需要维持本地数据一致性即可

流处理架构:以流为基础的架构设计让数据记录持续地从数据源流向应用程序,并在各个应用程序间持续流动。没有一个数据库来集中存储全局状态数据,取而代之的是共享且永不停止的流数据,它是唯一正确的数据源,记录了业务数据的历史。在流处理架构中,每个应用程序都有自己的数据,这些数据采用本地数据库或分布式文件进行存储。

参考资料

《Flink基础教程》[美] 埃伦·弗里德曼 [希] 科斯塔斯·宙马斯 著 王绍翾 译

你可能感兴趣的:(Flink)