Agenda -...

8
2.MQTT WebSphere Software MQTTIBM MessageSightセミナー © 2013 International Business Machines Corporation 2 Agenda 1. MQTT/IBM MessageSight登場の背景とユースケース 2. MQTT MQTTとは何か MQTTの特徴としてのPUB/SUBのしくみ MQTTを実装したWebSphereMQ 3IBM MessageSight

Transcript of Agenda -...

Page 1: Agenda - IBMpublic.dhe.ibm.com/software/dw/jp/websphere/connectivity/...メッセージ送達保証レベルを3種類規定 • QoS = 0 :メッセージは1回のみ送信される(送信先に届くかは保証しない)

2.MQTT

WebSphere Software

MQTT/IBM MessageSightセミナー

© 2013 International Business Machines Corporation 2

Agenda

1. MQTT/IBM MessageSight登場の背景とユースケース

2. MQTT

・MQTTとは何か・MQTTの特徴としてのPUB/SUBのしくみ・MQTTを実装したWebSphereMQ

3. IBM MessageSight

Page 2: Agenda - IBMpublic.dhe.ibm.com/software/dw/jp/websphere/connectivity/...メッセージ送達保証レベルを3種類規定 • QoS = 0 :メッセージは1回のみ送信される(送信先に届くかは保証しない)

© 2013 International Business Machines Corporation 3

Internet of Thingsは既に世の中を変えつつあります

Smartcar

異常な振動を

検知

詳細を報告

車両を解錠

車両の持ち主と

アポイントをセット

車両を検索部品故障を予測

17,000km におよぶパイプライン・ネットワーク

ポンプ流出箇所精錬装置圧力温度残量

30,000 の省エネセンサーやコントローラー

運用センターアプリケーション検知、予測、そして対応

© 2013 International Business Machines Corporation 4

デスクトップ環境とモバイル環境の違い

PC端末

座って利用

ドキュメント指向

アプリは高機能

コンテキストを意識しない

タスクが処理を開始

安定した電源

安定したネットワーク環境

モバイル移動しながら利用

メッセージ指向

目的に特化したアプリ

利用コンテキストを意識

通知が処理を開始

バッテリーで稼働

不安定なネットワーク環境

モノのインターネットの世界にもMobileと同じことが言えます。

さらに大量のクライアントとのデータ通信が必要!

モノのインターネットの世界にもモノのインターネットの世界にもMobileMobileと同じことが言えます。と同じことが言えます。

さらにさらに大量のクライアント大量のクライアントとのデータ通信が必要!とのデータ通信が必要!

Page 3: Agenda - IBMpublic.dhe.ibm.com/software/dw/jp/websphere/connectivity/...メッセージ送達保証レベルを3種類規定 • QoS = 0 :メッセージは1回のみ送信される(送信先に届くかは保証しない)

© 2013 International Business Machines Corporation 5

1. HTTPと比べて圧倒的に軽量なプロトコル• トラフィックが10分の1から100分の1に ⇒ 10~100倍のスループット

• 電池の消費量が10分の1以下に

• ヘッダーのサイズは最小で2バイト

MQTT ~ Smarter Planetを実現する通信プロトコル

2. 非同期、双方向通信: 必要なときに必要なだけ通信

• モバイルでのnativeなpush通知が可能に

• Pub/Subによる大量同報通知

• 低品質なネットワーク環境でも高い信頼性の伝送を実現

3. オープン仕様:• ベンダー・ロックインを回避

• 標準化によるデバイス開発コストの削減に寄与

• iOS, Android, Windows, Linux, Mac等、多様な環境で稼動

© 2013 International Business Machines Corporation 6

MQTT V3.1 Protocol SpecificationMQTTメッセージのフォーマット

・最小2バイト

・Message Typeでリクエストを示す

(右表)・2バイト目で残りのバイト数を示す

・必要に応じて、トピックストリング、ユーザーIDなどが付加される

(通常数十バイト)

MQTT V3.1 Protocol Specificationhttp://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html

Page 4: Agenda - IBMpublic.dhe.ibm.com/software/dw/jp/websphere/connectivity/...メッセージ送達保証レベルを3種類規定 • QoS = 0 :メッセージは1回のみ送信される(送信先に届くかは保証しない)

© 2013 International Business Machines Corporation 7

Source: http://stephendnicholas.com/archives/1217

モバイル環境におけるMQTTとHTTPSの比較 HTTPS vs MQTT on Android. We expect similar results on iOS.

Note number decimals when comparing performance and battery

Also interesting results are the reliability of MQTT vs HTTPS

© 2013 International Business Machines Corporation 8

MQTT の特徴: Publish/Subscribe型の通信

•Publish / Subscribe型–送信プログラムと受信プラグラムがトピックを介して1対Nで通信するモデル

• 送信側(パブリッシャー)が受信側(サブスクライバー)を意識せずにデータ送受信を行う

• サブスクライバーは受信したいトピックにサブスクライブ(購読)登録を行う

• パブリッシャーは、送信したいデータをトピックに対してパブリッシュ(送信)する

• 両者の間には必ずPub/Subブローカーが介在し、データの管理、配信を行う

•(参考)Point-to-Point(PTP)型–送信プログラムと受信プログラムがキューを介して1対1で通信するモデル

パブリッシャーパブリッシャー

Pub/Subブローカー

サブスクライバー

購読の登録(トピックA)

配信送信

トピックA

サブスクライバー

管理情報/データを保持

・サブスクライブ登録情報・パブリッシュ・データ など

トピックA

トピックA

プログラムBプログラムAプログラムBプログラムA

Page 5: Agenda - IBMpublic.dhe.ibm.com/software/dw/jp/websphere/connectivity/...メッセージ送達保証レベルを3種類規定 • QoS = 0 :メッセージは1回のみ送信される(送信先に届くかは保証しない)

© 2013 International Business Machines Corporation 9

MQTT の特徴: トピックの指定

olympic/tokyo/tennis/women/#

olympic/tokyo/100m/women/+

olympic/#/men/result

olympic/tokyo/+/men

対象:赤枠のノード

対象:緑枠のノード

対象:黄枠のノード

対象:青枠のノード

• ワイルドカードを用いた曖昧トピックの作成が可能– サブスクライブのみ使用可能

• # : マルチレベル (0レベル以上)、トピック・ツリーの最後のみ

• + : シングルレベル (1レベル)、トピック・ツリーの途中も可

• 例

例えば、olympic/tokyo/singles/tennis/women/# へのサブスクライブはolympic/tokyo/singles/tennis/women やolympic/tokyo/singles/tennis/women/result/001 などに

発信されたパブリケーションを受信することができる

無効

olympic/tokyo/+/men/+/+ 対象:紫枠のノード

olympic

tennis

riotokyo

100m

men women

result result

111 112

result

womenmen

001

result

002 101 102 002

© 2013 International Business Machines Corporation 10

MQTT の特徴: 3つのQoSが選択可能

• QoS(Quality of Service)– クライアントの不安定な稼働環境を想定し、クライアント、サーバー間の

メッセージ送達保証レベルを3種類規定

• QoS = 0 :メッセージは1回のみ送信される(送信先に届くかは保証しない)

• QoS = 1 :メッセージは最低1回は送信先に送られる(重複の可能性あり)

• QoS = 2 :メッセージは必ず正確に1回送信先に送られるPUBLISHQoS 0

PUBLISHQoS 1

PUBACK

PUBLISH

QoS 2

PUBREC

PUBREL

PUBCOMP

パブリッシュサブスクライブ

MQTTクライアント MQTTサーバー MQTTクライアント

QoS 0/1/2 QoS 0/1/2

受信

Page 6: Agenda - IBMpublic.dhe.ibm.com/software/dw/jp/websphere/connectivity/...メッセージ送達保証レベルを3種類規定 • QoS = 0 :メッセージは1回のみ送信される(送信先に届くかは保証しない)

© 2013 International Business Machines Corporation 11

MQTT の特徴: Durable Subscription

• 不安定なネットワークを想定した、MQTT特有の機能

• コネクション切断時にPublishされたメッセージをMQTTサーバーが保持し、再接続時にSubscriberが受信できる

• クライアントは接続時に「Clean Session」フラグで指定– MqttConnectOptions.cleanSession=falseの場合、SubscriptionはDurableとなり、Subscriber切断時のメッ

セージはMQTTサーバーに保持されており、再接続時に切断時にPublishされたメッセージを受信可能

– MqttConnectOptions.cleanSession=trueの場合、クライアントは新規接続扱いとなり、新たなPublicationの

みを処理

パブリッシュ MsgA

MQTTクライアント MQTTサーバー MQTTクライアント

QoS 1/2 QoS 1/2

MsgB

MsgB MsgA

トピックAコネクション切断

パブリッシュ

受信

MQTTクライアント MQTTサーバー MQTTクライアント

トピックA

サブスクライブ

サブスクライブ

© 2013 International Business Machines Corporation 12

MQTT の特徴: Retained Publication

• 特定のトピックに対して最後にPublishされたメッセージをMQTTサーバーが保持し、新たにSubscribeしたクライアントに渡せる機能

• 株価情報や気象情報等を送受信する際にSubscriberに最新の情報を渡したいときや、LWT(遺言状)にも利用可能

パブリッシュ

MsgA

MQTTクライアント MQTTサーバー

MsgB

MsgB

トピックA

パブリッシュ

受信

MQTTクライアント MQTTサーバー MQTTクライアント

トピックA

サブスクライブ

Page 7: Agenda - IBMpublic.dhe.ibm.com/software/dw/jp/websphere/connectivity/...メッセージ送達保証レベルを3種類規定 • QoS = 0 :メッセージは1回のみ送信される(送信先に届くかは保証しない)

© 2013 International Business Machines Corporation 13

MQTT の特徴: Last Will &Testament(LWT) : 遺言状

• 不安定なネットワークや信頼性の低いデバイスを想定した、MQTT特有の機能

• クライアントは事前に「遺言状」をMQTTサーバーに登録しておく– コネクションが切れた際に、指定のトピックに指定のメッセージをPublishするよう依頼

• ネットワークダウンやデバイスの故障などでコネクションが切れると、クライアント側からはメッセージが送れないため、MQTTサーバー側で「遺言状」をPublish

– 遺言状を受け取ったアプリケーションが適切なアクションを実行可能に

MQTTサーバー(WMQ/MessageSight)

センサー

モバイル

その他のアプリケーション

①コネクション切断

②遺言状をPublish

②遺言状をPublish

© 2013 International Business Machines Corporation 14

MQTTクライアントのコーディングイメージimport com.ibm.micro.client.mqttv3.*;

public class MqttPubSync {public static void main(String[] args) {

try {MqttClient client = new MqttClient("tcp://localhost:1883", “PubClient001");

MqttConnectOptions conOptions = new MqttConnectOptions();conOptions.setCleanSession(false);client.connect();

MqttTopic topic = client.getTopic("/MQTT/Examples");MqttMessage message = new MqttMessage("Hello World!".getBytes());message.setQos(1);

MqttDeliveryToken token = topic.publish(message);token.waitForCompletion(10000);

client.disconnect();} catch (Exception e) {e.printStackTrace();}}}

・・・MQTT用のパッケージ

・・・クライアントの作成

・・・接続オプションの設定・・・クリーン・セッション設定・・・接続の実施

・・・トピックの作成・・・メッセージの作成・・・QoSの設定

・・・パブリッシュの実施・・・確認応答待ち

・・・接続の切断

※上記は簡略化したコード・イメージであり、実環境での稼働を保証するものではありません。

Page 8: Agenda - IBMpublic.dhe.ibm.com/software/dw/jp/websphere/connectivity/...メッセージ送達保証レベルを3種類規定 • QoS = 0 :メッセージは1回のみ送信される(送信先に届くかは保証しない)

© 2013 International Business Machines Corporation 15

WebSphere MQとの関係 ~WebSphere MQでもMQTTを利用可

• MQ Telemetry サービスは、MQのPub/Subアプリケーションとして稼動– MQTTクライアントとMQ Pub/Sub アプリケーションは相互通信可能

① MQTT クライアントからのサブスクライブ登録はTelemetry サービスによって、MQ Pub/Sub ブローカーに登録される

② MQTT クライアントからパブリッシュした

メッセージは該当トピックをサブスクライブしているMQ Pub/Subアプリケーションにも送信される

③ MQ Pub/Subアプリケーションからパブリッシュした

メッセージは該当トピックをサブスクライブしているMQTTクライアントに送信される

④ MQアプリケーションから直接MQTTクライアントにメ

ッセージを送信することが可能MQアプリはMQTTクライアントのクライアントIDを指定して送信(クライアントIDはMQTTクライアントが接続時に指定するユニークなID)※MQTTクライアントからMQアプリへの直接メッセー

ジ送信は不可

MQ キューマネージャー

Telemetry サービス

Telemetry チャネル

MQTTクライアント

MQ Pub/Sub ブローカー

MQ Pub/Subアプリ

トピックサブスクリプション

① ②

③ ④

MQアプリ

© 2013 International Business Machines Corporation 16

WebSphere MQでのMQTTパフォーマンス例

• AIXでのMulti-Publisher/Single-Subscriber (QoS=0)のパフォーマンス例– 同時接続60000までをテスト

• 4000パブリッシャーごとに、0.15件/secでQoS=0のメッセージをパブリッシュ

– パブリッシャーの接続数の増加に比例して処理メッセージレートが増加

• 60000接続時に18000メッセージ/sec、CPU使用率は十数%

詳細な検証シナリオ、他プラットフォーム(Linux on System x, Linux on System z)については下記をご参照ください。

[出典] MP0D: WebSphere MQ Telemetry V7.5 - Performance Evaluations

http://www-01.ibm.com/support/docview.wss?uid=swg24034416

[AIX/QoS0 Multi-publisher, single-subscriber Results]

測定環境

IBM Power7 P750 8233-E8B

16 core x 3.55GHz SMT x4 enabled

32 GB of RAM

AIX 7.1.0.0 TL05 SP2

MQ Log and Queues on SAN disks on DS8700

10Gbit Ethernet Adapter