電子棚札 (ESL) としても知られるデジタル価格タグは、小売店舗で紙のラベルをネットワーク接続された電子スクリーンに置き換えます。このソリューションは、ApsaraMQ for MQTT を使用して、価格更新をプッシュし、店舗全体のデバイスステータスをリアルタイムで収集します。
仕組み
このシステムは、店舗内のエッジデバイス、MQTTメッセージングレイヤー、バックエンド処理サービス、および永続ストレージの4つのレイヤーを接続します。

コンポーネントの役割
| レイヤー | コンポーネント | 役割 |
|---|---|---|
| エッジ | デジタル価格タグ | 価格を表示する電子スクリーン。BluetoothまたはZigBee経由でスマートAPに接続します。 |
| エッジ | スマートアクセスポイント (AP) | アプリケーションプログラミングをサポートするネットワークデバイス (スマートルーターなど)。タグデータを集約し、コマンドをリレーし、SSL/TLS暗号化を使用してパブリックインターネット経由でApsaraMQ for MQTTに接続します。 |
| メッセージング | ApsaraMQ for MQTT | スマートAPとバックエンドサービス間の双方向メッセージングを処理するMQTTブローカー。数百万の同時接続にスケーリングし、ミリ秒レベルのプッシュレイテンシーを実現します。 |
| メッセージング | ApsaraMQ for RocketMQ | MQTTブローカーとバックエンドサービスをブリッジするクラウド側のメッセージキュー。信頼性の高いメッセージルーティング、バッファリング、およびコンシューマーへの配信を処理します。 |
| バックエンド | デジタル価格タグ管理サービス | Elastic Compute Service (ECS) にデプロイされます。価格変更タスクを管理し、タグステータスを追跡し、更新ワークフローをオーケストレーションします。 |
| ストレージ | ApsaraDB for RDS | 価格変更の進行状況や完了ステータスなど、タスクの状態を永続化します。 |
| ストレージ | Simple Log Service (SLS) | 監査とトレースのために、価格タグレポートデータと操作ログを保存します。 |
データフロー
このシステムは、ステータスレポート (デバイスからクラウドへ) と表示更新 (クラウドからデバイスへ) の2つの主要なデータフローをサポートしています。
ステータスレポート
各デジタル価格タグは、BluetoothまたはZigBee経由でスマートAPと定期的にデータを交換し、現在の表示ステータス、電力容量、およびその他の情報を報告します。
スマートAPは報告されたデータを集約し、MQTTメッセージをApsaraMQ for MQTTブローカーに公開します。
MQTTブローカーはメッセージをApsaraMQ for RocketMQトピックにルーティングします。
デジタル価格タグ管理サービスは、ApsaraMQ for RocketMQからメッセージを消費し、タグステータスを処理し、データをSLSに書き込みます。
表示更新
デジタル価格タグ管理サービスは、価格変更コマンドをApsaraMQ for RocketMQに公開します。
ApsaraMQ for MQTTはコマンドをMQTTメッセージとしてターゲットのスマートAPにルーティングします。
スマートAPはコマンドを受信し、更新タスクをローカルでキューに入れます。
次のポーリングサイクルで、デジタル価格タグはスマートAPから新しい表示コンテンツを取得し、画面を更新します。
スマートAPは、MQTT確認応答を管理サービスに公開することで完了を確認します。
管理サービスは、トレースのためにタスク結果をSLSにログ記録します。
MQTTの概念
MQTTプロトコル
Message Queuing Telemetry Transport (MQTT) は、モノのインターネット (IoT) およびモバイルインターネット向けに設計された、業界標準の軽量メッセージングプロトコルです。ApsaraMQ for MQTTは、このプロトコルに基づいて構築されたフルマネージドのMQTTブローカーサービスです。
ブローカーとクライアント
MQTTブローカーは、メッセージを受信、ルーティング、転送するサーバー側のノードです。このソリューションでは、ApsaraMQ for MQTTがブローカーとして機能します。
MQTTクライアントは、ブローカーに接続してメッセージを公開またはサブスクライブするデバイスまたはアプリケーションです。このソリューションでは、各スマートAPがMQTTクライアントを実行します。
P2Pメッセージ
P2P メッセージは、ApsaraMQ for MQTT の機能であり、特定の MQTT クライアントに直接メッセージを配信します。受信者はトピックをサブスクライブする必要はありません。これにより、P2P メッセージはターゲット指定の価格変更コマンドに最適です。詳細については、「P2P メッセージングモデル」をご参照ください。
設計ガイド
SDKとプロトコルの選択
スマートAPはMQTTプロトコルを介して接続します。一般的なデプロイメントでは、1つのアプリケーションが数百のオフラインストアにサービスを提供する場合があり、それぞれが複数のAPを装備しています。ビジネスが成長するにつれて、新しい店舗ごとに複数のAPが追加され、MQTTは永続的で低オーバーヘッドの接続により、この規模を効率的に処理します。
クラウドにデプロイされたデジタル価格タグ管理サービスは、信頼性の高いバックエンドメッセージ処理のためにApsaraMQ for RocketMQ SDKを介して接続します。
クライアントIDの構造
すべてのMQTTクライアントは、グローバルに一意のクライアントIDを持つ必要があります。クライアントIDは、@@@ 区切り文字で結合された2つの部分で構成されます。最大合計長は64文字です。
| 部分 | 説明 | 例 |
|---|---|---|
| プレフィックス (グループID) | ApsaraMQ for MQTTコンソールに登録されます。トラブルシューティングを簡素化するために、プラットフォームベンダーまたはチャネル別にグループIDを分類します。たとえば、異なる業界やバッチ、または異なるクライアントバージョンに異なるグループIDを使用します。 | GID_pricetag_east |
| サフィックス (デバイスID) | アプリケーションによって生成されます。スマートAPのMACアドレスなど、一意のデバイス識別子を使用します。 | MAC_AA_BB_CC_DD_EE_FF |
クライアントIDの例: GID_pricetag_east@@@MAC_AA_BB_CC_DD_EE_FF
クライアント ID の詳細については、「用語」をご参照ください。
トピック階層の設計
MQTTトピックは、親トピックとサブトピックを持つ階層的なディレクトリツリー構造に従います。すべてのレベルを含むトピックの合計長は、64文字を超えることはできません。
| トピックレベル | 説明 | 登録 |
|---|---|---|
| 親トピック | トピックツリーの最初のレベル。名前空間に相当します。 | ApsaraMQ for MQTTコンソールに登録する必要があります。 |
| サブトピック | 親トピックの下の任意のレベル。 | 登録は不要です。必要に応じて指定します。 |
設計ルール:
親トピックでタスクタイプを分離します。 価格変更コマンドとステータスレポートには、異なる親トピックを使用します。これにより、トラフィックを分離し、アクセスの制御を簡素化します。
P2P メッセージを使用してターゲット指定コマンドを実行します。 P2P メッセージはサブスクリプションの照合をバイパスし、指定されたクライアントに直接配信されます。これにより、トピック管理のオーバーヘッドが削減され、不要なメッセージのファンアウトを回避できます。詳細については、「P2P メッセージングモデル」をご参照ください。
トピックの詳細については、「用語」をご参照ください。MQTT トピックの完全な仕様については、「MQTT v3.1.1 仕様」をご参照ください。一般的なプロダクトドキュメントについては、「ApsaraMQ for MQTT」をご参照ください。
メッセージパラメーター
価格変更コマンドにはリアルタイム配信が必要です。スマートAPのMQTT接続を次のパラメーターで構成します。これらの設定により、APが以前のセッションからの古いコマンドを再生するのを防ぎます。
| パラメーター | 値 | 理由 |
|---|---|---|
| CleanSession | true | スマートAPが再接続したときに、以前のセッションからのキューに入れられたメッセージを破棄します。これにより、APが古い価格変更を実行するのを防ぎます。 |
| QoS | 1 (少なくとも1回) | すべての価格変更コマンドが少なくとも1回配信されることを保証します。トレードオフとして、重複が発生する可能性があるため、スマートAPは受信メッセージを重複排除する必要があります。 |
QoS 1の理由:MQTTは3つのQoSレベルを定義しています。
| QoSレベル | 保証 | トレードオフ |
|---|---|---|
| 0 | 最大1回 (fire and forget) | 最速ですが、メッセージが失われる可能性があります。価格変更には適していません。 |
| 1 | 少なくとも1回 | 重複の可能性がある信頼性の高い配信。スマートAPが重複排除を処理します。 |
| 2 | 正確に1回 | 最も強力な保証ですが、レイテンシーを追加する4段階のハンドシェイクが必要です。このユースケースでは不要なオーバーヘッドです。 |
スマートAPは、QoS 1の再送を処理し、期限切れのコマンドを破棄するために、すべての受信メッセージに対して重複排除と適時性検証を実行する必要があります。
CleanSession と QoS の詳細については、「用語」をご参照ください。
ソリューションのハイライト
弾力的なスケーラビリティ。 ApsaraMQ for MQTTは、無限にスケーラブルなメッセージ送信機能を提供し、システムパフォーマンスを損なうことなくスマート端末の数を増やすことができます。
ミリ秒レベルのプッシュレイテンシー。 ApsaraMQ for MQTTは、数百万のデバイスに対してミリ秒単位での情報プッシュをサポートし、デジタル価格タグの表示更新ではさらに小さなレイテンシーを実現します。
標準ベースのポータビリティ。 MQTT v3.1.1標準プロトコルに基づいて構築されており、このアーキテクチャはポータブルで適応性があります。同じ設計をデジタルサイネージ、マルチメディアディスプレイ、または同様の更新およびレポートパターンを持つIoTユースケースに適用できます。
エンドツーエンド暗号化。 スマートAPとApsaraMQ for MQTT間のすべての通信はSSL/TLS暗号化を使用し、転送中の価格データを保護します。
高可用性。 すべてのサービスコンポーネントは、高可用性構成でデプロイされており、ダウンタイムを最小限に抑えます。
次のステップ
スマートAP統合用の ApsaraMQ for MQTT SDK をダウンロードします。
バックエンドサービス開発用のApsaraMQ for RocketMQ SDKをダウンロードします。
P2P メッセージングによるターゲットデバイス通信について学習します。
クライアント ID、トピック、QoS、および CleanSession の詳細については、ApsaraMQ for MQTT の用語をご参照ください。