MQTTについて

(https://en.wikipedia.org/wiki/MQTTより引用)

概要

MQTT is an OASIS standard messaging protocol for the Internet of Things (IoT).

https://mqtt.org/
  • 2013年以降、MQTTは何の略でもない[3]
    • もともとはMessage Queue Telemetry Transportの略
    • 1999年後半にIBMによってされ、IBMの製品シリーズの名残で「MQ」がついているが、実際にはMessage Queuingは使用されていない[3]
  • TCP/IPスタックの上に構築される、Publish/Subscribe型(Pub/Sub型)のIoT向け(シンプルで軽量な)メッセージプロトコル[1]
    • すべてのデータ通信が暗号化されるSSL/TLS上で実行することもできる
    • 非同期通信もサポート
    • TCP/IPではないネットワーク上のデバイス向けのMQTT-SN(MQTT for Sensor Networks)というプロトコルもある
  • 2014年後半にOASIS Openスタンダードとなり、サポートできる言語が広がった[1]
    • OASIS(Organization for the Advancement of Structured Information Standards、構造化情報標準促進協会)は、e-ビジネス標準の開発、統合および採用を推進する非営利国際コンソーシアム。有力なコンピュータと通信に関する標準化団体の1つ。

      https://ja.wikipedia.org/wiki/OASIS_(%E7%B5%84%E7%B9%94)
  • 最新version:5.0(Mar 07, 2019)
  • 特に、Industry 4.0のIIoTや、Cloud Nativeといった新世代のコンセプトでは、Microservice Architectureなどサイロ化されたシステムを念頭に置くことが多い。このような構造で、サービス間連携を効率的に行うためには、MQTTのようなプロトコルがサステナブルなシステム構築において重要なポイントとなる。

MQTT Pub/Sub model

MQTT Publish / Subscribe Architecture
https://mqtt.org/
  • MQTT Client同士がMQTT Brokerを介して、MQTT Messageを通信する
  • Pub/Subメッセージングモデル
    • Messageを送る側のClientをPublisher(またはProducer)、受け取る側のClientをSubscriber(またはConsumer)と呼ぶ
    • MQTT Brokerが管理するTopicにPublisherがMessageを送信し、Topicに登録されているSubscriberにそのMessageが配信される
      • MessageをBrokerへ登録するという点が、通信したい端末同士が直接やり取りする従来のClient-Serverシステムとは異なる点
  • 主な利点
    • PublisherとSubscriberが互いを認識する必要がない
      • ClientはBrokerのホストネームまたはIPアドレスと、ポートが分かっていればよい
    • PublisherとSubscriberが同時に稼働している必要がない
    • Messageの送受信それぞれが独立して行われるため、互いのプロセスを干渉しない
      • 非同期でも同期でも動作する

MQTT関連ソフト

より詳細なリストはこちら

MQTT Broker

  • Mosquitto
    • オープンソース
  • VerneMQ
    • オープンソース
  • HiveMQ
    • オープンソースのHiveMQ CE
    • エンタープライズ版のHiveMQ Professional and Enterprize
    • クラウド版のHiveMQ Cloud
  • AWS IoT Core
  • Solace PubSub+

Client library

  • 言語や環境によってさまざまある
    • mbed, Arduino向けのライブラリ
    • C言語、Javaで動くライブラリ

参考

  1. https://developer.ibm.com/articles/iot-mqtt-why-good-for-iot/
  2. https://en.wikipedia.org/wiki/MQTT
  3. https://www.hivemq.com/mqtt-essentials/
  4. https://www.hivemq.com/blog/mqtt-broker-comparison-iot-application/
  5. https://www.iiot-world.com/industrial-iot/connected-industry/a-data-driven-approach-to-sustainability-in-industry-4-0-using-mqtt/
  6. https://www.hivemq.com/blog/data-driven-approach-sustainability-iiot-industry40-mqtt-sparkplug/?utm_source=iiotworld