flink为什么可以实现高吞吐?

1、flink是同时实现低延迟和高吞吐?还是在流处理的时候是低延迟低吞吐;在批处理的时候是高延迟高吞吐?
2、我认为flink没有办法同时实现这两个特性?

参与3

1同行回答

匿名用户匿名用户
Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时(Flink Runtime),提供支持流处理和批处理两种类型应用的功能。Flink作为一个针对流数据和批数据的分布式处理引擎,主要用Java代码实现。现有的开源计算方案,把流处理和批处理作为两种...显示全部

Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时(Flink Runtime),提供支持流处理和批处理两种类型应用的功能。Flink作为一个针对流数据和批数据的分布式处理引擎,主要用Java代码实现。现有的开源计算方案,把流处理和批处理作为两种不同的应用类型,因为他们它们所提供的SLA完全不同:流处理一般需要支持低延迟、Exactly-once保证;而批处理需要支持高吞吐、高效处理,所以在实现的时候通常是分别给出两套实现方法,或者通过一个独立的开源框架来实现其中一种处理方案。例如,实现批处理的开源方案有MapReduce、Tez、Crunch、Spark,实现流处理的开源方案有Samza、Storm。

Flink在实现流处理和批处理时,与传统的一些方案完全不同,它从另一个视角看待流处理和批处理,将二者统一起来:Flink完全支持流处理,Flink作为流处理看待时,其输入数据流是无界的;批处理被作为一种特殊的流处理,只是输入数据流被定义为有界的。基于同一个Flink运行时(Flink Runtime),分别提供了流处理和批处理API,而这两种API也是实现上层面向流处理、批处理类型应用框架的基础。

流处理特性:支持高吞吐、低延迟、高性能的流处理;支持带有事件时间的窗口(Window)操作;支持有状态计算的Exactly-once语义;支持高度灵活的窗口(Window)操作,支持基于time、count、session,以及data-driven的窗口操作;支持具有Backpressure功能的持续流模型;支持基于轻量级分布式快照(Snapshot)实现的容错;运行时同时支持Batch on Streaming处理和Streaming处理;F link在JVM内部实现了自己的内存管理;支持迭代计算;支持程序自动优化:避免特定情况下Shuffle、排序等昂贵操作,中间结果有必要进行缓存。

收起
银行 · 2022-01-05
浏览705

提问者

极客led
系统架构师神码
擅长领域: 云计算容器容器云

相关问题

相关资料

问题状态

  • 发布时间:2021-12-24
  • 关注会员:2 人
  • 问题浏览:1043
  • 最近回答:2022-01-05
  • X社区推广