【问题标题】:How to scale Node-RED horizontally across a cluster of nodes?如何在节点集群中水平扩展 Node-RED?
【发布时间】:2016-07-21 16:19:51
【问题描述】:

是否可以在节点集群上横向扩展 Node-RED? 找不到相同的任何文档。我的场景是每秒处理数百万个事件并使用 Node-RED 实时处理它们。

【问题讨论】:

标签: node-red


【解决方案1】:

我在 Google Groups Node-RED 论坛 (https://groups.google.com/forum/#!topic/node-red/Nx1WWqBeLbI) 上发布了这个问题,并得到了有趣的答案。记下下面的各种选项。

如果您的输入是通过 HTTP 进行的,那么您可以使用任何标准负载平衡技术在运行相同 Node-RED 流的节点集群上对请求进行负载平衡 - 例如可以使用 HAProxy、Nginx 等。重要的是要注意,由于我们在许多节点上运行相同的流程,我们不能在上下文变量中存储任何状态。我们必须将状态存储在 Redis 等外部服务中。

如果您通过 MQTT 摄取,那么我们有多种选择: 选项 A:让每个流听不同的主题。您可以让不同的网关发布到 MQTT 代理上的不同主题 - 例如。流实例 1 订阅 device/a/# Node-RED 实例 2 订阅 device/b/# 以此类推。

选项 B:一些 MQTT 代理支持“共享订阅”(HiveMQ) 的概念,它等同于点对点消息传递 - 即订阅组中的每个消费者都收到一条消息,然后代理使用循环进行负载平衡。此处提供了有关如何使用 HiveMQ 启用此功能的一个很好的解释 - http://www.hivemq.com/blog/mqtt-client-load-balancing-with-shared-subscriptions/。 HiveMQ 对负载平衡消费者的支持的好处是消费者代码不需要更改。您可以继续使用任何 MQTT 消费者 - 只有主题 URL 会改变 :)

选项 C: 您将一个简单的 Node-RED 流用于消息摄取,该流读取有效负载并向负载平衡的 Node-RED 流集群发出 HTTP 请求(类似于选项 1)

选项 D: 这是选项 C 的扩展,需要在使用 Apache Kafka 的消息摄取和消息处理之间创建一个缓冲区。我们通过 MQTT 从设备中提取消息,提取有效负载并将其发布到 Kafka 主题上。 Kafka 可以使用消费者组的概念来支持消息队列范式。因此,我们可以有多个使用同一消费者组订阅 Kafka 主题的节点红色流实例。如果您的消息代理不支持负载平衡消费者,此选项也很有意义。

已在此处发布了带有链接的博客文章 - http://www.narendranaidu.com/2016/07/scaling-node-red-horizontally-for-high.html

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2019-02-04
  • 2019-01-21
  • 2017-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-26
  • 1970-01-01
相关资源
最近更新 更多