Flink 概述 | 青训营笔记

98 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第6天

第二节课「流/批/OLAP 一体的 Flink 引擎」的内容主要包含 4 个方面:Flink 概述、Flink 整体架构、Flink 架构优化、案例讲解。这篇文章为 Flink 概述的相关内容。

流式计算引擎发展历史

  • Storm

    • Storm API 的 low-level 以及开发效率低下
    • 一致性问题:Storm 更多考虑到实时流计算的处理时延而非数据的一致性保证
  • Spark Streaming

    • Spark Streaming 相比于 Storm 的低阶 API 以及无法正确性语义保证,Spark 是流处理的分水岭:第一个广泛使用的大规模流处理引擎,既提供较为高阶的 API 抽象,同时提供流式处理正确性保证
  • Flink

    从产品技术来看,Flink 作为一个最新的实时计算引擎,具备如下流计算技术特征:

    • 完全一次保证:故障后应正确恢复有状态运算符中的状态
    • 低延迟:越低越好。许多应用程序需要亚秒级延迟
    • 高吞吐量:随着数据速率的增长,通过管道推送大量数据至关重要
    • 强大的计算模型:框架应该提供一种编程模型,该模型不限制用户并允许各种各样的应用程序在没有故障的情况下,容错机制的开销很低
    • 流量控制:来自慢速算子的反压应该由系统和数据源自然吸收,以避免因消费者缓慢而导致崩溃或降低性能
    • 乱序数据的支持:支持由于其他原因导致的数据乱序达到、延迟到达后,计算出正确的结果
    • 完备的流式语义:支持窗口等现代流式处理语义抽象
    • Google Dataflow Model 的开源引擎实现

主要的流式计算引擎能力对比

StormSpark StreamingFlink
Streaming ModelNativemini-batchNative
一致性保证At Least/Most OnceExactly-OnceExactly-Once
延迟低延迟(毫秒级)延迟较高(秒级)低延迟(毫秒级)
吞吐LowHighHigh
容错ACKRDD Based CheckpointCheckpoint (Chandy-Lamport)
StateFulNoYes (DStream)Yes (Operator)
SQL支持NoYesYes

Flink 开源生态

Apache Flink 在开源生态上的能力比较强大,可以支持:

  1. 流批一体:支持流式计算和批式计算
  2. OLAP:Flink 可以支持 OLAP 这种短查询场景
  3. Flink ML:pyFlink、ALink、AIFlow 等生态支持 Flink 在 ML 场景的应用
  4. Gelly:图计算
  5. Stateful Function:支持有状态的 FAAS 场景

个人总结

了解了流式计算引擎的发展历史、主要的流式计算引擎能力对比和 Flink 开源生态。

参考