Flink
概念
Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算
为什么选择flink
流数据更真实的反映我们的生活方式
低延迟 flink毫秒级 spark streaming 秒级
高吞吐 (阿里每秒使用Flink处理4.6PB 双十一大屏)
结果的准确性和良好的容错性
名字解释
状态
flink spark 都是有状态的,比如 底层都维护了一个累加器,来保存当前的状态,点击、浏览次数之类的,还可以把状态存储到hdfs中
时间语义化
比如说1970-01-01 00.00 .07发生了点击事件,遇到了网络延迟,可能过了一天才发送到机器上,那sparkstreaming就获取不到那个时间的点击事件了,因为他是按照到达机器的时间,没有办法按照事件本来发生的时间去处理,但flink不会 他仍会通过自己的机制把数据放到【00.00.00,00.00.10】时间窗口中去。他是处理的事件时间。
事件驱动
flink 来一条数据 一个事件就会驱动程序运行
spark 不是,它是要攒一批数据,才能驱动
前端的话 比如ajax 点击按钮 定时器
后端的话 异步IO
事件时间和处理时间
事件时间:事件发生的时间
处理时间:事件由于网络延迟等问题,到达机器的时间,而spark仅支持处理时间
flink支持事件时间(event-time)和处理时间(processing-time)