【发布时间】:2016-01-08 15:00:47
【问题描述】:
我遇到以下情况:
- 有许多螺栓计算不同的值
- 这些值被发送到可视化螺栓
- 可视化螺栓打开一个网络套接字并发送值以某种方式可视化
问题是,可视化 bolt 始终是相同的,但它会针对可以作为其输入的每种类型的 bolt 发送带有不同标头的消息。例如:
- BoltSum 计算总和
- BoltDif 计算差异
BoltMul 计算倍数
所有这些螺栓都使用 VisualizationBolt 进行可视化
- 本例中有 3 个 VisualizationBolt 实例
我的问题是,我是否应该创建 3 个独立的实例,每个实例都有一个线程,例如
builder.setBolt("forSum", new VisualizationBolt(),1).globalGrouping("bolt-sum");
builder.setBolt("forDif", new VisualizationBolt(),1).globalGrouping("bolt-dif");
builder.setBolt("forMul", new VisualizationBolt(),1).globalGrouping("bolt-mul");
或者我应该执行以下操作
builder.setBolt("forAll", new VisualizationBolt(),3)
.fieldsGrouping("forSum", new Fields("type"))
.fieldsGrouping("forDif", new Fields("type"))
.fieldsGrouping("forMul", new Fields("type"));
并从之前的每个螺栓发出类型,以便可以根据它对它们进行分组?
有什么优势?
另外,我是否应该期望每次 bolt-sum 都会转到第一个可视化 bolt,bolt-dif 会转到第二个可视化 bolt,而 bolt-mul 会转到第三个可视化 bolt?不会混在一起吧?
我认为应该是这样,但它目前不在我的实现中,所以我不确定这是一个错误还是我遗漏了什么?
【问题讨论】:
-
字段分组在这里正确解释:nrecursions.blogspot.in/2016/09/…
标签: apache-storm