0

Ich versuche, ein IoT-System zu entwerfen, das viele IoT-Geräte verschiedene Arten von Sensordaten an einen Front-End-Lastenausgleichsserver sendet, der die Nachrichten dann an ein Aufnahmesystem (derzeit Google Cloud PubSub) sendet. Dann gibt es Konsumenten, die die Nachrichten konsumieren und sie in verschiedene Datenbanken und Tabellen schreiben. Jeder Sensordatentyp verfügt über eine eigene Datenbank.Wo sollte Fanout in einem Verschlusssystem auftreten?

Wo sollte ein Fanout erfolgen?

  1. VOR PubSub System: Wenn das Frontend der Fanout tut, dann hat es groß genug skaliert werden, um genügend Rechenleistung haben, um den Inhalt jeder Nachricht zu suchen, um herauszufinden, welches Thema es Ende zu senden. Dann werde ich ein separates Thema für jede Nachricht und einen Verbraucher für jedes Thema haben.

    NACH Pubsub-System: Wenn ich nur ein Thema habe, dass das Frontend alle Nachrichten unabhängig von ihrem Typ verschiebt, muss der Consumer dieses Themas skaliert werden, um jede Nachricht konsumieren und verarbeiten zu können um zu schreiben. Dies würde auch bedeuten, dass dieser eine Verbrauchercode Zugriff auf alle Datenbanken haben muss.

  2. INSIDE PubSub-System: Lassen Sie pubsub den Fanout ausführen, so dass Publisher zwar nur zu einem Thema veröffentlichen, es jedoch mehrere Subskriptionen für dieses Thema gibt (eins für jeden Datentyp) und jeder Konsument von seinem eigenen Abonnement konsumiert löscht alle Nachrichten, die der Datentyp sind, den sie verbrauchen sollen. Es sieht so aus, als ob Kafka dafür besser geeignet wäre.

+1

# 3 ist eine gute Passform für Kafka. Es gibt einen Kafka Connector oder Google PubSub, so dass Sie beide verwenden und PubSub-Nachrichten in Kafka-Themen (oder umgekehrt) ohne jegliche Kodierung routen können. Siehe https://github.com/GoogleCloudPlatform/pubsub/blob/master/kafka-connector/README.md –

Antwort

0

Für Geräte und Routing-Daten über Pub/Sub-Anschluss Sie besser durch IoT Core serviert wird, die auch Gerätekonnektivität, Authentifizierung und Überwachung behandelt. Da die Konfiguration der Gerätekonnektivität komplexer ist, wäre es besser, sich auf dem Server zu verteilen. Jetzt ist es am besten, einen Konsumenten für das Pub/Sub-System zu haben, das in jeden Speicher schreibt. Wenn Sie die Verbraucher entkoppeln möchten, können Sie mehrere für jeden Speicher haben, aber Sie müssen Nachrichten "löschen", die nicht benötigt werden. Dataflow kann hierfür mit verwendet werden.

+0

IoT Core ist in der privaten Betaversion, ich habe mich vor etwa einem Monat angemeldet, um es zu benutzen. Wenn Sie sagen: "Es wäre besser, sich auf dem Server auszubreiten", meinen Sie, dass PubSub den Fanout durchführt, indem Sie 1 Thema auf mehrere Abonnements verteilen? – gunit

+0

Öffentliche Beta kommt "bald". Ich denke (Emilio kann mitspielen, wenn ich falsch liege), er spricht davon, dass Dataflow den Fanout macht. Wenn also alle Geräte in dasselbe Pub/Sub-Thema schreiben, analysiert Dataflow die Daten abhängig von den Daten. So könnten Sie zum Beispiel einfach einen "Typ" -Schlüssel zur Nutzlast hinzufügen. Dataflow kann die Delegierung an die richtige Datenbank analysieren und verwalten. Das ist wahrscheinlich weniger problematisch auf dem System als die Verwaltung mehrerer Themen oder Abonnements. – GabeWeiss

Verwandte Themen