Dovrei usare il protocollo MQTT?


8

Sto programmando di iniziare a implementare il caso d'uso IoT di seguito.

Caso d'uso

I dispositivi IoT invieranno 100k messaggi / minuto al gateway tramite ripetitori e il gateway trasferirà i messaggi sul cloud. Voglio seguire i dipendenti di un'organizzazione. I sensori verranno fissati sulla loro carta d'identità. Il sensore invia i dati relativi alla posizione (circa 15 KB / messaggio) al gateway tramite ripetitori. È a scopo analitico. Dopo che i dati sono passati al cloud, eseguirò alcune analisi e li memorizzerò nel DB e li visualizzerò su una pagina Web. Sulla base di questi dati di analisi, mostrerò la posizione corrente dell'utente e anche le posizioni mobili dell'utente di un determinato intervallo di tempo trascorso (ultima 1 ora o 2 ore o 1 giorno).

Farò un po 'di elaborazione sui dati e li invierò al front-end / DB.

Ho esaminato le basi dell'IoT e la sua architettura. Quindi ho deciso di utilizzare l'architettura stack "SMACK" (Spark, Mesos, Akka, Cassandra, Kafka).

Ho deciso di utilizzare "Kafka native client" nel gateway per pubblicare i messaggi sul cloud.

Devo usare il protocollo MQTT per trasferire il messaggio a Kafka? O MQTT non è necessario per il caso d'uso sopra riportato?

Se sì, quale sarebbe il vantaggio di utilizzare MQTT con l'architettura "SMACK"?


2
1,5 Megabyte al minuto? Per dipendente, tutto il giorno? Dimentica i protocolli, dovresti probabilmente fare un passo indietro e considerare nuovamente i dati stessi, trovando un modo per distillarli prima della trasmissione.
Chris Stratton,

I miei pensieri esattamente (+1). quanti dipendenti hai? Sempre su un grande sito (ish) con 2.000 dipendenti, stai monitorando la loro posizione quasi una volta al secondo - chi ha bisogno di quella precisione? Cosa puoi farci? E perché sono necessari 15kB per lat / long? Qual è il resto, e con che frequenza cambia?
Mawg dice di ripristinare Monica il

Solo curioso: come stai monitorando gli ID? RFID passivo a lungo raggio? Bluetooth? Se non altro che RFID passivo, posso prevedere problemi di batteria.
Mawg dice di ripristinare Monica il

Risposte:


5

Non è necessario utilizzare MQTT. I client Kafka installati sulle carte d'identità dei dipendenti possono inviare direttamente i dati al broker kafka nel cloud. Quindi, mentre stai usando Kafka per il gateway, puoi effettivamente usare kafka per i sensori stessi.

Kafka e MQTT non sono intercambiabili, hanno diversi lati forti (consumo di energia, consumo di larghezza di banda, throughput ...) ma penso che tu lo sappia, assumendo dalla complessità del tuo stack. Kafka può gestire 100.000 messaggi / minuto.

Se decidi di utilizzare MQTT comunque, ecco un post sul blog su come IBM utilizza MQTT e Kafka nello stesso progetto. Il loro progetto riguarda anche la mobilità, quindi penso che potrebbe davvero aiutare.

Gestione dei dispositivi IoT con Kafka e MQTT


atayenel, grazie per aver spiegato in dettaglio. Nel mio caso, dovrei usare il gateway invece di inviare direttamente il messaggio dal sensore. Fornitori di servizi Google (MQTT) e IBM IOT che utilizzano MQTT? Dopo aver letto il link qui sotto, ho alcune confusioni ... Sai perché, c'è qualche motivo specifico? cloud.google.com/iot/docs/concepts/protocols
SKK

Kafka è in grado di gestire tale quantità di dati?
Mawg dice di ripristinare Monica il

Kafka è migliore di mqtt al throughput dei dati. Quindi se mqtt lo gestisce, anche kafka può gestirlo.
atakanyenel,

@atayenel grazie per i tuoi commenti. Cosa mi consigliate i requisiti hardware minimi approssimativi per il mio caso d'uso?
SKK,

@ SKK Non posso dirlo esattamente, ma puoi guardare questa domanda .
atakanyenel,

2

Non c'è alcun problema con quasi tutti i tipi di broker MQTT per gestire questo carico, specialmente per i messaggi qos = 0 (probabilmente nel tuo caso). Abbiamo un carico costante per il nostro broker con 100.000 messaggi in arrivo (0,5 KB) al secondo (+ SSL). Il problema può apparire dal lato del traffico, non da pps.

Per quanto riguarda l'architettura del tuo sistema, il mio consiglio personale: cerca di renderlo il più semplice possibile. E media semplice - solo alcuni componenti / servizi intermedi. Se riesci a connettere direttamente due servizi, fallo. Avrai sempre la possibilità di renderlo più complesso quando inizierai ad aggiungere funzionalità.


Grazie. Vuoi che usi l'architettura semplice anziché SMACK?
SKK,

Puoi per favore guardare questo iot.stackexchange.com/q/2718/5382 ?
SKK,

Dipende assolutamente da te, ma secondo me lo creerei nel modo più semplice possibile, concentrandomi solo sui compiti importanti all'inizio. Il caso usuale è che la tua comprensione del progetto prima e dopo (o nel mezzo) è totalmente diversa e spesso hai una conclusione finale "se lo faccio di nuovo lo farò diversamente"))
shal
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.