1. Flink是什么
Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算。
2. 为什么选择Flink
流数据更真实地反映了我们的生活方式
• 传统的数据架构是基于有限数据集的
• 我们的目标
➢ 低延迟
➢ 高吞吐
➢ 结果的准确性和良好的容错性
3. 传统数据处理架构
- 事务处理
数据计算和数据存储分开,关系型数据库联表查询,实时性比较好,问题是能够同时处理的事件有限,海量数据高并发做不到。
- 分析处理
将数据从业务数据库复制到数仓,再进行分析和查询
先对数据进行ETL整理,然后放到数仓里,统一处理,离线处理,不能实时处理。高并发上去了,低延迟做不到
- 有状态的流式处理
数据放在本地内存里,存储为本地状态,代替关系型数据库存储数据的表,高并发做集成。周期性检查点,故障恢复。时间顺序问题。
- 流处理的演变
4. Flink主要特点
- 事件驱动(Event-driven)
- 分层API
- 越顶层越抽象,表达含义越简明,使用越方便
- 越底层越具体,表达能力越丰富,使用越灵活
Flink 的其它特点:
• 支持事件时间(event-time)和处理时间(processing-time) 语义
• 精确一次(exactly-once)的状态一致性保证
• 低延迟,每秒处理数百万个事件,毫秒级延迟
• 与众多常用存储系统的连接
• 高可用,动态扩展,实现7*24小时全天候运行
5. Flink vs Spark Streaming
- 流(stream)和微批(micro-batching)
延迟上不同:SparkStreaming几百毫秒,Flink几毫秒,本质上架构还是不同
Flink设置成有界做批处理
- 数据模型
– spark 采用 RDD 模型,spark streaming 的 DStream 实际上也就是一组小批数据 RDD 的集合
– flink 基本数据模型是数据流,以及事件(Event)序列 (不存在数据集)
- 运行时架构
– spark 是批计算,将 DAG 划分为不同的 stage,一个完成后才可以计算下一个
– flink 是标准的流执行模式,一个事件在一个节点处理完后可以直接发往下一个节点进行处理