2016-03-21 104 views
0

我们已经配置了一个风暴集群,包含一个nimbus服务器和三个主管。发布时间三种拓扑这确实不同的计算如下为生产集群配置风暴集群

  • Topology1:读取MongoDB的原始数据,做一些计算和存储回结果

  • Topology2:读取topology1的结果,并做了一些计算和发布结果到队列

  • 拓扑3:从队列中获取拓扑2的输出,调用REST服务,从REST服务获取答复,更新MongoDB集合中的结果,最后发送一封电子邮件。

随着新蜂强攻,寻找以下问题

  1. 专家的建议是有办法的所有外部化的配置,例如config.json,可以被所有被称为拓扑结构?

当前用于连接MongoDB,MySql,Mq,REST URL的配置在java文件中被硬编码。为每个客户定制源文件是不好的做法。

  1. 想要登录每个阶段[Spouts and Bolts],在哪里发布/存储可供群集使用的log4j.xml?

  2. 是否正确执行像螺栓REST调用阻塞调用?

任何帮助将不胜感激。

回答

0
  1. 由于每个拓扑只是一个Java程序,只需将配置传递到Java Jar,或将路径传递到文件。拓扑可以在启动时读取文件,并在将其实例化时将任何配置传递给组件。

  2. 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了解风暴中并行性的规范概述。开始简单,然后根据需要调整,就像任何事情一样。

+0

Thanks @Cory。 #1和#2的漂亮大开眼界。我对#3有点怀疑,因为据我了解,风暴是一个用于分布式计算的平台,主要是CPU绑定作业。用例#3,spout是简单的Mq消费者和螺栓触发REST调用数据,这是IO绑定调用。看起来#3反对风暴的强度(CPU边界计算)。请澄清。 –