并行处理—在ApacheStorm中为每个集群节点配置多个工作进程的原因是什么?

p8ekf7hl  于 2021-06-21  发布在  Storm
关注(0)|答案(1)|浏览(250)

在下面,我将参考这篇文章:理解michaelg的storm拓扑的并行性。诺尔
在我看来,工作进程可以承载任意数量的执行器(线程)来运行任意数量的任务(拓扑组件的示例)。为什么要为每个群集节点配置多个工作进程?
我看到的唯一原因是一个worker最多只能运行一个拓扑的子集。因此,如果我想在同一个集群上运行多个拓扑,我需要为每个集群节点配置与要运行的拓扑数量相同的worker数量(示例:这是因为我希望在某些集群节点失败的情况下保持灵活性。例如,如果只剩下一个集群节点,则我需要至少与在该集群上运行的拓扑一样多的工作进程,以便保持所有拓扑运行。)
还有其他原因吗?特别是,如果只运行一个拓扑,是否有任何理由为每个集群节点配置多个worker(更好的故障安全性等)

j5fpnvbx

j5fpnvbx1#

以平衡每个节点的监控程序守护程序的成本和工作进程崩溃的影响风险。如果您有一个大型的、单片的worker jvm,那么一次崩溃会影响该worker中运行的所有东西,而且您的worker中行为不好的部分会影响更多的居民。但是通过在每个节点上有多个worker,您可以提高您的主管的效率,并且现在有了一个隔板模式,避免使用all or nothing方法。
我所指的共享资源可以是您的或storm的;storm的体系结构的几个部分是每个jvm共享的,可能会产生争用问题。我具体指的是接收和发送线程,以及底层的网络部件。记录在这里。

相关问题