モノのインターネット (IoT) の急激な成長に伴い、デバイスとシステム間の通信の管理の重要性が高まっています。 IoT 通信は、構造的かつ効率的な方法での情報交換を容易にする MQTT や AMQP などのメッセージ キュー プロトコルによって可能になります。
IoT を強化する XNUMX つの一般的なプロトコルは次のとおりです。 MQTT プロトコル (メッセージ キュー テレメトリ トランスポート) および AMQP (アドバンスト メッセージ キュー プロトコル)。 これらの各プロトコルを詳しく調べて、主な違いと、XNUMX つのプロトコルのどちらかを選択するときに考慮すべき要素について説明します。
メッセージ キュー プロトコルの重要性
IoT では、単純なセンサーから複雑なマシンに至るまでのデバイスが相互に通信したり、中央システムと通信したりする必要があります。 これらのデバイスは、多くの場合、低電力ネットワークや信頼性の低いネットワークなど、リソースに制約のある環境で動作します。
次のようなメッセージ キュー プロトコル MQTTは、そのような環境向けに設計されており、これらのデバイスが効率的かつ確実に通信できるようにします。
分散システムでは、多くの場合、コンポーネントは疎結合を維持しながら情報を交換する必要があります。 AMQP のようなプロトコルは、堅牢な機能と複雑なルーティング機能を備えており、この通信に信頼できる手段を提供します。
これらのプロトコルにより、メッセージが確実に配信され、システムは独立して拡張および進化できます。
MQTTとは何ですか?
MQTT (Message Queuing Telemetry Transport の略) は、軽量のパブリッシュ/サブスクライブ メッセージング プロトコルです。 1999 年に IBM によって導入されました。
MQTT は、制約のあるデバイスや低帯域幅、高遅延、または信頼性の低いネットワーク向けに設計されており、小さなコード フットプリントが必要なマシンツーマシンまたは IoT のユースケースに最適です。
MQTT は、 パブリッシュ/サブスクライブ モデル。 このモデルでは、パブリッシャーと呼ばれるプロデューサーがメッセージを作成し、サブスクライバーと呼ばれるコンシューマがメッセージを受信します。
パブリッシャーとサブスクライバー間の対話はブローカーによって管理されます。 ブローカーは、パブリッシャーからサブスクライバーにメッセージを配布する責任があります。
MQTT のシンプルさは、最小限のプロトコル コマンドにあります。 コマンドが少数しかないため、さまざまなデバイスやシステムに簡単に実装できます。
また、そのサービス品質レベルによりメッセージ配信の確認が可能になり、送信中にメッセージが失われないことが保証されます。 MQTT についてさらに詳しく見てみましょう。
MQTT トランスポートとフレーミング
MQTT は TCP、TLS、WebSocket、または QUIC トランスポート層として、接続を作成し、セッションを確立し、クライアントとブローカーの間でメッセージを確実に送信します。
MQTT フレームは、2 バイトの固定ヘッダー、可変ヘッダー、可変長ペイロードで構成されます。 ヘッダーには、パケット タイプ、サービス品質レベル、残りの長さ、パケット ID、プロパティなどの情報が含まれます。 バイナリ ペイロードには、送信される実際のメッセージが含まれます。
MQTT は、バージョン 15 のプロトコル仕様でバイナリ フレームに基づいた 5.0 種類の制御パケットを定義しています。 接続、パブリッシュ、およびサブスクライブに使用される一般的なパケットには、CONNECT、CONACK、PUBLISH、PUBACK、および SUBSCRIBE などがあります。
MQTT QoS
MQTT は、メッセージ配信に関して次の XNUMX つのサービス品質をサポートします。
- QoS0「最大 XNUMX 回」: メッセージは、動作環境の最善の努力に従って配信されます。 メッセージ損失が発生する可能性があります。
- QoS1「少なくとも XNUMX 回」: メッセージは確実に到着しますが、重複が発生する可能性があります。
- QoS2「XNUMX回だけ」: メッセージは確実に XNUMX 回だけ到着します。
MQTT の長所と短所
長所:
- シンプルさ: 最もシンプルなパブリッシュ/サブスクライブ設計で、セットアップ、開発、管理が簡単です。
- 軽量で効率的: MQTT メッセージには 2 種類のヘッダー オーバーヘッドしかなく、帯域幅の使用量が少ないため、このプロトコルは低電力、低帯域幅のデバイスに最適です。
- スケーラビリティ: 数千万の MQTT 接続、トピック、サブスクリプションまで拡張できます。
- 信頼性の高いメッセージ配信: 信頼性の低いネットワーク上でも、信頼性の高いメッセージ配信を保証する XNUMX つのサービス品質レベル。
- 低遅延: シンプルなトピックベースのパブリッシュ/サブスクライブ モデルにより、XNUMX 桁ミリ秒の遅延でほぼリアルタイムのメッセージ配信が可能です。
- セキュリティ: MQTT は、TLS/SSL または QUIC を介した安全な通信と、LDAP、JWT、PSK、および X.509 証明書を使用したさまざまな認証メカニズムをサポートします。
- 互換性と統合: MQTT は、多くのプログラミング言語、オペレーティング システム、ソフトウェア プラットフォームと統合できます。
短所:
- MQTT にはストア アンド フォワード キューがありません。
AMQPとは何ですか?
AMQP (Advanced Message Queuing Protocol) は、幅広いメッセージング パターンをサポートし、堅牢な機能セットを提供するプロトコルです。 2003 年に JP モルガン チェースによって作成されました。高レベルの信頼性と機能を必要とするシステム向けに設計されています。
MQTT とは異なり、AMQP はピアツーピア プロトコルであり、プロデューサーとコンシューマー間の直接通信をサポートします。
AMQP は、メッセージが交換機に送信され、バインディングと呼ばれるルールに基づいてメッセージを適切なキューにルーティングするモデルを使用します。 次に、コンシューマはキューからメッセージを取得します。
このモデルにより、複雑なルーティングおよび配布戦略が可能になり、AMQP が複雑な分散システムに適したものになります。
AMQP の強みは、その広範な機能セットにあります。 ブローカーが再起動してもメッセージが失われないようにする永続メッセージングなど、さまざまなメッセージ プロパティと配信モードをサポートします。
AMQP 交換とバインディング
AMQP では、交換は電子メールを検査し、ルーティング キーとテーブルに基づいて決定する電子メール転送エージェントのようなものです。 ルーティング キーは、サーバー情報を含まない、To:、Cc:、または Bcc: アドレスを持つ電子メールに対応します (ルーティングは AMQP サーバー内の内部で行われます)。 バインディングは、電子メール転送エージェントのルーティング テーブルのエントリに似ています。
AMQP では、次の XNUMX 種類の交換が定義されています。
- 直接(ポイントツーポイント): メッセージは、交換にバインドされたキューに直接ルーティングされます。
- 扇形に広がります: メッセージは、交換にバインドされたすべてのキューにルーティングされます。
- トピック (パブリッシュ/サブスクライブ): メッセージは、ルーティング キーと交換へのバインド パターンに基づいてキューにルーティングされます。
- ヘッダー (パブリッシュ/サブスクライブ): メッセージは、メッセージ ヘッダーのパターン マッチングに基づいてキューにルーティングされます。
AMQP トランスポートとフレーミング
AMQP は TCP/IP 上に構築されたバイナリ プロトコルで、クライアントとブローカーの間に信頼性が高く永続的なストリーム指向の接続が確立されます。 単一のソケット接続で複数のチャネルを開くことができ、複数のデータ ストリームを同時に転送できます。
バージョン 1.0 の AMQP フレームは、8 バイトの固定ヘッダー、オプションの拡張ヘッダー、および可変長のバイナリ ペイロードで構成されます。 固定ヘッダーには、フレーム タイプ、チャネル番号、ペイロードのサイズに関する情報が含まれています。
ペイロードには、送信される実際のメッセージと、関連するメタデータが含まれます。
AMQP の長所と短所
長所:
- ストアアンドフォワードキューイング: AMQP はストア アンド フォワード キューイングをサポートしますが、(MQTT と比較して) ある程度の効率と複雑さが犠牲になります。
- 柔軟なメッセージ ルーティング: AMQP は、ポイントツーポイント、パブリッシュ/サブスクライブ、ファンアウトなどの柔軟なメッセージ ルーティングを提供します。
- セキュリティ: AMQP は、暗号化と認証のために TLS や SASL などのセキュリティ対策をサポートしています。
- 生態系: AMQP には、オープンソースのサーバー実装とさまざまなプログラミング言語のクライアント ライブラリからなる大規模で成熟したエコシステムがあります。
短所:
- 繁雑: AMQP はモデルに多くの概念を導入しているため、理解、設定、管理が複雑で困難になる可能性があります。
- ヘビー級: AMQP では、トランスポート層に「チャネル」による多重化が導入されています。 各 AMQP フレームには 8 バイトのヘッダー オーバーヘッドがあります。
- 下位互換性: AMQP の最大の問題は、バージョン 0.9.1 と 1.0 が完全に異なるため、このソリューション領域がより複雑になることです。
- スケーラビリティとパフォーマンス: AMQP は、ユースケースによってはスケーラビリティが制限され、パフォーマンスが低下する場合があります。 これは、MQTT のような軽量プロトコルと比較して、より大きな複雑さとオーバーヘッドを課すそのアーキテクチャによるものです。
MQTT 対 AMQP: 直接対決
次の表は、AMQP と MQTT の比較をまとめたものです。
AMQP | MQTT | |
---|---|---|
定義 | 高度なメッセージ キュー プロトコル | メッセージ キューイング テレメトリ トランスポート |
Origins | 2003年にJPモルガン・チェースによって発明された | 1999年にIBMによって発明された |
アーキテクチャ | EBQ (交換バインディングキュー) | トピックベースのパブリッシュ/サブスクライブ |
コアの概念 | 交換キューバインディングルーティングキー | トピック定期購読 |
主なプロトコルのバージョン | · 0.9.1 2008年XNUMX月発売 · 1.0 2012年XNUMX月にリリース |
· 3.1.1 2015年XNUMX月発売 · 5.0 2019年XNUMX月発売 |
メッセージングのパラダイム | ||
ポイントツーポイント | ✅ (ストアアンドフォワードキュー) | 部分的なサポート |
発行/購読 | ✅ | ✅ |
扇形に広がります | ✅ | ✅ よりスケーラブル |
ファンイン | ✅ | ✅ |
リクエスト/リプライ | ✅ | ✅ バージョン 5.0 では |
押し引き | ❌ | ❌ |
転送ネットワーク | ||
TCP | ✅ | ✅ |
TLS / SSL | ✅ | ✅ |
WebSocketの | ❌ | ✅ |
QUIC | ❌ | ✅ |
骨組み | ||
フレーム構造 | フレームは XNUMX つの異なる領域に分割されます。 固定幅フレームヘッダー、 可変幅拡張ヘッダー、 幅可変のフレーム本体。 |
MQTT 制御パケットは、最大 XNUMX つの部分で構成されます。 固定ヘッダー 変数ヘッダー ペイロード |
ヘッダーサイズを修正 | 8バイト | 2バイト |
ペイロードコンテンツ | バイナリ | バイナリ |
最大ペイロードサイズ | 2GB | 256MB |
発送先 | ||
QoS 0: 最大 XNUMX 回 | ✅ | ✅ |
QoS 1: 少なくとも XNUMX 回 | ✅ | ✅ |
QoS 2: XNUMX 回だけ | ❌ | ✅ |
セキュリティ | SSL / TLS | SSL / TLS |
選択する際に考慮すべき要素
MQTT と AMQP のどちらを選択するかを決定する必要がある場合、考慮すべき要素がいくつかあります。
ユースケース要件に基づく評価
MQTT と AMQP のどちらを選択するかは、ユースケースの要件に大きく依存します。 制約のあるデバイスや信頼性の低いネットワークを扱う場合は、軽量な性質を持つ MQTT の方が良い選択肢になる可能性があります。 ユースケースで複雑なルーティングと高い信頼性が必要な場合は、AMQP の方が適しています。
システムアーキテクチャに基づく評価
システム アーキテクチャも決定に影響します。 MQTT はシンプルであるため、明確でシンプルな通信モデルを持つシステムに適しています。 AMQP は、その柔軟性と堅牢な機能セットを備えており、多様な通信ニーズを持つ複雑なシステムに適しています。
ネットワーク状況に基づく評価
ネットワークの状態も重要な要素です。 MQTT は、低帯域幅、高遅延、または信頼性の低いネットワークで優れたパフォーマンスを発揮します。 一方、AMQP ではオーバーヘッドが高いため、信頼性の高いネットワーク接続が必要です。
求められるサービス品質に基づく評価
MQTT は XNUMX つのレベルのサービス品質を提供し、メッセージ配信の保証を柔軟に行うことができます。 AMQP は永続的なメッセージングを備えているため、メッセージ配信における高い信頼性が保証されます。
あなたの決定をする
MQTT と AMQP には両方ともそれぞれの長所があり、さまざまなシナリオに適しています。 それらの主な違いを理解し、これらの違いに照らして要件を評価することは、選択する際に情報に基づいた決定を下すのに役立ちます。 正しい選択は、特定のニーズと制約によって決まることに注意してください。
- SEO を活用したコンテンツと PR 配信。 今日増幅されます。
- PlatoData.Network 垂直生成 Ai。 自分自身に力を与えましょう。 こちらからアクセスしてください。
- プラトアイストリーム。 Web3 インテリジェンス。 知識増幅。 こちらからアクセスしてください。
- プラトンESG。 カーボン、 クリーンテック、 エネルギー、 環境、 太陽、 廃棄物管理。 こちらからアクセスしてください。
- プラトンヘルス。 バイオテクノロジーと臨床試験のインテリジェンス。 こちらからアクセスしてください。
- 情報源: https://www.iotforall.com/mqtt-vs-amqp-for-iot-communications-head-to-head