新零售電子價簽解決方案(MQTT)
新零售電子價簽解決方案由阿里云云消息隊列 MQTT 版推出,通過MQTT以實現商場超市、公共場所電子標簽、多媒體屏幕的數據更新管理。本文將以電子價簽為例詳細描述該解決方案的系統架構、數據流設計以及注意事項,其他類似行業可參考該方案修改適配。
名詞解釋
MQTT
一種物聯網和移動互聯網領域的行業標準協議,適合移動終端之間的數據傳輸。云消息隊列 MQTT 版默認支持該協議。
MQTT服務器
云消息隊列 MQTT 版提供的MQTT協議交互的服務端節點,用于接收消息并轉發消息。
MQTT客戶端
用于和MQTT服務器交互的節點,本方案中特指發送或接收價格變更消息的智能AP。
P2P消息
云消息隊列 MQTT 版在標準的MQTT協議基礎上提供的一種特殊消息,該類型消息無需普通的訂閱關系匹配,便可直接發送給指定的單個目標MQTT客戶端。詳細信息,請參見P2P消息收發模式(MQTT)。
智能AP
市面常見的智能路由器等網絡設備,支持應用編程,可以同時承擔互聯網接入以及局域網設備控制等工作。
電子價簽
實際分布在商場超市等場所中的電子顯示屏幕,一般使用藍牙、ZigBee等無線傳感網絡協議和智能AP節點組網。
電子價簽管控服務
電子價簽系統中用于管理電子屏幕顯示內容的后臺服務,主要承擔改價等人工操作的任務管理和查詢工作。
RDS
阿里云推出的一種穩定可靠、可彈性伸縮的在線數據庫服務。在電子價簽系統中用來持久化改價等任務的狀態變更。
SLS日志存儲
阿里云推出的日志存儲服務,在電子價簽系統中用來持久化保存所有操作日志,用于審計和溯源。
方案架構
在電子價簽解決方案中,云消息隊列 MQTT 版與阿里云多個產品結合使用,實現價簽的數據更新管理。方案架構展示了針對電子價簽系統的解決方案架構。
如方案架構所示,在電子價簽系統中,主要包含價簽節點、智能AP節點、云消息隊列 MQTT 版、云消息隊列 RocketMQ 版、電子價簽后臺管控服務、RDS以及SLS。各個組件介紹如下:
智能AP負責轉發上報價簽的狀態數據,并接收改價指令。智能AP按照門店或者場所分布,內部使用MQTT SDK從公網接入阿里云云消息隊列 MQTT 版,該鏈路采用SSL/TLS加密傳輸,防止數據泄露。
一個智能AP下行鏈路和若干價簽節點通過藍牙、ZigBee等無線傳感網絡協議組網,完成局域網內部數據交互。
電子價簽后臺管理服務部署在云端(云服務ECS),使用云消息隊列 RocketMQ 版的SDK和云消息隊列 RocketMQ 版交互。
電子價簽后臺管理服務可以將改價等任務的狀態變更持久化到RDS數據庫以確保任務變更成功,并將價簽上報數據和操作日志存儲到SLS,方便溯源和審計。
方案優勢
新零售電子價簽解決方案的優勢如下所述:
服務能力強,可彈性伸縮
云消息隊列 MQTT 版消息傳輸能力無限擴展,智能終端數量增加無需擔心系統能力不足。
云消息隊列 MQTT 版支持百萬級設備毫秒級推送完成,電子價簽屏顯更新延遲更小。
適用范圍廣,通用性好,可快速復制
基于MQTT標準協議實現,通用性好,方案只需簡單適配數據內容即可快速復制到其他相似場景。
安全可靠
云消息隊列 MQTT 版服務和智能AP節點數據傳輸支持SSL/TLS加密,無需擔心媒體商業數據泄露。
所有服務節點高可用,穩定性高。
數據交互
狀態上報
電子價簽節點會采用定時輪詢機制和智能AP節點交換數據,上報自己當前的顯示狀態、節點電量等信息。
智能AP節點組織數據,并發送MQTT消息到MQTT服務器。
MQTT服務器會將上報消息寫入業務方指定的云消息隊列 RocketMQ 版Topic。
電子價簽管控服務通過接收云消息隊列 RocketMQ 版消息,處理分析當前系統中在線的價簽節點的狀態,并將數據記錄到SLS。
更新屏顯
電子價簽管控服務發送改價的云消息隊列 RocketMQ 版消息,觸發改價操作。
MQTT服務端會路由該云消息隊列 RocketMQ 版消息,將消息通過MQTT協議推送給目標智能AP節點。
智能AP節點收到改價通知,將任務暫存。
電子價簽節點會采用輪詢機制和智能AP節點交換數據,感知新的屏顯內容。
目標電子價簽節點改價成功后,智能AP節點回發一條應答MQTT消息,通知電子價簽管控服務當前任務已完成。
電子價簽管控服務將當前任務的執行記錄寫入SLS日志,方便后續溯源查詢。
注意事項
上述流程簡要描述了如何使用云消息隊列 MQTT 版和云消息隊列 RocketMQ 版來搭建電子價簽系統,具體的SDK說明,請參見云消息隊列 MQTT 版以及云消息隊列 RocketMQ 版文檔。
其中使用云消息隊列 MQTT 版和云消息隊列 RocketMQ 版進行指令傳輸時,相關的消息類型設計以及參數設計請盡可能遵循如下原則:
SDK和協議選擇
電子價簽場景中,一個應用可能存在成百上千的線下門店,一般每個門店配備若干個智能AP節點,智能AP節點會隨著業務規模上升而增加,所以智能AP節點適合使用MQTT協議接入,而電子價簽管控服務由于部署在云端,適合使用云上的云消息隊列 RocketMQ 版接入。
客戶端ID映射
MQTT協議要求每個客戶端都有一個全局唯一的Client ID,Client ID由以下兩部分組成,這兩部分通過“@@@”分隔符連接,只需要保證最終的Client ID唯一且總長度不超過64個字符即可:
前綴Group ID:Group ID需在云消息隊列 MQTT 版控制臺申請。Group ID按照平臺供應商或者渠道進行粗分類,例如不同的行業、批次分成不同的Group ID,或者不同版本的客戶端使用不同的Group ID,方便問題定位。
后綴Device ID:Device ID由應用生成。Device ID可以使用智能AP節點的MAC地址等唯一性信息編碼。
Client ID的更多信息,請參見名詞解釋。
Topic名稱映射
使用云消息隊列 MQTT 版收發消息需要了解MQTT協議訂閱關系的模型,詳細信息,請參見協議文檔和官網文檔。
MQTT是遵循發布/訂閱模型的消息協議,訂閱關系和Topic符合目錄樹格式,Topic可分為父級Topic和子級Topic,Topic(包含父級Topic和子級Topic)的總長度不能超過64個字符:
父級Topic:通常稱目錄樹第一級的Topic為父級Topic。父級Topic需要在云消息隊列 MQTT 版控制臺申請后才可使用,申請后相當于一個Namespace。
子級Topic:目錄樹第一級的Topic的后續部分稱為子級Topic。子級Topic無需申請,業務方可以隨意指定。
Topic的更多信息請參見名詞解釋。
業務方設計用于消息收發的Topic時,需要遵循以下原則:
不同類型的任務使用不同的父級Topic,例如本場景中,改價任務和終端狀態上報使用不同的父級Topic。
對于電子價簽系統中,改價任務的交互消息建議使用云消息隊列 MQTT 版提供的P2P消息,P2P消息不需要訂閱,發送方直接指定對端接收即可,詳細信息,請參見P2P消息收發模式(MQTT)。
收發消息參數設計
由于電子價簽場景改價任務一般要求實時推送,建議在智能AP和MQTT服務器交互過程中,智能AP做以下配置,以確保智能AP無需處理掉線期間的任務:
cleanSession參數設置為“true”。
QoS設置成“1”。
智能AP應該對收到的消息做去重以及時效性校驗。
cleanSession和QoS的更多信息,請參見名詞解釋。