【译】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个逻辑链接,其中一些是本地的,一些是远程的:翻译

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

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

#channels * buffers-per-channel + floating-buffers-per-gate
相关文章
相关标签/搜索