Flink 限流
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink 限流相关的知识,希望对你有一定的参考价值。
参考技术A 原视频链接: https://www.bilibili.com/video/BV124411P7V9?from=search&seid=9418346389470156429写出到Storage,kafka 有限流机制,但在整个ES端,它的Socket都发生得太慢了,可能ES内部没有很好的限流机制,没有办法把反压传播回来,而是比较暴力地整个socket都无法连接了,可能是它内部负载非常高,瞬间给它非常高的压力,它没有把这个压力通过反压机制给传回来。
怎么处理?
即使有动态反压,但为了防止storage在大的数据量下崩溃,可以在Source端做静态的限流。假设我们知道整个系统的负载,可以尝试在Source端做一些调优,在source端做一些限流的措施。
flink 1.8里 kafka的Source 是可以支持限流的。可以set kafka 的 consumer 我的每秒钟不能超过多少的一个消费(setRate 方法。在提交作业前,这个rate就静态写死了。SparkStreaming 里面也有类似的机制去配置)。这样和反压结合在一起就可以达到一个很好的作用。静态限流和动态反压不是相互替代的关系,也不是说有了动态反压,静态限流就完全没有作用了。
Q & A:
5.taskManager 内部导致的生产与消费不匹配的情况:
A:这个也是有可能的,比如在同一个operator chain内部的话,会有多个operator都在同时去执行,其实每个operator执行的速度也是不一样的。同一个taskManager内部是通过内部的channel去传输的(在同一个线程里面),不是走的network buffer,如果下游的消费太慢了,上游的写应该速度会被降下来,它内部应该不会出现假死的情况。
以上是关于Flink 限流的主要内容,如果未能解决你的问题,请参考以下文章