IoT Hub とは「メッセージング」処理を提供するサービスです。
メッセージングとは、何でしょうか?
メッセージングとは、分離したシステム間でのメッセージのやりとりを指します。
通常だと、システム通信は1対1で行うのですが、この方式だと都合が悪い状況があります。
例えば、送信側は、メッセージを送信した後、受信側からの受取連絡をもらうまで、
待機状態が発生し、次の送信処理に移れません。
そこで登場するのが、IoT Hub のようなメッセージングシステムです!!
IoT Hub を利用するとイイことがあります。
非同期:送信側は受信側の状態を気にせず、メッセージ送信が可能。メッセージ保持機能。
負荷平準化:受信側はピーク時を避けてメッセージを処理できる。
負荷分散:受信側の数を増やす事で多くのメッセージを処理できる。
基本的には、[Event Hub]と同様のメッセージングサービスなのですが、デバイスからのメッセージの取り込みに特化しており、[デバイスとの双方向通信][個別デバイスの認証]に重点が置かれています。
【IoT Hub】
[特徴]
・送信側と受信側との双方向通信
・1メッセージ=多受信者 ※送信側と受信側に関係性は無い
・メッセージ送信の単位を[コンシューマーグループ]で仕分け、受信側に配信する。
・デバイス単位での認証が可能
・配信順序:FIFO(保証なし)
・配信方法:At-Least-Once=最低1回送信。
・受信モード:
コンシューマーグループはパーティション内の古いメッセージから順次読み取りを行うのですが、どこまで読み取ったかを記録するために、オフセット値(パーティション内での位置を示す値)を記録します。なので、受信側が障害などでダウンした場合でも、最初から読み取り始めるのでは無く、オフセット値から再開できます。
・排他方法:シングルスレッドなので不要。
・プロトコル:MQTT、AMQP、HTTP
・メッセージサイズ:D2C=256KB、C2D=64KB
・キューサイズ:S1_1.5GB/日、S2_22.8GB/日、S3_1144.4GB/日(ユニットあたり)
・メッセージ保存期間:D2C=1~7日、C2D=2日
それでは、作成してみましょう!
[+新規]ー[モノのインターネット(IoT)]ー[IoT Hub]を選択
名前:表示名
価格とスケール:1日に受信するメッセージ数で決める。
IoT Hub ユニット:例 S1 2ユニットだと80万メッセージを処理できる。
Device-to-cloud パーティション:2~32 ※作成後変更不可
サブスクリプション:Azureサービスの提供範囲
リソースグループ:グループ名(複数のリソースを1つにグループ化する機能)
場所:デプロイするAzureのリージョン
作成できましたので、中身を見ていきましょう!!
[共有アクセスポリシー]
IoT Hub に接続するデバイスに対して、接続キーと権限を与える。
[価格とスケール]
スケールとユニットの変更が可能。
F1 8,000/日 メッセージを処理可能/ 1ユニットまで
S1 400,000/日 メッセージを処理可能/ 200ユニットまで追加可能
S2 6,000,000/日 メッセージを処理可能/ 200ユニットまで追加可能
S3 300,000,000/日 メッセージを処理可能/ 10ユニットまで追加可能
※F1のみ、サブスクリプションあたり1つしか作成できません。作成後の変更も不可。
[おおよその最大スループット/ユニット]
S1 18.5KB/sec
S2 266.6KB/sec
S3 13,566.6KB/sec
[おおよその平均送信メッセージ数/ユニット]
S1 4.6/sec
S2 69.4/sec
S3 3,472.2/sec
※S1を購入しても、40万メッセージを同時に送信する事はできません。
※1メッセージあたり最大256KB/ブロックサイズ4KB
[操作の監視]
デバイスの接続/切断などのログを取得できます。
※保持時間:リテンション期間。キュー内にメッセージを保持する期間。
[IP Filter]
接続デバイスの[許可/拒否]を「IPアドレス」で指定できます。
[診断]
診断ログを Blobストレージ と Event Hub にエクスポートできます。