【问题标题】:Designing topology in storm?在风暴中设计拓扑?
【发布时间】:2013-08-30 19:59:24
【问题描述】:

我从事网络分析工作。我将使用 kafka、storm 和 mongodb。 Kafka 给storm 提供source,Storm 处理数据并将数据存储在mongodb 中。

要求

  1. Storm 收到一个elf 格式的字符串。

  2. 过滤数据(一些过滤器可以删除未定义的数据)。

  3. 必须将elf字符串转换为DBObject

  4. 将 DBobject 保存在 mongoDB 中。

对于以上需求,如何创建拓扑(可以使用多少个bolt)。

性能是否与螺栓数量成正比?

我可以选择transactional 拓扑还是trident 拓扑?

任何帮助或建议都会非常有用。

【问题讨论】:

  • 使用TopologyBuilder?您是否阅读过 the Storm tutorial 关于定义 Spout 和 Bolt,然后将它们连接起来的内容?
  • @ChrisMantle 首先感谢。编辑我的问题以获取更多信息

标签: java apache-storm


【解决方案1】:

我建议在设计bolt时遵循Unix的哲学:“做一件事,做好”。

  • 过滤数据的螺栓“A”。
  • 螺栓“B”将螺栓“A”的输出转换为 DBObject 并将其保存到 MongoDB。

这样可以保持拓扑简单。每个螺栓的简单而集中的责任。如果某件事情失败了,你就知道到底是什么问题。当然,你可以告诉 Storm 每个 bolt 需要多少并行化。

我认为您不需要任何特殊的抽象(三叉戟或事务性)。常规的 Storm 拓扑在这里可以很好地为您服务。

顺便说一句,Storm 文档非常棒!

【讨论】:

  • 感谢您的想法。 Spout ---> bolt1 ----> bolt2 ----> mongodb.我怀疑 bolt2 是否依赖于 bolt1,所以每次即使 bolt2 没有任何任务,它也会等待 bolt1。
  • 这不是问题。考虑您将在 Akka 演员系统中实现这一点。并不要求每个演员都应该在时间线的任何给定点做某事。 Storm 也是如此。
  • 即使在线程中,线程也会等待其他人完成他们的工作。
  • 没错,我的意思是github.com/nathanmarz/storm/wiki/…
猜你喜欢
  • 2013-08-06
  • 1970-01-01
  • 2016-08-21
  • 1970-01-01
  • 1970-01-01
  • 2018-08-08
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多