TPL数据流,最大并行度与负载平衡

4

通过TPL数据流,可以为块分配MaxDegreeOfParallelism以并行运行,另一种方法是通过将源连接到多个目标来'负载平衡'负载,通过限制每个目标块的BoundedCapacity。

问题在于,这两种方法有何区别?如果我可以设置MaxDegreeOfParallelism,为什么还要费心进行负载平衡呢?


1
那种负载均衡方法没有意义。 - i3arnon
1个回答

1
MaxDegreeOfParallelism是在任务调度程序级别强制运行任务实例的并发数量,这正是你想要的,因为你可以轻松地针对数据流网络的每次调用设置它。在这种情况下,所谓的“负载均衡”并不是一个真实可行的概念。
链接到多个目标需要使用广播块(你不想这样做,因为它会向所有目标块发布)或一个谓词来决定流程。这会变得混乱且非常有状态,因为你必须跟踪哪个块有下一条消息。TPL更符合Actor模型,其中消息就是状态,因此尝试引入这种动态链接状态与模型不符。

1
你错了,通过链接到多个有界块(没有任何谓词或“BroadcastBlock”)可以相当容易地实现负载平衡。但是@i3arnon是正确的,用这种方式做没有意义。 - svick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接