我们已经配置了一个带有一个nimbus服务器和三个主管的风暴群集。发布了三种拓扑,它们进行如下不同的计算
拓扑1:从MongoDB读取原始数据,进行一些计算并存储结果
拓扑2:读取topology1的结果并进行一些计算并将结果发布到队列
拓扑3:从队列中消耗topology2的输出,调用REST服务,从REST服务获得回复,在MongoDB集合中更新结果,最后发送电子邮件。
作为新的蜜蜂风暴,寻找以下问题的专家意见
目前用于连接MongoDB,MySql,Mq,REST URL的配置在java文件中是硬编码的。为每个客户定制源文件不是一个好习惯。
想要登录每个阶段[Spouts and Bolts],在哪里发布/存储集群可以使用的log4j.xml?
从螺栓执行REST调用等阻塞调用是否正确?
非常感谢任何帮助。
答案 0 :(得分:0)
由于每个拓扑只是一个Java程序,只需将配置传递到Java Jar,或将路径传递给文件即可。拓扑可以在启动时读取文件,并在实例化时将任何配置传递给组件。
Storm使用开箱即用的slf4j,它应该很容易在你的拓扑中使用。如果使用默认配置,则应该能够通过UI查看日志,或者转储到磁盘。如果您无法找到它们,可以使用许多指南来帮助您,例如: http://www.saurabhsaxena.net/how-to-find-storm-worker-log-directory/
有了风暴,您可以灵活地将并发推送到组件级别,并通过实例化多个螺栓来获取多个执行程序。这可能是最简单的方法,我建议您从那里开始,然后在拓扑内部引入执行器的复杂性,以异步进行HTTP调用。
有关风暴中并行性的规范概述,请参阅http://storm.apache.org/documentation/Understanding-the-parallelism-of-a-Storm-topology.html。开始简单,然后根据需要进行调整,就像任何事情一样。