【问题标题】:An advice required for scalable signal processing architecture with Storm使用 Storm 的可扩展信号处理架构所需的建议
【发布时间】:2018-04-04 23:04:20
【问题描述】:

我们正在开发一个基于 STORM 的物联网信号处理平台,并考虑到水平可扩展性。该平台旨在同时处理多个信号(从 MQTT 主题收集),通过对它们应用一系列信号处理算法。到目前为止,我们的解决方案包括in this diagram

  • MQTT 服务器,主题名称包含 信号(例如,“患者/1”、“患者/2”、……、“患者/N”。

  • 一个 MQTT spout,它订阅了其名称的所有主题
    匹配模式“患者/+”(因此,接收所有的值 每个信号和标识符)。我们正在使用这个
    方法,因为我们不知道在某些时候可以接收到多少信号 点,我们不希望每个可能的 Spout 都不同
    信号!

  • 几个链式螺栓,每个信号处理步骤一个
    (算法)。

我们解决方案的初步测试运行良好。通过为 spout 建立并行提示,我们能够注意到 Storm 如何将负载分布到多台机器上,从而提高了整个系统的吞吐量。然而,使用这种配置——据我们所知——我们有一个单点故障:MQTT spout,它现在将是在 Storm 的一个节点中运行的单个实例。我们知道为此类 Spout 启用并行提示不是一个好主意(因为我们尝试过),因为它会影响为同一主题创建多个 MQTT 订阅者,因此会传播多个在处理螺栓上复制相同的信号。

所以,我们现在的问题是:

  • 您认为我们目前的方法有什么缺点吗,主要是 考虑到我们的可扩展性要求?

  • 鉴于 Storm 的集群模型,具有单个 MQTT spout (没有并行提示)可以被认为是一个单点 失败? (例如,如果它正在运行的机器发生故障),或者 Storm会保证在集群的其他机器上恢复吗?

  • 鉴于我们的目标是可扩展的架构,我们正在 考虑“可集群化”的 MQTT 服务器,例如 EMQ 或 ActiveMQ 信号的入口点。然而,我们认为我们的单身 MQTT spout 在某些时候可能会成为瓶颈。你能给我们吗 关于如何扩展读取数据所需资源的一些建议 来自MQTT主题,避免了冗余值的问题 读数?

亲切的问候!

【问题讨论】:

    标签: mqtt apache-storm


    【解决方案1】:

    您可能想看看称为 MQTT 共享订阅的东西。

    这是 MQTT v5.0 规范中的一个新的可选功能(但在许多实现 MQTT v3.1 的代理中存在一些专有实现,例如 IBM MessageSight 和 HiveMQ)。这允许多个订阅者订阅同一个主题并让消息在它们之间进行负载平衡,而不是将所有消息传递给所有订阅者。

    我还不知道有任何(生产)代理实现了 MQTT v5.0(2018 年 4 月)。

    【讨论】:

      猜你喜欢
      • 2020-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-06
      • 1970-01-01
      • 1970-01-01
      • 2011-06-01
      • 2010-12-17
      相关资源
      最近更新 更多