Flink 如何处理背压
Posted @SmartSi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink 如何处理背压相关的知识,希望对你有一定的参考价值。
传送门:Flink 系统性学习笔记
Flink 1.4 版本
人们经常会问 Flink 是如何处理背压的。答案很简单:Flink 不使用任何复杂的机制,因为它不需要任何处理机制。只凭借数据流引擎,就可以从容地应对背压。在这篇博文中,我们介绍一下背压。然后,深入了解 Flink 是如何在任务之间传送缓冲区中的数据,并展示流数传输自然双倍下降的背压机制。我们最终通过一个小实验展示这一点。
1. 什么是背压
像 Flink 这样的流处理系统需要能够从容地处理背压。背压是指系统在一个临时负载峰值期间接收数据的速率大于其处理速率的一种场景(可以理解为处理速度慢,接收速度快,系统处理不了接收的数据)。许多日常情况都会导致背压。例如,垃圾回收卡顿可能导致流入的数据堆积起来,或者数据源可能出现发送数据过快的峰值。如果处理不当,背压会导致资源耗尽,甚至导致数据丢失。
让我们看一个简单的例子。假设一个数据流管道包含一个数据源,一个流作业和一个 Sink,以每秒 500 万个元素的稳定速度处理数据,如下所示(一个黑条代表 100 万个元素,下图是系统某一秒的快照):
以上是关于Flink 如何处理背压的主要内容,如果未能解决你的问题,请参考以下文章