【譯】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
相關文章
相關標籤/搜索