NanoMQ est un projet open source d'informatique de périphérie lancé au début de 2021. Il s'agit d'un serveur de messages MQTT léger et hautes performances de nouvelle génération pour les scénarios d'informatique de périphérie IoT.
À l'ère de l'IoT, les données sont la productivité principale, et la périphérie est l'endroit où les données naissent. Pour agréger et distribuer rapidement des données dans un environnement réseau complexe à la périphérie, un bus de messages de périphérie à haut débit et en temps réel est crucial. Cependant, en raison de la longue chaîne industrielle et des raisons historiques de diverses industries verticales, il existe une fragmentation des protocoles et de multiples modes de messages à la périphérie , et la puissance de calcul et la consommation électrique de l'environnement embarqué sont également strictement limitées . Ces problèmes ont mis en avant de nouvelles exigences et de nouveaux défis pour le bus de messages Edge.
NanoMQ s'engage à résoudre ces problèmes, en fournissant un bus de messages léger et performant qui peut unifier le flux de données à la périphérie. Dans le même temps, il offre une évolutivité et une portabilité excellentes, s'adapte à diverses plates-formes embarquées et permet de gérer et d'obtenir facilement des données fragmentées dispersées à la périphérie.
principaux avantages
Ultra-léger : le service MQTT peut être démarré avec une empreinte mémoire aussi faible que 200 Ko.
E/S entièrement asynchrones : modèle de programmation d'acteur intégré pour l'IoT et MQTT afin de paralléliser la charge de calcul.
Parallélisme multi-thread : excellente évolutivité, bonne prise en charge du SMP multicœur (multitraitement symétrique) et performances multi-thread.
Hautes performances : capacité de traitement de messages à un million de niveaux à la périphérie.
Multiplateforme : il peut être porté de manière transparente sur n'importe quelle plate-forme système basée sur POSIX.
Interopérabilité : Transparence des données, interfaces d'extension riches et intégration facile avec divers cadres informatiques de pointe.
Caractéristiques
Prise en charge complète de MQTT 5.0 : prise en charge complète de MQTT 5.0/3.1.1, compatible avec tous les SDK open source MQTT standard.
Pontage MQTT : fonction de pontage multi-cloud MQTT intégrée, une configuration simple peut accéder à divers services cloud populaires pour établir des canaux côté cloud pour la synchronisation des données à plusieurs endroits.
Moteur de règles : le moteur de règles simple intégré peut traiter de manière flexible les données Edge. Il peut également être intégré à eKuiper pour l'analyse de données en continu à la périphérie.
Persistance des messages : concevoir des fonctions de persistance et de mise en cache des données pour les scénarios d'environnement réseau complexes de l'Internet des objets. Les messages Bridge peuvent être mis en cache localement, puis repris après la déconnexion. Les données importantes peuvent être conservées et transférées à la périphérie.
API d'intégration enrichies : Fournit des interfaces WebHook évolutives pilotées par les événements et des API HTTP compatibles O&M pour aider à réduire le coût du développement et de l'intégration d'applications informatiques en périphérie.
Passerelle multiprotocole : la passerelle de protocole prend en charge les protocoles de message couramment utilisés tels que nanomsg/ZeroMQ/Websocket, ce qui facilite la mise en place de topologies de routage de données flexibles à la périphérie. Et fournir le cryptage et la sécurité de la connexion.
architecture produit
NanoMQ est petit mais complet, c'est un petit serveur Edge MQTT + bus de messages avec des fonctions complètes dans tous les aspects.
Couche d'adaptation de plate-forme : détectez le système d'exploitation de la plate-forme matérielle en cours d'exécution, fournissez une API système adaptée et évitez les problèmes de liaison de plate-forme.
Couche multitâche : modèle d'acteur intégré conçu pour les scénarios IoT, offrant des capacités parallèles au niveau des threads, et pouvant être étendu efficacement sur les systèmes SMP modernes.
Couche transport : la couche transport est responsable de la gestion des flux TCP/UDP, y compris la gestion des connexions et le contrôle des flux. Elle garantit également la fonctionnalité Zero-copy de NanoMQ pour différents scénarios tels que la QoS, réduit la consommation de mémoire et améliore les performances.
Couche de protocole : convertissez le flux de données en messages MQTT, générez différents événements et exposez des interfaces pour le protocole MQTT. Dans le même temps, la couche protocole est également responsable de la gestion de la fenêtre de vol des messages de chaque client.
Couche d'application : implémentez le moteur de règles et l'arborescence globale des rubriques MQTT, et lisez la configuration pour les fonctions de pontage et de transfert de messages correspondantes. Et exposez tous les événements de message MQTT et l'API HTTP aux utilisateurs.
Installer et déployer
NanoMQ est un projet open source sous licence MIT, vous pouvez obtenir le code complet sur Github
https://github.com/emqx/nanomq
Exécutez les commandes suivantes pour exécuter rapidement NanoMQ via Docker, en spécifiant les ports 1883, 8083 et 8883 pour écouter MQTT, MQTT sur WebSockets et MQTT sur le trafic SSL/TLS, respectivement.
docker run -d --name nanomq -p 1883:1883 -p 8083:8083 -p 8883:8883 emqx/nanomq:latest
Test de performance
Sur l'hôte 4C8G, il peut prendre en charge jusqu'à 120 000 connexions . Les clients 60K s'abonnent à différents sujets 60K et d'autres clients 60K envoient des messages de publication de 16 Ko à ces sujets 60K à un intervalle de 1 000 ms.
Environnement de test de pression Serveur 4C8G
Système d'exploitation : CentOS Linux version 7.6.1708
Processeur : 4 cœurs 4 threads
Mémoire : 8G
Version NanoMQ : version 0.3.4, 4 threads, 64 contextes. Désactivez la journalisation/les statistiques et le débogage.
Résultats du test de pression :
Résumer
NanoMQ s'appuie uniquement sur l'API POSIX native, qui est hautement compatible et portable, légère, rapide et à très faible empreinte mémoire , ce qui en fait une source ouverte qui fonctionne très bien dans les scénarios de périphérie du composant MQTT de l'Internet industriel des objets
En outre, NanoMQ peut également être utilisé comme bus de messages, convertissant des protocoles tels que DDS, NNG et ZeroMQ en MQTT, puis reliant les messages MQTT au cloud.
Site officiel de NanoMQ https://nanomq.io
Recommandation passée
☞ Rapport d'évaluation de la plate-forme IoT IDC Chine 2022
☞ Tendances des plateformes IoT en 2022 : Privatisation
☞ 5 leçons à partager sur les échecs des startups IoT
☞ Sélection et comparaison de quatre plateformes IoT domestiques
☞ La [plate-forme IoT] des fournisseurs de cloud n'est-elle pas populaire ?