Parallel processing 在ApacheStorm中,每个集群节点配置多个worker的原因是什么?

Parallel processing 在ApacheStorm中,每个集群节点配置多个worker的原因是什么?,parallel-processing,stream,apache-storm,Parallel Processing,Stream,Apache Storm,在下文中,我引用了这篇文章:作者:Michael G.Noll 在我看来,工作进程可以承载任意数量的执行器(线程),以运行任意数量的任务(拓扑组件的实例)。为什么要为每个群集节点配置多个工作进程 我看到的唯一原因是一个worker最多只能运行一个拓扑的子集。因此,如果我想在同一集群上运行多个拓扑,我需要为每个集群节点配置与要运行的拓扑数量相同的工作节点数量。 (示例:这是因为我希望在某些群集节点出现故障时保持灵活性。例如,如果只剩下一个群集节点,我需要至少与该群集上运行的拓扑相同数量的工作进程,

在下文中,我引用了这篇文章:作者:Michael G.Noll

在我看来,工作进程可以承载任意数量的执行器(线程),以运行任意数量的任务(拓扑组件的实例)。为什么要为每个群集节点配置多个工作进程

我看到的唯一原因是一个worker最多只能运行一个拓扑的子集。因此,如果我想在同一集群上运行多个拓扑,我需要为每个集群节点配置与要运行的拓扑数量相同的工作节点数量。 (示例:这是因为我希望在某些群集节点出现故障时保持灵活性。例如,如果只剩下一个群集节点,我需要至少与该群集上运行的拓扑相同数量的工作进程,以保持所有拓扑运行。)


还有其他原因吗?特别是,如果只运行一个拓扑,是否有任何理由为每个集群节点配置多个worker?(更好的故障安全性等)

以平衡每个节点的监控程序守护程序的成本和工作程序崩溃的影响风险。如果您有一个大型、单片工作JVM,那么一次崩溃会影响该工作机中运行的所有内容,并且工作机中行为不良的部分会影响更多居民。但是,通过每个节点有多个工人,您可以使您的主管更高效,并且现在有了某种隔离模式,避免了“全有或全无”方法


我所指的共享资源可以是您的或storm的;storm的几个体系结构在每个JVM中共享,可能会产生争用问题。具体来说,我指的是接收和发送线程,以及底层网络部分。有文档记录。

我不熟悉Storm,但我认为其中一个原因是提高计算中涉及的I/O(网络和其他)的并行化水平。例如,您可以使用2个节点,每个节点有2个线程,而不是1个节点有4个线程,并获得一些吞吐量/性能,因为I/O是在中完成的parallel@Lolo您能否解释一下,如果两个进程有两个线程,而不是一个进程有四个线程,I/O将如何受益?