Flink流计算编程--流处理引擎的选型

1、需求决定引擎选型

根据马斯洛需求层次理论,可以将流处理引擎的需求分为以下几种层次:
Flink流计算编程--流处理引擎的选型_第1张图片

1、持续性的流处理
2、低延迟的计算结果,亚秒级别的延迟
3、高效可扩展性,每秒百万级的吞吐量
4、容错性,即失败时的可恢复性
5、精确的可重复性
6、可查询性

流处理就是在延迟、吞吐量和正确性之间做一个平衡。

2、当前的流处理引擎包含哪些

Flink流计算编程--流处理引擎的选型_第2张图片

1、Spark Streaming
2、Storm
3、Flink
4、samza
。。。。

3、根据Maslow模型,在不同流处理系统之间做个简单的横向对比

1、连续不断的处理
Flink流计算编程--流处理引擎的选型_第3张图片
都具有处理“流”的能力。

2、低延迟
Flink流计算编程--流处理引擎的选型_第4张图片
Spark Streaming本质是个“micro-batch”,延迟达到秒级。
如果对“延迟性”要求很高,Spark Streaming不适合。

3、高吞吐高扩展
Flink流计算编程--流处理引擎的选型_第5张图片
storm在大规模集群下的吞吐量不行?直接看一组来自Yahoo的benchmark:
Flink流计算编程--流处理引擎的选型_第6张图片

4、容错和excactly_once
Flink流计算编程--流处理引擎的选型_第7张图片
Flink支持excactly_once,通过检查点产生的分布式快照(有状态的operator)+kafka可重发的数据源完成。

5、准确性与可重发
Flink流计算编程--流处理引擎的选型_第8张图片
准确性依赖于对Event Time的支持以及kafka的可部分重发的数据源。

6、查询性
Flink流计算编程--流处理引擎的选型_第9张图片
将计算结果不断的sink到database或者key/value数据库,虽然这会成为潜在的瓶颈。

4、Flink实时查询服务架构

Flink流计算编程--流处理引擎的选型_第10张图片
不断的sink到nosql数据库,提供了一个实时查询的可能性!!!

5、根据需求,确定适合自己的流处理框架

Flink流计算编程--流处理引擎的选型_第11张图片

6、参考

Counting in streams: A hierarchy of needs
Stateful Stream Processing at In-Memory Speed
Yahoo Streaming Benchmarks
Apache Flink Presentation

你可能感兴趣的:(Flink,DataStream)