Ich plane, mit der Implementierung des folgenden IoT-Anwendungsfalls zu beginnen.
Anwendungsfall
Die IoT-Geräte senden über Repeater 100.000 Nachrichten pro Minute an das Gateway, und das Gateway überträgt die Nachrichten in die Cloud. Ich möchte die Mitarbeiter in einer Organisation verfolgen. Die Sensoren werden auf ihrem Personalausweis befestigt. Der Sensor sendet die standortbezogenen Daten (ca. 15 KB / Nachricht) über Repeater an das Gateway. Es ist für den analytischen Zweck. Nachdem die Daten an die Cloud übergeben wurden, werde ich einige Analysen durchführen und in der Datenbank speichern und auf einer Webseite anzeigen. Basierend auf diesen Analysedaten zeige ich den aktuellen Standort des Benutzers sowie die beweglichen Standorte des Benutzers für eine bestimmte verstrichene Zeitspanne (letzte 1 Stunde oder 2 Stunden oder 1 Tag).
Ich werde die Daten etwas verarbeiten und an das Frontend / die DB senden.
Ich habe die IoT-Grundlagen und ihre Architektur durchgearbeitet. Dann entschied ich mich für die "SMACK" -Stack-Architektur (Spark, Mesos, Akka, Cassandra, Kafka).
Ich habe mich entschieden, "Kafka native client" im Gateway zu verwenden, um die Nachrichten in der Cloud zu veröffentlichen.
Sollte ich das MQTT-Protokoll verwenden, um die Nachricht an Kafka zu übertragen? Oder wird MQTT für den oben genannten Anwendungsfall nicht benötigt?
Wenn ja, welchen Nutzen hätte die Verwendung von MQTT mit der "SMACK" -Architektur?
Antworten:
Sie müssen MQTT nicht verwenden. Auf Mitarbeiterausweisen installierte Kafka-Clients können Daten direkt an den Kafka-Broker in der Cloud senden. Während Sie also Kafka für das Gateway verwenden, können Sie Kafka tatsächlich für die Sensoren selbst verwenden.
Kafka und MQTT sind nicht austauschbar, sie haben unterschiedliche Stärken (Energieverbrauch, Bandbreitenverbrauch, Durchsatz ...), aber ich denke, Sie wissen es, wenn Sie von der Komplexität Ihres Stacks ausgehen. Kafka kann 100.000 Nachrichten pro Minute verarbeiten.
Wenn Sie sich trotzdem für MQTT entscheiden, finden Sie hier einen Blogbeitrag darüber, wie IBM MQTT und Kafka im selben Projekt verwendet. In ihrem Projekt geht es auch um Mobilität, daher denke ich, dass es tatsächlich helfen könnte.
Verwalten von IoT-Geräten mit Kafka und MQTT
quelle
Es gibt kein Problem mit fast jedem MQTT-Broker, um diese Last zu verarbeiten, insbesondere für Nachrichten mit qos = 0 (wahrscheinlich in Ihrem Fall). Wir haben eine konstante Last für unseren Broker mit eingehenden 100.000 Nachrichten (0,5 KB) pro Sekunde (+ SSL). Das Problem kann von der Verkehrsseite auftreten, nicht von pps.
In Bezug auf die Architektur Ihres Systems mein persönlicher Rat - versuchen Sie es so einfach wie möglich zu machen. Und einfaches Mittel - nur ein paar Zwischenkomponenten / Dienstleistungen. Wenn Sie zwei Dienste direkt verbinden können, tun Sie es. Sie haben immer die Möglichkeit, es komplexer zu gestalten, wenn Sie Funktionen hinzufügen.
quelle