【译】A Deep-Dive into Flink's Network Stack(2)

本篇翻译接上一篇

对于下图所示的示例,我们将假设4的并行性和具有两个任务管理器的部署,每个任务管理器提供2个插槽。 TaskManager 1执行子任务A.1,A.2,B.1和B.2,TaskManager 2执行子任务A.3,A.4,B.3和B.4。 在任务A和任务B之间的随机类型连接中,例如从keyBy(),在每个TaskManager上有2x4个逻辑连接,其中一些是本地的,一些是远程的:

167c5bddc2323f7f0e91bd04701fec1075d.jpg

不同任务之间的每个(远程)网络连接将在Flink的网络堆栈中获得自己的TCP通道。 但是,如果同一任务的不同子任务被安排到同一个TaskManager,则它们与同一个TaskManager的网络连接将被多路复用并共享一个TCP信道以减少资源使用。 在我们的例子中,这适用于A.1→B.3,A.1→B.4,以及A.2→B.3和A.2→B.4,如下图所示:

b893bfa3fa8e9799c271c4bca915f6d912e.jpg

每个子任务的结果称为ResultPartition,每个子结果分成单独的ResultSubpartitions  - 每个逻辑通道一个。 在堆栈的这一点上,Flink不再处理单个记录,而是将一组序列化记录组装到网络缓冲区中。 每个子任务可用于其自己的本地缓冲池中的缓冲区数量(每个发送方和接收方各一个)最多限制为一个

#channels * buffers-per-channel + floating-buffers-per-gate

 

转载于:https://my.oschina.net/u/1262062/blog/3060930

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值