network
MQTT
一言でいうと
MQTT は、IoT機器やセンサーなどの軽量なデバイスが、低帯域・不安定なネットワークでもメッセージをやり取りしやすいように作られた通信プロトコル。
より具体的には
MQTT は Message Queuing Telemetry Transport の略で、主に IoT や M2M 通信で使われる軽量なメッセージングプロトコル。
TCP の一種ではなく、TCP の上で動く アプリケーション層プロトコルにあたる。
構造としては、概念的に次のような位置づけになる。
MQTT
TCP / TLS
IP
MQTT では、通信する端末同士が直接やり取りするのではなく、Broker と呼ばれる中継サーバーを介してメッセージを送受信する。
基本的な考え方は Publish / Subscribe 方式。
- Publisher: メッセージを送る側
- Subscriber: メッセージを受け取る側
- Broker: メッセージを中継するサーバー
- Topic: メッセージの宛先や分類を表す文字列
たとえば、温度センサーが次のような Topic にデータを Publish する。
factory/line1/temperature
その Topic を Subscribe しているアプリケーションやサーバーが、温度データを受け取る。
MQTT は HTTP のように毎回リクエスト・レスポンスを行う方式ではなく、Broker との接続を維持しながら小さなメッセージを継続的に送受信する。そのため、IoT機器、センサーデータ収集、遠隔監視、車載・エッジデバイス連携などに向いている。
また、MQTT には QoS という配信保証レベルがある。
- QoS 0: 最大1回配信。届かない可能性があるが軽い
- QoS 1: 最低1回配信。重複する可能性はあるが届くことを重視
- QoS 2: 正確に1回配信。重いが重複を避けやすい
まとめると、MQTT は「軽量なデバイスが、Broker を介して Topic 単位でメッセージをやり取りするための通信プロトコル」と理解するとよい。
関連
- IoT
- Broker
- QoS
- WebSocket
- Kafka
- Redis Streams