Dois-je utiliser le protocole MQTT?

8

Je prévois de commencer à implémenter le cas d'utilisation IoT ci-dessous.

Cas d'utilisation

Les appareils IoT enverront 100 000 messages / minute à la passerelle via des répéteurs et la passerelle transférera les messages vers le cloud. Je veux suivre les employés d'une organisation. Les capteurs seront fixés sur leur carte d'identité. Le capteur envoie les données liées à l'emplacement (environ 15 Ko / message) à la passerelle via des répéteurs. C'est à des fins analytiques. Une fois les données transmises au cloud, je vais effectuer des analyses et les stocker dans la base de données et les afficher sur une page Web. Sur la base de ces données d'analyse, je vais montrer l'emplacement actuel de l'utilisateur et également les emplacements mobiles de l'utilisateur d'une certaine période de temps écoulée (dernière 1h ou 2h ou 1 jour).

Je ferai un peu de traitement sur les données et les enverrai au front end / DB.

J'ai parcouru les bases de l'IoT et son architecture. J'ai alors décidé d'utiliser l'architecture de pile "SMACK" (Spark, Mesos, Akka, Cassandra, Kafka).

J'ai décidé d'utiliser "Kafka native client" dans la passerelle pour publier les messages sur le cloud.

Dois-je utiliser le protocole MQTT pour transférer le message vers Kafka? Ou MQTT n'est pas nécessaire pour le cas d'utilisation ci-dessus?

Si oui, quel serait l'avantage d'utiliser MQTT avec l'architecture "SMACK"?

SKK
la source
2
1,5 mégaoctets par minute? Par employé, toute la journée? Oubliez les protocoles, vous devriez probablement prendre du recul et revoir les données elles-mêmes, en trouvant un moyen de les distiller avant la transmission.
Chris Stratton
Mes pensées exactement (+1). Combien d'employés avez-vous? Toujours sur un grand site (ish) avec 2 000 employés, vous suivez leur emplacement presque une fois par seconde - qui a besoin de cette précision? Que pouvez-vous en faire? Et pourquoi avez-vous besoin de 15 Ko pour le lat / long? Qu'est-ce que le reste et à quelle fréquence change-t-il?
Mawg dit réintégrer Monica le
Juste curieux - comment suivez-vous les identifiants? RFID passive à longue portée? Bluetooth? Si autre chose que la RFID passive, je peux prévoir des problèmes de batterie.
Mawg dit réintégrer Monica le

Réponses:

5

Vous n'avez pas besoin d'utiliser MQTT. Les clients Kafka installés sur les cartes d'identité des employés peuvent envoyer des données directement au courtier kafka dans le cloud. Ainsi, pendant que vous utilisez Kafka pour la passerelle, vous pouvez réellement utiliser kafka pour les capteurs eux-mêmes.

Kafka et MQTT ne sont pas interchangeables, ils ont des côtés forts différents (consommation d'énergie, consommation de bande passante, débit ...) mais je pense que vous le savez, en supposant de la complexité de votre stack. Kafka peut gérer 100 000 messages / minute.

Si vous décidez quand même d'utiliser MQTT, voici un article de blog sur la façon dont IBM utilise MQTT et Kafka dans le même projet. Leur projet concerne également la mobilité, donc je pense que cela pourrait réellement aider.

Gestion des appareils IoT avec Kafka et MQTT

atakanyenel
la source
atayenel, Merci d'avoir expliqué en détail. Dans mon cas, je devrais utiliser la passerelle au lieu de pousser directement le message du capteur. Les fournisseurs de services Google (MQTT) et IBM IOT utilisant MQTT? Après avoir lu le lien ci-dessous, j'ai quelques confusions ... Savez-vous pourquoi, y a-t-il une raison spécifique? cloud.google.com/iot/docs/concepts/protocols
SKK
Kafka peut-il gérer cette quantité de données?
Mawg dit réintégrer Monica le
Kafka est meilleur que mqtt pour le débit de données. Donc, si mqtt le gère, kafka peut également le gérer.
atakanyenel
@atayenel merci pour vos commentaires. Que me suggérez-vous les exigences matérielles minimales approximatives pour mon cas d'utilisation?
SKK
@SKK Je ne peux pas le dire exactement, mais vous pouvez regarder cette question .
atakanyenel
2

Il n'y a aucun problème avec presque n'importe quel type de courtier MQTT pour gérer cette charge, en particulier pour les messages qos = 0 (probablement dans votre cas). Nous avons une charge constante sur notre courtier avec 100 000 messages entrants (0,5 Ko) par seconde (+ SSL). Le problème peut apparaître du côté de la circulation, pas de pps.

Concernant l'architecture de votre système, mon conseil personnel - essayez de le rendre aussi simple que possible. Et simple moyen - juste quelques composants / services intermédiaires. Si vous pouvez connecter directement deux services - faites-le. Vous aurez toujours la possibilité de le rendre plus complexe lorsque vous commencerez à ajouter des fonctionnalités.

châle
la source
Je vous remercie. Voulez-vous que j'utilise une architecture simple plutôt que SMACK?
SKK
Pouvez-vous s'il vous plaît consulter ce iot.stackexchange.com/q/2718/5382 ?
SKK
Cela dépend entièrement de vous, mais à mon avis, je le créerais aussi simplement que possible, en me concentrant simplement sur les tâches importantes au début. Le cas habituel est que votre compréhension du projet avant et après (ou au milieu) est totalement différente et souvent vous avez une conclusion finale "si je le fais encore, je le ferai différemment"))
shal