Skip to content

MQTTによるファイル転送

IoTアプリケーションの世界では、多様なデータ伝送のニーズが高まっており、デバイスがクラウドと迅速かつ確実にさまざまな種類のデータをやり取りする必要があります。IoTがより多くの産業分野で活用されるにつれて、多様なユースケースが登場しています。センサーのリアルタイム構造化データや制御コマンドに加え、音声・映像ファイル、画像、診断ログなどのオフラインファイルデータもIoT分野でますます重要な役割を果たしています。

EMQXは標準のMQTTプロトコルをベースにしたファイル転送機能を提供し、効率的かつ信頼性の高いデータ転送を実現します。

従来手法の限界

ファイル転送の分野ではFTPやHTTPといった技術が確立されています。ユーザーはMQTTとこれらの技術を組み合わせて利用することが可能で、ファイルの内容転送にはHTTP/FTPを、イベントやファイルの位置情報の転送にはMQTTを使うことが多いです。

このハイブリッド方式は理論上、それぞれの技術の利点を最大限に活かし、ファイル転送の効率と柔軟性を高めます。しかし、IoT環境では以下のような課題に直面することがあります。

  • 全体的なフロー制御の困難さ:低帯域幅かつ複雑で信頼性の低いネットワーク環境で動作するIoTデバイスでは、複数の接続が同時にクラウドへデータ送信を行う際に、全体のデータフロー管理や優先順位付けが難しくなります。特にHTTP/FTPで大容量ファイルを転送すると、長時間帯域を占有し、重要なMQTTメッセージの送信を妨げる問題があります。
  • 複数技術スタックの共存:IoTデバイスはリソースが限られていることが多く、追加の技術スタックを組み込むための空き容量や処理能力が不足している場合があります。MQTTはHTTP/FTPより軽量で適応性が高いため、制約を回避してビジネス開発を完遂できます。
  • 追加の開発・管理コスト:既存のMQTTチャネルにはすでに包括的なデバイス認証・認可システムが備わっています。FTPやHTTPのような新技術を導入すると、これらのセキュリティや管理システムを再実装する必要があり、開発・管理コストが増大します。
  • 性能面の制約:HTTP/FTP技術は大量の接続をサポートするIoTアプリケーションには適していません。さらに、弱いネットワーク環境での頻繁な再接続や再送信はHTTP/FTPのファイル転送の欠点を増幅し、アプリケーション開発や運用に大きな負荷をかけます。

EMQXにおけるMQTTファイル転送

MQTT標準ではファイル転送の標準的な方法は定義されていません。EMQXはMQTTプロトコルを拡張し、クライアントデバイスが効率的かつ安全にファイルを転送できるよう支援します。MQTT上に構築されたシンプルなアプリケーションレベルのプロトコルを定義・実装し、クライアントデバイスが容易にファイル転送を扱えるようにしています。

特徴

MQTTベースのファイル転送には、100%のファイル完全性を保証する信頼性の確保、ファイル管理や長期保存への対応、多様なアプリケーションのファイル読み取りインターフェースへの適応など、いくつかの課題があります。

これらに対応するため、EMQXのファイル転送は以下の機能を備えています。

  • 他の業務処理と同じMQTT接続を利用可能で、既存のクライアント管理システムをフル活用できる。

  • チャンク転送に対応し、軽量クライアントでも大容量ファイルを扱え、MQTTのサイズ制限(256MB)を超えるファイルも転送可能。

  • 再開可能な転送をサポートし、クライアントがファイル転送を一時停止して優先度の高いデータ送信を行ったり、ネットワーク切断から復旧したりできる。

  • QoS 1レベルの送信による信頼性を保証し、チェックサムや再送機構を備えてファイル転送の完全性を確保。

  • 柔軟なストレージ層設定が可能で、アップロードされたファイルをローカルディレクトリやS3互換のオブジェクトストレージに保存し、後で利用できる。

利点

MQTTは軽量かつ柔軟なメッセージングプロトコルとして、企業にとってより便利で効率的なファイル転送ソリューションを提供します。構造化データとファイル形式データの伝送を統合することで、実現可能なIoTビジネスアプリケーションの範囲が拡大します。

統一されたMQTTデータチャネルによりシステムアーキテクチャが簡素化され、アプリケーションの複雑さや保守コストが削減されます。EMQXのMQTTファイル転送機能を活用することで、企業はより便利で多様なIoTアプリケーションを開発できます。

プロトコル面では、EMQXのファイル転送は標準MQTTに基づき、転送全体が指定されたMQTTトピックとペイロードで実行されるため、既存のクライアントやアプリケーションの修正は不要です。詳細な転送プロトコルについてはFile Transfer Client Developmentを参照してください。

次のステップ

EMQXにおけるMQTTファイル転送の詳細はこちら:

EMQXのファイル転送機能の使い方: