MQTT Broker:原理、人気のオプション、クイックスタート
目次
MQTTブローカーとは?
MQTTは、インターネット・オブ・シングス(IoT)の領域を支える軽量で効率的なプロトコルです。この記事では、通信を仲介する中央ハブ、つまりMQTTブローカーの機能を深掘りし、その実装の比較、使用例、特性、そしてベストプラクティスを詳細にレビューします。
MQTTブローカーとは、MQTTクライアント間で通信を可能にするための中間エンティティです。具体的には、MQTTブローカーは、クライアントから送信されたメッセージを受け取り、トピックごとにメッセージをフィルタリングし、サブスクライバーに配信します。
MQTTブローカーの活用により、パブリッシュ/サブスクライブ(pub/sub)通信モデルを効果的に実現することができます。これにより、MQTTは非常に効率的でスケーラブルなプロトコルとして機能します。
なぜMQTTブローカーが重要ですか?
MQTTブローカーは、MQTTクライアント(パブリッシャーとサブスクライバー)間の通信を促進し、MQTTアーキテクチャの中心的な役割を果たします。MQTTブローカーの重要性は以下の要素に由来します:
- メッセージのルーティング:MQTTブローカーはパブリッシャーからメッセージを受け取り、それをトピックのサブスクリプションに基づいて適切なサブスクライバーにルーティングします。これにより、クライアント間の直接の接続が不要となり、メッセージの配信が効率的かつ正確に行われます。
- スケーラビリティ:MQTTブローカーは、大量の同時接続を処理する能力を持ちます。これは、IoTやM2M通信シナリオで数千から数百万のデバイスが存在する可能性がある状況で必要となる能力です。この接続とメッセージの管理能力により、MQTTプロトコルは効果的にスケールアップできます。
- セキュリティ:MQTTブローカーは認証や暗号化などのセキュリティ機能を提供し、IoTデバイスとアプリケーション間でデータの安全性を確保します。詳細はこちら:「MQTTセキュリティについて知っておくべき7つの重要事項 2023」。
- 統合:MQTTブローカーは、他の通信プロトコルやクラウドプラットフォームと統合し、全体的なIoTソリューションを提供します。たとえば、MQTTブローカーは、AWS IoT、Google Cloud IoT、またはMicrosoft Azure IoT Hubと統合し、シームレスなIoTエコシステムを構築します。
- セッション管理:MQTTブローカーは、クライアントのサブスクリプション情報の維持や、クライアントがオンラインになったときに配信するために保存されるメッセージの管理など、クライアントのセッション管理を担当します。このセッション管理機能により、クライアントが接続を切断して後にブローカーに再接続しても、メッセージが失われることはありません。詳細はこちら:「MQTT Persistent SessionとClean Sessionの説明」。
MQTTブローカーアーキテクチャの概要
MQTTブローカーアーキテクチャは、メッセージプロデューサー(パブリッシャー)とメッセージコンシューマー(サブスクライバー)を分離するパブリッシュ/サブスクライブメッセージングパターンに基づいています。このアーキテクチャは、クライアント、トピック、ブローカーの3つの主要コンポーネントから成り立ちます。
MQTTブローカー・サーバー
MQTT ブローカーは、パブリッシャーからメッセージを受信し、トピックのサブスクリプションに基づいてサブスクライバーに配信するサーバーである。クライアント接続を管理し、サブスクリプションとアンサブスクリプションを処理し、指定された QoS (Quality of Service) レベルに従ってメッセージ配信を保証する。
MQTTクライアント
MQTT クライアントは、パブリッシャー、サブスクライバー、またはその両方になることができる。パブリッシャは MQTT ブローカにメッセージを送信し、サブスクライバはブローカからメッセージを受信する。クライアントは、IoT デバイス、モバイルアプリケーション、その他のサーバーなど、MQTT プロトコルを使用して MQTT ブローカーへの接続を確立できるデバイスまたはアプリケーションであれば何でもよい。
トピックス
トピックはメッセージのサブジェクトやカテゴリを定義する階層的な文字列です。パブリッシャーがブローカーにメッセージを送信する際、特定のトピックに関連付ける。サブスクライバは、1 つまたは複数の MQTT トピックをサブスクライブすることで、メッセージの受信に関心を示す。ブローカーは、トピックのサブスクリプションに基づいて、適切なサブスクライバーにメッセージをルーティングします。
MQTT ブローカー・アーキテクチャには、集中型と分散型がある。集中型アーキテクチャでは、単一のブローカーがクライアント間のすべての通信を処理する。分散アーキテクチャでは、複数のブローカーが連携してスケーラブルでフォールトトレラントなメッセージングインフラストラクチャを提供します。分散アーキテクチャの各ブローカーは、他のブローカーと協調してメッセージルーティングを管理し、メッセージが意図した受信者に確実に配信されるようにすることができます。
全体として、MQTTブローカー・アーキテクチャは、柔軟で効率的なメッセージング・インフラストラクチャを提供し、デバイスとアプリケーションのセキュアで効率的なスケールの通信を可能にします。
人気のオープンソースMQTTブローカー
EMQX
EMQXは現在、IoTアプリケーション向けの最もスケーラブルなMQTTブローカーである。ミリ秒以下のレイテンシーで1秒間に数百万のMQTTメッセージを処理し、単一のクラスタ内で1億以上のクライアント間のメッセージングを可能にする。EMQXはMQTT 5.0および3.xに準拠しており、分散IoTネットワークに最適で、クラウド、Microsoft Azure、Amazon Web Services、Google Cloud上で実行できる。このブローカーはTLS/SSL上でMQTTを実装でき、PSK、JWT、X.509などの認証メカニズムをサポートしている。Mosquittoとは異なり、EMQXはCLI、HTTP API、ダッシュボードによるクラスタリングをサポートしている。
Mosquitto
Eclipse Mosquittoは、MQTTプロトコル・バージョン5.0、3.1.1、3.1に対応したオープンソースのMQTTブローカーです。Mosquittoは軽量で、低消費電力のシングルボードコンピュータやエンタープライズサーバーにインストールできる。ブローカーはCプログラミング言語で書かれており、Cライブラリを使ってMQTTクライアントに実装できる。Windows、Mac、Linux、Raspberry Pi用にダウンロードできる。すぐにインストール可能なバイナリファイルは、すべてのオペレーティング・システムで利用可能です。最新バージョンには、認証・認可プラグイン "mosquitto-go-auth "が含まれており、Mosquittoインスタンスを管理するためのウェブ・ユーザー・インターフェイスとなっている。また、PHPでMQTTクライアントを作成するためのPHPラッパー "Mosquitto-PHP "も提供されています。
NanoMQ
NanoMQはIoTエッジ向けに設計された軽量で高速なMQTTブローカーです。NanoMQは純粋なC言語で実装され、NNGの非同期I/Oとマルチスレッド・アクター・モデルをベースにしており、MQTT 3.1.1とMQTT 5.0のプロトコル・バージョンを完全にサポートしています。NanoMQはスタンドアロン・ブローカーとしては高性能です。魅力的な利点はその移植性です。どのようなPOSIX互換のプラットフォームにもデプロイでき、x86_64、ARM、MIPS、RISC-Vなどの異なるCPUアーキテクチャ上で動作します。
VerneMQ
VerneMQプロジェクトは2014年に発足し、当初はErlio GmbHによって開発された。Erlang/OTPで書かれた2番目のブローカーとして、このプロジェクトはApacheバージョン2.0でライセンスされ、EMQXプロジェクトからいくつかのコードを借用している。アーキテクチャ設計に関しては、VerneMQはLevelDBでのMQTTメッセージの永続化をサポートし、Epidemic Broadcast Treesアルゴリズムを実装したPlumtreeライブラリに基づくクラスタリングアーキテクチャを使用している。
MQTTブローカーを選ぶ方法と、評価プロセスをサポートするリソースについて説明します。
MQTTブローカーを選ぶ際のポイントや評価プロセスを支援するリソースについて、以下の記事が役立ちます。組織のニーズに合った最適なMQTTブローカーを選ぶために、ぜひ参考にしてください。
評価基準
-
2023年に完璧なMQTTブローカーをお探しですか?選択する前に、以下の7つの重要な要素を考慮してください。詳しくはガイドをお読みください。
MQTTブローカーの比較
2023年におけるオープンソースMQTTブローカーの包括的比較
この記事では、2023年におけるオープンソースのトップMQTTブローカーを探り、顧客のニーズに最適なものを選ぶのに役立つよう、それらを徹底的に比較する。
2023年の産業用IoT向けオープンソースMQTTブローカーのトップ3
この記事では、2023年のIIoT向けMQTTブローカーのトップ3を比較し、各ブローカーのメリット、デメリット、ユースケースを紹介する。
EMQX vs Mosquitto|2023年MQTTブローカーの比較
2023年に人気のオープンソースMQTTブローカーとしてEMQXとMosquittoの違いをご覧ください。
EMQX vs NanoMQ|2023年MQTTブローカーの比較
2023年のEMQXとNanoMQ MQTTブローカーを比較して、IoTプロジェクトに最適なものを選びましょう。拡張性、セキュリティ、信頼性については、ガイドをご覧ください。
EMQX vs VerneMQ|2023年MQTTブローカーの比較
EMQXとVerneMQのMQTTブローカーを包括的に分析し、IoTプロジェクトに適した選択をしましょう。
MosquittoとNanoMQの比較|2023 MQTTブローカーの比較
このブログ記事では、MosquittoとNanoMQをMQTTブローカーとして比較し、2023年のさまざまなユースケースに適したものを読者が判断するのに役立てます。
-
この記事では、いくつかの人気のある無料オンラインMQTTブローカーを整理し、選択する際の参考になれます。
MQTTブローカーのベンチマークテスト
オープンMQTTベンチマーク・スイート:MQTTパフォーマンス・テストのガイド
EMQによって提供されているOpen MQTTベンチマークスイートを紹介します。このベンチマークスイートにより、MQTTブローカーのスケーラビリティとパフォーマンスを偏見なく評価することができます。
オープンMQTTベンチマーク比較:2023年のMQTTブローカー
当社の網羅的なベンチマーク解析からあなたの理想のMQTTブローカーを見つけてください。今すぐベンチマークインサイトにアクセスできます
オープンMQTTベンチマーク比較:MosquittoとNanoMQの比較
この包括的な分析で、MosquittoとNanoMQのパフォーマンスをOpen MQTT Benchmarkingで比較してください。あなたのニーズに合ったMQTTブローカーを見つけましょう。
オープンMQTTベンチマーク比較:EMQX vs NanoMQ
Open MQTTベンチマークスイートのパフォーマンス結果から、適切なMQTTブローカーの選択を補助します。
オープンMQTTベンチマーク比較:EMQXとMosquittoの比較
この包括的な分析で、EMQXとMosquittoのパフォーマンスをOpen MQTT Benchmarkingで比較する記事です。
オープンMQTTベンチマーク比較:EMQX vs VerneMQ
この包括的な分析で、EMQXとVerneMQのパフォーマンスをOpen MQTT Benchmarkingで比較する記事です。
-
MQTTブローカーEMQXのスケーラビリティをストレステストするために、23台のEMQXノードのクラスタに100万のMQTT接続を確立し、EMQXのパフォーマンスを述べる記事です。
MQTTブローカーをスタートすることに役立つリソース
EMQX Cloudを始めよう:MQTTサービスを始める最も簡単な方法
このページでは、フルマネージドMQTTサービスであるEMQX Cloudのアカウント作成から、EMQX Cloudの機能や特徴について、ステップ・バイ・ステップでご紹介します。
-
この記事ではEMQXを例に、Ubuntu上でシングルノードのMQTTブローカーを構築する方法を紹介する。
-
EMQX MQTTブローカーは複数のセキュリティ認証をサポートしています。この記事では、EMQXでMQTTのSSL/TLSを有効にする方法を紹介します。
MQTTブローカーの統合
PrometheusとGrafanaでMQTTブローカーを監視する
この記事では、EMQX 5.0の監視データをPrometheusに統合する方法、EMQXの監視データを表示するためにGrafanaを使用する方法を紹介し、最後にシンプルなMQTTブローカー監視システムを構築します。
EMQX + ClickHouseがIoTデータ収集と分析を実装
IoTデータ収集には大量の機器とデータが含まれるため、EMQX + ClickHouseはIoTデータへのアクセス、保存、分析、処理が完全に可能です。
-
ここでは、ThingsBoard CloudとEMQX Cloudを組み合わせて使用し、サードパーティのMQTTブローカーをThingsBoardに統合してMQTTデータにアクセスする方法を説明します。
-
今回は、Node-REDを使ってMQTTブローカーにアクセスし、MQTTデータを加工してからブローカーに送信するまでの操作手順を紹介した。
EMQX: 世界で最もスケーラブルなMQTTブローカー
EMQX は1.15万のスターを獲得している人気のMQTTブローカーの一つで、GitHub上にあるEMQXプロジェクトは2012年に立ち上げられ、Apache version 2.0のライセンス下にある。EMQXは大規模にスケーラブルなソフトリアルタイムシステムを構築するためのErlang/OTPプログラミング言語で書かれている。
EMQXはMQTT 5.0、MQTT-SN、MQTT over QUICのような高度な機能をサポートする世界で最もスケーラブルなMQTTブローカーです。ハイアベイラビリティと水平方向スケーラビリティのためにマスタレスクラスタリングをサポートしています。最新版のEMQX 5.0は、23ノードのシングルクラスタで100万の同時MQTT接続を確立することができます
EMQXは豊富なエンタープライズ機能、データインテグレーション、クラウドホスティングサービス、EMQ Technologies Inc.からの商用サポートを提供しています。年間を通じて高いパフォーマンス、信頼性、スケーラビリティのためにエンタープライズ、スタートアップ、個人の間で評判を得ています。特に、インダストリアルIoT、コネクテッドカー、製造業、通信業などの各種ビジネスクリティカルなアプリケーションで広く活用されています。