我目前有一个运行在 3 台 Unix 机器上的 Storm 集群(一台用于 Nimbus/Zookeeper,另外两台作为主管)。
我的拓扑是这样配置的:
JMSDataSpout1 & JMSDataSpout2 -> EsperBolt -> JMSBolt
在我的集群环境中,我看到 Nimbus 将 spout 部署到两台不同的机器上。这很好,但我不禁想知道 - 它也会对我的其他两个 bolt 做同样的事情吗?
具体来说,如果我通过 JMSDataSpout1 收到一条消息,但同一台机器上不存在 EsperBolt 实例,会发生什么情况?
Nimbus 会识别这个并将消息转发到另一台机器上运行的 EsperBolt 还是消息丢失了?
最佳答案
它将通过网络将其发送到运行 bolt 的监管者。 Nimbus 甚至不会参与该过程,只是告诉监管者它应该将元组发送到哪里。
关于java - Storm 集群配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23991074/