2016-07-21 20 views
3

Ist es möglich, Node-RED horizontal auf einem Cluster von Knoten zu skalieren? Konnte keine Dokumentation auf dem gleichen finden. Mein Szenario besteht darin, Millionen von Ereignissen pro Sekunde zu verarbeiten und sie in Echtzeit mit Node-RED zu verarbeiten.Wie skaliere ich Node-RED horizontal über einen Cluster von Knoten?

+0

Dies besser auf der Node-RED-Mailingliste, wo eine richtige Diskussion über genau gefragt werden würde, was Sie zu tun versuchen. https://groups.google.com/forum/#!forum/node-red – hardillb

Antwort

3

Ich habe die Frage im Google Groups Node-RED-Forum (https://groups.google.com/forum/#!topic/node-red/Nx1WWqBeLbI) veröffentlicht und interessante Antworten erhalten. Notieren Sie die verschiedenen Optionen unten.

Wenn Ihre Eingabe über HTTP erfolgt, können Sie eine der standardmäßigen Lastenausgleichstechniken verwenden, um Kontoausgleichsanforderungen über einen Cluster von Knoten zu laden, die denselben Node-RED-Fluss ausführen, z. Man kann HAProxy, Nginx usw. verwenden. Es ist wichtig zu beachten, dass wir keinen Zustand in Kontextvariablen speichern können, da wir denselben Fluss über viele Knoten ausführen. Wir müssen den Staat in einem externen Dienst wie Redis speichern.

Wenn Sie über MQTT sind Einnahme, dann haben wir mehrere Optionen: Option A: Lassen Sie jeden Fluss zu einem anderen Thema hören. Sie können verschiedene Gateways zu verschiedenen Themen auf dem MQTT-Broker veröffentlichen - z. Flow-Instanz 1 abonniert Gerät/a/# Knoten-RED-Instanz 2 subscribe für Gerät/b/# und so weiter.

Option B: Einige MQTT Makler das Konzept der ‚Gemeinsame Abonnement‘ unterstützen (HiveMQ), die Punkt-zu-Punkt-Messaging entspricht - dh jeder Verbraucher in einer subsciption Gruppe eine Nachricht bekommt und dann den Broker last- Salden mit Round-Robin. Eine gute Erklärung, wie Sie dies mit HiveMQ aktivieren können, finden Sie hier - http://www.hivemq.com/blog/mqtt-client-load-balancing-with-shared-subscriptions/. Das Gute an der HiveMQ-Unterstützung für Load-Balancing-Consumer ist, dass der Consumer-Code nicht geändert werden muss. Sie können weiterhin alle MQTT Verbraucher mit - nur das Thema URL ändern würde :)

Option C: Sie stellen einen einfachen Knoten-RED Fluss für die Nachrichten Aufnahme, die die Nutzlast liest und macht eine HTTP-Anforderung zu einem Cluster von Last Knoten-RED-Flows (ähnlich Option 1)

Option D: Dies ist eine Erweiterung von Option C und umfasst das Erstellen eines Puffers zwischen Nachrichtenein- und -nachrichtenverarbeitung mit Apache Kafka. Wir nehmen die Nachricht von Geräten über MQTT auf und extrahieren die Nutzdaten und veröffentlichen sie auf einem Kafka-Thema. Kafka kann ein Message-Queue-Paradigma mit dem Konzept der Konsumentengruppen unterstützen. So können wir mehrere Knoten-rote Flow-Instanzen haben, die das Kafka-Thema unter Verwendung der gleichen Konsumentengruppe abonnieren. Diese Option ist auch dann sinnvoll, wenn Ihr Nachrichtenbroker keine Verbraucher mit Lastenausgleich unterstützt.

Haben eine Blog-Post mit Links geschrieben - http://www.narendranaidu.com/2016/07/scaling-node-red-horizontally-for-high.html

+0

Entnommen aus dem folgenden Thread in der Node-RED-Google-Gruppe https://groups.google.com/forum/#!topic/node- rot/Nx1WWqBeLbI – hardillb

+0

Die Attribution hinzugefügt. Danke. –