Java 在暴风雨中设计拓扑?

Java 在暴风雨中设计拓扑?,java,apache-storm,Java,Apache Storm,我在网络分析公司工作。我将使用卡夫卡和mongodb。Kafka向storm提供源代码,storm处理数据并将数据存储在mongodb中 要求 Storm收到一个格式为的字符串 过滤数据(某些过滤器用于删除未定义的数据) 必须将elf字符串转换为DBObject 在mongoDB中保存DBobject 对于上述要求,如何创建拓扑(可以使用多少螺栓) 性能是否与螺栓数量成正比 我是否可以选择transactional拓扑或trident拓扑 任何帮助或建议都将非常有用。我建议在设计bolt时遵循U

我在网络分析公司工作。我将使用卡夫卡和mongodb。Kafka向storm提供源代码,storm处理数据并将数据存储在mongodb中

要求

  • Storm收到一个格式为的字符串

  • 过滤数据(某些过滤器用于删除未定义的数据)

  • 必须将elf字符串转换为DBObject

  • 在mongoDB中保存DBobject

  • 对于上述要求,如何创建拓扑(可以使用多少螺栓)

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

    我是否可以选择
    transactional
    拓扑或
    trident
    拓扑


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

    我建议在设计bolt时遵循Unix的理念:“做一件事,把它做好”

    • 筛选数据的螺栓“A”
    • 螺栓“B”将螺栓“A”的输出转换为DBObject,并将其保存到MongoDB
    通过这种方式,您可以保持拓扑结构简单。每个螺栓的责任简单且集中。如果某件事失败了,你完全知道问题出在哪里。当然,您可以告诉Storm每个螺栓需要多少并行化

    我认为您不需要任何特殊的抽象(三叉戟或事务性)。常规的风暴拓扑结构在这里很适合您


    顺便说一下,Storm文档非常优秀

    使用
    TopologyBuilder
    ?你读过关于定义喷口和螺栓,然后连接它们的内容吗?@ChrisMantle首先谢谢。编辑我的问题以获取更多信息谢谢你的想法。喷口-->bolt1-->bolt2-->mongodb。我怀疑bolt2是否依赖于bolt1,所以每次bolt2没有任何任务时,它都会等待bolt1。这不是问题。考虑到你将在AkkActs系统中实现这一点。这并不是要求每个参与者都应该在时间线的任何给定点上做一些事情。Storm也是如此。即使在线程中,线程也会等待其他线程完成它们的工作。我在中读到过这一点,我的意思是