
MQTT已成為将物聯網(IoT)裝置連接配接到雲的流行協定。MQTT最初開發于1999年,用于監視衛星網絡上的石油和管道。當時,需要一種協定,它對于電源有限的遠端裝置有效,帶寬使用效率高并且能夠在不可靠的網絡連接配接上運作的協定。開發MQTT時,還沒有創造出IoT這個術語,也沒有雲計算,也沒有出現各種IoT使用案例。
由于這些原因,需要更新MQTT協定,以解決在大型雲平台上托管MQTT和處理其他物聯網用例所需的某些缺少的功能。 在2015/2016年,OASIS内部開始研究新版本的規範MQTT5。在2019年3月,MQTT 5被準許為正式的OASIS标準。
在MQTT中有許多新特性,但是有5個關鍵特性改進部署MQTT系統的錯誤處理、可擴充性和靈活性。
會話和消息到期(Session and Message Expiry)
MQTT 5現在允許每個會話和消息指定一個時間限制。如果在設定的時間内未發送消息,則将其删除。如果消息需要在一定時間内到達,這對于安全關鍵型用例而言可能非常重要。
共享訂閱(Shared Subscriptions)
共享訂閱允許多個MQTT用戶端執行個體共享來自MQTT代理的相同主題的訂閱。如果已設定MQTT用戶端以将MQTT資料流傳輸到後端企業系統(例如資料庫)中,則此功能非常有用。可以在不同的群集節點之間部署共享相同訂閱的不同MQTT用戶端,以幫助實作可伸縮性和高可用性。
負面确認(Negative Acknowledgements)
現在,支援MQTT 5的MQTT代理可以發送否定确認消息,以拒絕某些類型的消息,例如最大QoS,最大消息大小以及代理中不受支援的功能。拒絕超過最大消息大小的消息對于識别可能已變為惡意的MQTT用戶端很有用。
有效載荷格式訓示器(Payload Format Indicators)
MQTT始終與有效負載無關,但是MQTT 5現在允許添加有效負載格式訓示符,二進制值或文本。 這将使處理MQTT消息更加容易。
使用者屬性(User Properties)
除了有效載荷格式訓示符之外,MQTT 5消息現在還可以包括使用者屬性,這些屬性将鍵值屬性添加到消息頭中。這些屬性允許将特定于應用程式的資訊添加到每個消息頭。
結論
MQTT社群正在逐漸包括對各種MQTT實作的MQTT 5支援,包括Eclipse Paho,Mosquitto和HiveMQ。 如果您正在考慮在下一個物聯網應用程式中使用MQTT,請強烈考慮使用MQTT 5。
原文連結