NanoMQ は、2021 年初頭にリリースされたエッジ コンピューティング オープン ソース プロジェクトです。これは、IoT エッジ コンピューティング シナリオ向けの次世代の軽量で高性能な MQTT メッセージ サーバーです。
IoT 時代において、データは主要な生産性であり、エッジはデータが生まれる場所です。エッジの複雑なネットワーク環境でデータを迅速に集約して分散するには、高リアルタイム、高スループットのエッジ メッセージ バスが不可欠です。しかし、長い産業チェーンとさまざまな垂直産業の歴史的理由により、エッジではプロトコルの断片化と複数のメッセージ モードが存在し、組み込み環境のコンピューティング能力と消費電力も厳しく制限されています。これらの問題により、エッジ メッセージ バスに対する新たな要件と課題が生じています。
NanoMQ は、エッジでのデータ フローを統合できる軽量で高性能のメッセージ バスを提供し、これらの問題の解決に取り組んでいます。同時に、優れた拡張性と移植性を備え、さまざまな組み込みプラットフォームに適応し、エッジに点在する断片化されたデータを容易に管理および取得できます。
主要な利点
超軽量: MQTT サービスは、わずか 200Kb のメモリ使用量で開始できます。
完全な非同期 I/O: IoT および MQTT 用に組み込まれたアクター プログラミング モデルにより、コンピューティング負荷を並列化します。
マルチスレッド並列処理:優れたスケーラビリティ、優れたマルチコア SMP (対称型マルチプロセッシング) サポート、およびマルチスレッド パフォーマンス。
高性能:エッジでの数百万レベルのメッセージ処理機能。
クロスプラットフォーム: POSIX ベースのシステム プラットフォームにシームレスに移植できます。
相互運用性:データの透明性、豊富な拡張インターフェイス、さまざまなエッジ コンピューティング フレームワークとの簡単な統合。
特徴
MQTT 5.0 の完全サポート: MQTT 5.0/3.1.1 の完全サポート。すべての標準 MQTT オープン ソース SDK と互換性があります。
MQTT ブリッジング: MQTT マルチクラウド ブリッジング機能が組み込まれており、簡単な構成でさまざまな人気のクラウド サービスにアクセスし、複数の場所でデータ同期のためのクラウド側チャネルを確立できます。
ルール エンジン:内蔵のシンプルなルール エンジンにより、エッジ データを柔軟に処理できます。eKuiper と統合して、エッジでのストリーミング データ分析を行うこともできます。
メッセージの永続性:モノのインターネットの複雑なネットワーク環境シナリオ向けにデータの永続性とデータ キャッシュ機能を設計します。ブリッジ メッセージはローカルにキャッシュされ、ネットワーク中断後に再開できます。重要なデータは永続化され、エッジでロールオーバーできます。
豊富な統合 API:スケーラブルなイベント駆動型 WebHook インターフェイスと O&M フレンドリーな HTTP API を提供し、エッジ コンピューティング アプリケーションの開発と統合のコストを削減します。
マルチプロトコル ゲートウェイ:プロトコル ゲートウェイは、nanomsg/ZeroMQ/Websocket などの一般的に使用されるメッセージ プロトコルをサポートし、エッジでの柔軟なデータ ルーティング トポロジの確立を容易にします。また、接続の暗号化とセキュリティを提供します。
製品アーキテクチャ
NanoMQ は小さいながらも完全な機能を備えた、あらゆる面で完全な機能を備えた小型の MQTT エッジ サーバー + メッセージ バスです。
プラットフォーム アダプテーション レイヤー:実行中のハードウェア プラットフォーム オペレーティング システムを検出し、適応されたシステム API を提供し、プラットフォーム バインディングの問題を回避します。
マルチタスク レイヤー: IoT シナリオ向けに設計された組み込みアクター モデルは、スレッド レベルの並列機能を提供し、最新の SMP システムで効果的に拡張できます。
トランスポート層:トランスポート層は、接続管理やフロー制御などの TCP/UDP ストリームの管理を担当し、QoS などのさまざまなシナリオに対する NanoMQ のゼロコピー機能を保証し、メモリ消費を削減し、パフォーマンスを向上させます。
プロトコル層:データ フローを MQTT メッセージに変換し、さまざまなイベントを生成して、MQTT プロトコルのインターフェイスを公開します。同時に、プロトコル層は各クライアントのメッセージ フライト ウィンドウの管理も担当します。
アプリケーション層:ルール エンジンと MQTT グローバル トピック ツリーを実装し、対応するブリッジングとメッセージ転送機能の設定を読み取ります。そして、すべての MQTT メッセージ イベントと HTTP API をユーザーに公開します。
インストールと展開
NanoMQ は MIT ライセンスに基づくオープン ソース プロジェクトであり、完全なコードは Github で入手できます。
https://github.com/emqx/nanomq
次のコマンドを実行して、Docker 経由で NanoMQ をすばやく実行します。ポート 1883、8083、および 8883 を指定して、それぞれ MQTT、WebSocket 上の MQTT、SSL/TLS 上の MQTT トラフィックをリッスンします。
docker run -d --name nanomq -p 1883:1883 -p 8083:8083 -p 8883:8883 emqx/nanomq:latest
性能試験
4C8G ホストでは、最大120K の接続をサポートできます。60K クライアントはさまざまな 60K トピックをサブスクライブし、別の 60K クライアントは 16 kb パブリッシュ メッセージをこれらの 60K トピックに 1000 ミリ秒の間隔で送信します。
耐圧試験環境 4C8Gサーバー
オペレーティング システム: CentOS Linux リリース 7.6.1708
CPU: 4コア4スレッド
メモリ: 8G
NanoMQ バージョン:バージョン 0.3.4、4 スレッド、64 コンテキスト。ログ/統計とデバッグをオフにします。
圧力テストの結果:
要約する
NanoMQ はネイティブ POSIX API のみに依存しており、高い互換性と移植性、軽量、高速、および極めて低いメモリ フットプリントを備えており、産業用モノのインターネットのエッジ シナリオで非常に優れたパフォーマンスを発揮するオープン ソースになっています。
さらに、NanoMQ はメッセージ バスとしても使用でき、DDS、NNG、ZeroMQ などのプロトコルを MQTT に変換し、MQTT メッセージをクラウドにブリッジします。
NanoMQ公式サイト https://nanomq.io
過去の推薦
☞ IDC China 2022 IoT プラットフォーム評価レポート