AFAIK风暴喷口/螺栓实例独立运行,无需任何通信。
例如,考虑风暴wordcount拓扑
https://github.com/nathanmarz/storm-starter/blob/master/src/jvm/storm/starter/WordCountTopology.java
builder.setBolt("split", new SplitSentence(), 8).shuffleGrouping("spout");
builder.setBolt("count", new WordCount(), 12).fieldsGrouping("split", new Fields("word"));
它定义了一个带有2个螺栓的拓扑结构。
SplitSentence螺栓有8个实例,WordCount螺栓有12个实例并行运行。
这些螺栓实例之间是否有任何通信?
如果我的要求是只生成相对字数,那么它应该用前一个时间戳和字数检查当前字数,并更新当前时间戳并计算为旧时间戳和计数。
如何确保所有螺栓实例都可以使用旧数据(相同的数据同步)?
例如: 正常字数统计示例(流式传输):
时间--------------句子-------------字数
上午10:00 - >你好世界你好 - >你好2,世界1
上午10:15 - >你好世界你好另一个世界 - >你好2,世界2,另一个1
相对字数:
时间--------------句子-------------字数
上午10:00 - >你好世界你好 - >你好2,世界1
上午10:15 - >你好世界你好另一个世界 - >世界1,另一个1
它应该与之前的字数有所不同。
=====================================
Storm是否提供了bolt实例之间的任何同步或通信?
或者我们是否需要使用Zookeeper进行数据同步?
否则还有其他更好的方法吗?