stream vertices are all the same since they all consume the same upstream result partitions. Therefore, Flink doesn&rsquo;t need to create ShuffleDescriptors for each downstream vertex individually. Instead, it can create them once and cache them to be reused. This will decrease the overall complexity of creating TaskDeploymentDescriptors for tasks from O(n<sup>2</sup>) to O(n).</p>
<p>To decrease the size of RPC messages and reduce the transmission of replicated data over the network, the cached ShuffleDes