flink反压机制
文章平均质量分 95
weixin_45626756
这个作者很懒,什么都没留下…
展开
-
flink的反压机制(源码剖析)
背景在前文我们对flink早期基于TCP的反压和现在基于信任值的反压机制进行了剖析 Flink反压机制剖析,本文主要从源码的角度对flink基于Credit&BackLog的反压机制从源码的角度剖析其具体实现过程。基于TCP反压的问题TaskManager之间会启动一个TCP通道进行数据交互,TaskManager的所有Task通过多路复用使用同一个TCP通道。因此,当下游因一个Task处理能力不足造成反压时,就会导致整个TCP通道阻塞。即使其他Task还有空余的Buffer也无法接受数据原创 2022-01-07 11:01:01 · 1245 阅读 · 0 评论 -
flink的内存管理
背景之前我们介绍了flink中task的运行机制,以及数据在task线程内部以及不同TaskManager之间的流转过程。其中,网络传输Buffer数据以及task接收Buffer数据都会申请对应的Segment内存段,其中涉及堆内和堆外内存。这里我们从NetworkBuffer资源管理、flink的内存模型和MemorySegment具体分析一下flink中的内存管理机制。NetworkBuffer资源管理之前我们介绍了flink中网络传输数据是通过NetworkBuffer的数据结构作为字节容器,原创 2022-01-04 17:57:25 · 2562 阅读 · 0 评论 -
flink中的网络数据传输流程
背景本文紧接上文StreamTask数据流,上文我们讲解了每个executor中的task中的数据是如何进行读取转换写出的过程。本文我们将讲解executor之间的数据传输流程,既包括flink的shuffle实现,以及StreamTask中InputChannel和ResultSubPartition的读写数据细节。...原创 2021-12-28 19:38:37 · 1734 阅读 · 0 评论 -
Flink反压机制剖析
网络流控的概念与背景1.为什么需要网络流控如果 Receive Buffer 是有界的,这时候新到达的数据就只能被丢弃掉了。如果 Receive Buffer 是无界的,Receive Buffer 会持续的扩张,最终会导致 Consumer 的内存耗尽。2.网络流控的实现:静态限速我们在Producer端实现一个静态限流,Producer经过限流器流量降低到和Consumer端相同,这样的话 Producer 端的发送速率跟 Consumer 端的处理速率就可以匹配起来了,就不会导致上述问题原创 2020-09-15 21:15:56 · 773 阅读 · 0 评论