一、Flink 流处理简介
Apache Flink 是一个框架和分布式的的处理引擎 ,用于对无界和有界数据流进行计算状态计算。
二、为什么选择Flink?
数据流可更加真实反映我们的生活方式;
传统的数据架构是基于有限的数据集;
目标:低延迟,高吞吐,结果的 准确性和良好的容错性;
三、传统的数据处理架构
- 事务处理
- 分析处理
- 将数据从业务数据库复制到数仓,再进行分析和查询
有状态的流处理
流处理的演变
• lambda 架构
用两套系统 同时保证低延迟和结果准确
流处理的演变
基于流的世界观
- 在Flink的世界观中,一切都是由流组成,离线数据就是有界数据流,实时的数据就是无界数据流;这就是所谓的有界和无界数据流;
分层API
越顶层的越抽象,表达含义越简明,使用越灵活方便;
越底层的越具体,表达能力越丰富,使用越灵活;
Flink 的其他特点 - 支持事件时间(event-time)和处理时间(processing-time)语义
- 精确一次(exactly-once)的状态一致性保证;
- 低延迟,每秒处理数百万个事件,毫秒级延迟;
- 与众多存储系统相连接;
- 高可用,动态扩展,实现7 * 24小时全天候运行;
Flink vs Spark Streaming
- 流(stream)和微批(micro-batching)
- 数据模型
- spark 采用RDD模型, Spark Streaming 的 DStream 实际也是一组组小批数据RDD 的集合
- flink 基本数据模型是数据流,以及事件(Event)序列
运行时架构
- flink 是标准的流执行模式,一个事件在节点处理完成之后,可以直接发往下一个环节;
- spark 是批处理,将DAG划分为不同的statge,一个完成之后才可以计算下一个;