Flink 反压原理

1、两个线程情况下

Slot一个槽位可以跑一个任务也可以跑多个任务,如果没设置优化,一般一个槽只跑一个任务。

反压是任务之间其中一个任务慢了 其他任务需要等待。

如下两个依赖上下游任务执行过程:NetworkBufferPool中提供可用资源,是属于taskmanager的,NetworkBufferPool中含有2048个buffer

localbuffer库512个bufffer,当然512不是一次申请的,即当数据生成时,先到本地buffer request,本地buffer非空闲时,然后到NetworkBufferPool获取buffer,数据量持续增加,不断申请buffer,buffer不断处理数据,如果task2的output输出变慢,就无法释放buffer,所以导致task2的input资源不足而积压,task2的input也将变慢,同时task1的输出将会受到影响,进而依次类推到task1的输入,导致task1变慢或暂停。

如果增加到3个task了,输入输出是6个task;2048/6将<512预制资源,task1的释放将不释放到localbuffer,将直接释放到BufferPool。

2、两个任务跨网络传输

如何知道下游任务执行状态,通过netty接收和反序列化机制等获取运行状态,通信频繁,效率不高。状态传输不及时。

所以设置为一个中间buffer,上游任务输出到这个buffer中,此buffer设置阈值,上下游不进行状态交换,而是共同访问一个缓存,下游查看缓存持续获取数据,上游监测低于阈值就往里写数据。达到阈值时,上游将不写数据进缓存,上游停止。

 

3、如何知道反压了?

jobmanager负责监控任务的反压状态,定时查看每个task的状态,是抽样查看不是每个task都查看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值