假设您具有以下拓扑
喷口
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
答案 0 :(得分:2)
您需要区分不同任务在工作人员之间的分配方式以及您的喷口和螺栓之间的分组。分组决定元组在拓扑中的路由方式。例如,如果你使用spout和bolt1之间的所有分组,bolt1中的每个任务都将接收由spout发送的每个元组。 Storm有许多不同的分组,我建议你仔细阅读风暴概念页面,这应该回答你的问题:https://github.com/nathanmarz/storm/wiki/Concepts。
答案 1 :(得分:2)
简而言之,您无需担心哪个工作人员正在处理特定任务。 Storm负责路由消息,因此您无需关注它。在这种情况下,一切都将按预期工作:spout会将元组发送给bolt1 worker,而botl1 worker会将元组发送给bolt2 worker,无论它们位于集群中的哪个位置。
那就是说,你对工人之间的任务分配有些不正确。工人一次只能包含一个螺栓或喷口的任务。但是,主管可能正在运行多个工作人员,在这种情况下,您将在同一硬件上运行不同螺栓或喷口的多个任务,但不能在同一个过程中运行。