Soll ich das MQTT-Protokoll verwenden?

8

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?

SKK
quelle
2
1,5 Megabyte pro Minute? Pro Mitarbeiter den ganzen Tag? Vergessen Sie Protokolle, Sie sollten wahrscheinlich einen Schritt zurücktreten und die Daten selbst erneut betrachten, um einen Weg zu finden, sie vor der Übertragung zu destillieren.
Chris Stratton
Meine Gedanken genau (+1). Wie viele Mitarbeiter haben Sie? Auf einem großen (ish) Standort mit 2.000 Mitarbeitern verfolgen Sie ihren Standort fast einmal pro Sekunde - wer braucht diese Genauigkeit? Was kannst du damit machen? Und warum brauchen Sie 15kB für Lat / Long? Was ist der Rest davon und wie oft ändert es sich?
Mawg sagt, Monica am
Nur neugierig - wie verfolgen Sie die IDs? Passive RFID mit großer Reichweite? Bluetooth? Wenn etwas anderes als passives RFID, kann ich Batterieprobleme vorhersehen.
Mawg sagt, Monica am

Antworten:

5

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

Atakanyenel
quelle
atayenel, Danke für die ausführliche Erklärung. In meinem Fall sollte ich stattdessen das Gateway verwenden, um die Nachricht direkt vom Sensor zu senden. Google (MQTT) und IBM IOT-Dienstanbieter, die MQTT verwenden? Nachdem ich den folgenden Link gelesen habe, habe ich einige Verwirrungen ... Wissen Sie warum, gibt es einen bestimmten Grund? cloud.google.com/iot/docs/concepts/protocols
SKK
Kann Kafka mit dieser Datenmenge umgehen?
Mawg sagt, Monica am
Kafka ist beim Datendurchsatz besser als mqtt. Wenn mqtt damit umgehen kann, kann kafka auch damit umgehen.
Atakanyenel
@atayenel danke für deine Kommentare. Was schlagen Sie mir für die ungefähren Mindestanforderungen an die Hardware für meinen Anwendungsfall vor?
SKK
@SKK Ich kann es nicht genau sagen, aber Sie können sich diese Frage ansehen .
Atakanyenel
2

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.

soll
quelle
Vielen Dank. Möchten Sie, dass ich eher einfache Architektur als SMACK verwende?
SKK
Können Sie bitte in diese iot.stackexchange.com/q/2718/5382 schauen ?
SKK
Es liegt ganz bei Ihnen, aber meiner Meinung nach würde ich es so einfach wie möglich gestalten und mich am Anfang nur auf die wichtigen Aufgaben konzentrieren. Üblicherweise ist Ihr Verständnis des Projekts vor und nach (oder in der Mitte) völlig anders und Sie haben oft die endgültige Schlussfolgerung "Wenn ich es noch einmal mache, mache ich es anders")
14.