WHITE PAPER
Driving the Future of Connected Cars with MQTT →

MQTT Broker:原理、人気のオプション、クイックスタート

EMQX Team
Jul 17, 2023
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 Broker Architecture

  • 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、ダッシュボードによるクラスタリングをサポートしている。

EMQX Enterprise を無料トライアル
任意のデバイス、規模、場所でも接続可能です。
Get Started →

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アーキテクチャ上で動作します。

NanoMQを無料で試す
スタートアップ →

VerneMQ

VerneMQプロジェクトは2014年に発足し、当初はErlio GmbHによって開発された。Erlang/OTPで書かれた2番目のブローカーとして、このプロジェクトはApacheバージョン2.0でライセンスされ、EMQXプロジェクトからいくつかのコードを借用している。アーキテクチャ設計に関しては、VerneMQはLevelDBでのMQTTメッセージの永続化をサポートし、Epidemic Broadcast Treesアルゴリズムを実装したPlumtreeライブラリに基づくクラスタリングアーキテクチャを使用している。

MQTTブローカーを選ぶ方法と、評価プロセスをサポートするリソースについて説明します。

MQTTブローカーを選ぶ際のポイントや評価プロセスを支援するリソースについて、以下の記事が役立ちます。組織のニーズに合った最適なMQTTブローカーを選ぶために、ぜひ参考にしてください。

評価基準

MQTTブローカーの比較

MQTTブローカーのベンチマークテスト

MQTTブローカーをスタートすることに役立つリソース

MQTTブローカーの統合

  • PrometheusとGrafanaでMQTTブローカーを監視する

    この記事では、EMQX 5.0の監視データをPrometheusに統合する方法、EMQXの監視データを表示するためにGrafanaを使用する方法を紹介し、最後にシンプルなMQTTブローカー監視システムを構築します。

  • EMQX + ClickHouseがIoTデータ収集と分析を実装

    IoTデータ収集には大量の機器とデータが含まれるため、EMQX + ClickHouseはIoTデータへのアクセス、保存、分析、処理が完全に可能です。

  • ThingsBoardでMQTTデータにアクセスする方法

    ここでは、ThingsBoard CloudとEMQX Cloudを組み合わせて使用し、サードパーティのMQTTブローカーをThingsBoardに統合してMQTTデータにアクセスする方法を説明します。

  • Node-REDで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、コネクテッドカー、製造業、通信業などの各種ビジネスクリティカルなアプリケーションで広く活用されています。

EMQX Enterprise を無料トライアル
任意のデバイス、規模、場所でも接続可能です。
Get Started →