Flink流数据如何在不同的TaskManager之间流动?

原创 马申跃 架构与英文 3天前

收录于话题

#Flink6

#大数据26

#大数据常用技术20

流数据如何在Flink 不同的TaskManager之间流动?这是任何一位想深入研究Flink内核的伙伴都绕不过去的逻辑,之前写过一篇文章《流数据如何在Flink新线程模型上流动》,主要通过Demo调式研究了Flink在local模式下的数据流动过程,其完全是在同一个TaskManager内,Inputchannel使用的都是LocalInputchannel,这次好奇下RemoteInputChannel和ResultPartition吧。消费者生产者模型应该都听说过,让我们一起分析BufferBuilder和BufferConsumer组合是如何完美的应用到Flink上,从而达到数据处理线程和发送线程的解耦。经过大量源码研究,笔者终于理清了实现逻辑,本文试图用一个最简单的图去描述它,如下图其流程逻辑清晰明了,建议读者结合源码去看加深印象。

图片

ResultPartition由ResultsubPartition组成,ResultsubPartition是streaming和batch的抽象接口,分别对应PipelinedSubpartition和BoundBlockingSubpartition(其产生的是文件)。

UserFunct

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值