twitter storm worker只能获得拓扑的一部分吗?

zxlwwiss  于 2021-06-24  发布在  Storm
关注(0)|答案(2)|浏览(282)

假设您有以下拓扑
喷口

spout (sends tuple to )bolt1
bolt1 (sends tuple to) bolt2

以及以下设置:
3名工艺工人

spout,parallel hint=1
bolt1, parallel hint=2
bolt2,parallel hint=3

我的问题是:
我在工人中的以下(可能)分配是否正确:

Worker1                  
   spout1
   bolt 2 
Worker2
   bolt 1
   bolt 2
Worker3
  bolt1
  bolt 2

在上述条件下,bolt1(来自worker2,worker3)会从spout得到任何元组吗?
工人1的螺栓2是否会从螺栓1获得任何数据?
我们是否必须在工人数量和喷嘴/螺栓之间保持比例,以便每个工人至少获得一个喷嘴/螺栓?

ekqde3dh

ekqde3dh1#

简言之,您不必担心哪个工人正在处理特定的任务。storm负责路由消息,这样您就不需要关注它了。在这种情况下,一切都将按预期工作:喷口将元组发送给bolt1 worker,botl1 worker将元组发送给bolt2 worker,而不管它们在集群中的物理位置如何。
也就是说,你对工人之间的任务分配有点不正确。一个工人一次只能包含一个螺栓或喷嘴的任务。不过,一个主管可能要运行多个工人,在这种情况下,您将有多个不同螺栓或喷嘴的任务在同一硬件上运行,但不在同一进程中。

w8biq8rn

w8biq8rn2#

你需要区分不同的任务是如何在你的工人之间分配的,以及你的管和螺栓之间的分组。分组决定元组在拓扑中的路由方式。例如,如果在spout1和bolt1之间使用all分组,bolt1中的每个任务都将接收spout1发送的每个元组。storm有许多不同的分组,我建议您仔细阅读storms概念页这应该回答您的问题:https://github.com/nathanmarz/storm/wiki/concepts.

相关问题