gpt4 book ai didi

node-red - 如何跨节点集群水平扩展 Node-RED?

转载 作者:行者123 更新时间:2023-12-03 22:30:54 32 4
gpt4 key购买 nike

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

最佳答案

我在 Google Groups Node-RED 论坛 (https://groups.google.com/forum/#!topic/node-red/Nx1WWqBeLbI) 上发布了这个问题,并得到了有趣的答案。记下下面的各种选项。
如果您的输入通过 HTTP,那么您可以使用任何标准负载平衡技术在运行相同 Node-RED 流的节点集群上对请求进行负载平衡 - 例如可以使用 HAProxy、Nginx 等。需要注意的是,由于我们在多个节点上运行相同的流程,因此我们无法在上下文变量中存储任何状态。我们必须将状态存储在外部服务中,例如 Redis。
如果您通过 MQTT 摄取,那么我们有多种选择:
选项 A :让每个流听不同的话题。您可以将不同的网关发布到 MQTT 代理上的不同主题 - 例如流实例 1 订阅设备/a/# Node-RED 实例 2 订阅设备/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

关于node-red - 如何跨节点集群水平扩展 Node-RED?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38509440/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com