Apache flink是一个框架和分布式处理引擎,用于对无界和有界数据流 进行状态计算。
实时数据处理特性:
- 低延迟
- 高吞吐
- 结果的准确和容错性
来一条处理一条,还是攒一批(一定量、或者一定时间)再处理,同时满足低延迟、高吞吐、容错。
流数据行业:
- 物联网:传感器实时数据采集
- 银行金融业
- 电商、市场营销:数据报表、广告投放
- 电信
数据处理演变过程:
(1)用户事件+后台处理+存储
传统架构下,在数据量变得过大时,吞吐低,响应慢,甚至数据丢失
2,离线处理
能够处理大批量数据,但是响应慢
- 第一代流处理结构
将数据存储在内存,保证低延迟;通过分布式扩容性能,再通过检查点机制保证数据不丢失。但是响应结果数据的有序性不能保证
4.第二代方案
通过lambada结构,使用两套系统,一套用块处理(准实时),保证准确的处理结构,一套实时流处理保证响应;先响应再通过另一套系统调整响应结果。
实施、维护成本高。
5.flink
flink特点
支持有界流、无界流;
事件驱动:由接收到的事件为触发器,进行数据处理。
分层API:顶层更抽象,底层更具体。
dataStream Api用于做实事
dataSet用于做离线。
支持事件-时间、和处理时间予以
精确一次的状态一致性保证
递延次,每秒处理数百万个时间。
Flink vs Spark Streaming
流与微批处理(micro-batching)
架构设计上,spark Streaming就是通过攒批后处理的结构。
数据模型不同
- spark采用RDD模型,spark streaming的Dstream底层也是小批数据RDD的集合
- flink 就是以数据流为概念模型,时间事件序列
运行时的架构
- spark是批计算,通过DAG将job划分stage,一个执行后再执行下一个。
- flink是流执行模式,一个事件在处理完后直接发往下一个节点;根本原因还是事件与rdd微批的区别引起运行架构不同。