Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache storm 斯托姆:多个工人怎么办?_Apache Storm - Fatal编程技术网

Apache storm 斯托姆:多个工人怎么办?

Apache storm 斯托姆:多个工人怎么办?,apache-storm,Apache Storm,假设我部署了一个包含2个工人的拓扑,拓扑有1个喷口和1个螺栓,有2个任务。那么我的理解是,一名工人将运行喷口执行器和一个螺栓执行器,另一名工人将运行一个螺栓执行器 我的理解正确吗 如果我的理解是正确的,那么我的问题就来了。假设bolt是由Python实现的。由于storm通过stdout/stdin在多个lang螺栓之间传输数据,如果两个工人在不同的主机上运行,spout如何将数据发送到位于另一台主机上的螺栓?我自己做了一个测试。Storm可以将喷口排放的数据正确地传送到不同主机上的螺栓。要给出

假设我部署了一个包含2个工人的拓扑,拓扑有1个喷口和1个螺栓,有2个任务。那么我的理解是,一名工人将运行喷口执行器和一个螺栓执行器,另一名工人将运行一个螺栓执行器

我的理解正确吗


如果我的理解是正确的,那么我的问题就来了。假设bolt是由Python实现的。由于storm通过stdout/stdin在多个lang螺栓之间传输数据,如果两个工人在不同的主机上运行,spout如何将数据发送到位于另一台主机上的螺栓?

我自己做了一个测试。Storm可以将喷口排放的数据正确地传送到不同主机上的螺栓。

要给出更详细的答案:

Storm将向两个螺栓执行器发送数据。对于喷口局部螺栓,这发生在内存中;通过网络连接另一个螺栓。之后,每个bolt实例将把输入传递给本地运行的python进程。因此,您描述的stdout/stdin交付在每台机器上本地进行。在将数据从Java传递到Python之前,将数据传输到每个螺栓


因此,stdout/stdin桥在每个螺栓内使用,而不是从喷嘴到螺栓。

对您的问题稍作澄清。Storm使用各种类型的队列在拓扑的各个组件之间进行数据/元组传输

例如:

1) Storm中的工作线程内通信(同一Storm节点上的线程间):LMAX中断器

2) 工作人员间通信(跨网络的节点到节点):ZeroMQ或Netty

3) 拓扑间通信:Storm中没有内置任何内容,您必须自己处理,例如使用Kafka/RabbitMQ等消息传递系统、数据库等

供进一步参考: