1. Flink是什么

Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算。

2. 为什么选择Flink

流数据更真实地反映了我们的生活方式
• 传统的数据架构是基于有限数据集的
• 我们的目标
➢ 低延迟
➢ 高吞吐
➢ 结果的准确性和良好的容错性

3. 传统数据处理架构

  • 事务处理

图片.png数据计算和数据存储分开,关系型数据库联表查询,实时性比较好,问题是能够同时处理的事件有限,海量数据高并发做不到。

  • 分析处理

将数据从业务数据库复制到数仓,再进行分析和查询
图片.png先对数据进行ETL整理,然后放到数仓里,统一处理,离线处理,不能实时处理。高并发上去了,低延迟做不到

  • 有状态的流式处理

图片.png
数据放在本地内存里,存储为本地状态,代替关系型数据库存储数据的表,高并发做集成。周期性检查点,故障恢复。时间顺序问题。

  • 流处理的演变

图片.png
图片.png

4. Flink主要特点

  • 事件驱动(Event-driven)

图片.png

  • 分层API
  1. 越顶层越抽象,表达含义越简明,使用越方便
  2. 越底层越具体,表达能力越丰富,使用越灵活

图片.png
Flink 的其它特点:
• 支持事件时间(event-time)和处理时间(processing-time) 语义
• 精确一次(exactly-once)的状态一致性保证
• 低延迟,每秒处理数百万个事件,毫秒级延迟
• 与众多常用存储系统的连接
• 高可用,动态扩展,实现7*24小时全天候运行

5. Flink vs Spark Streaming

  • 流(stream)和微批(micro-batching)

图片.png
延迟上不同:SparkStreaming几百毫秒,Flink几毫秒,本质上架构还是不同
Flink设置成有界做批处理

  • 数据模型

– spark 采用 RDD 模型,spark streaming 的 DStream 实际上也就是一组小批数据 RDD 的集合
– flink 基本数据模型是数据流,以及事件(Event)序列 (不存在数据集)

  • 运行时架构

– spark 是批计算,将 DAG 划分为不同的 stage,一个完成后才可以计算下一个
– flink 是标准的流执行模式,一个事件在一个节点处理完后可以直接发往下一个节点进行处理