<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    聶永的博客

    記錄工作/學習的點點滴滴。

    MQTT 3.1.1,值得升級的6個新特性

    前言

    以前看英文文章或資料,看完之后,摘要或者忘記。這一次選擇感興趣的MQTT 3.1.1介紹文章資料,引文見文末,作為練手;非完全翻譯,去除掉一些廣告性描述,若侵權,請告知。

    在沉寂了四年之后,QTT 3.1.1規范于2014年10月30號正式發布,與此同時MQTT 3.1.1已成為OASIS(結構化信息標準促進組織)開放物聯網消息傳遞協議標準(連接1 連接2),換種說法就是MQTT 3.1.1已升級為國際物聯網標準。

    正如HTTP為人們通過萬維網分享信息鋪平了道路一樣,MQTT能將幾十億低成本、嵌入式數據采集遙測設備連接到網絡。

    與MQTT 3.1(還不是國際物聯網標準呢)規范相比,MQTT 3.1.1目標在于消除歧義,盡可能的向后兼容,事實上一些大眾所需的新特性被包含在這個版本(更多的是物聯網標準推動),因此不僅是一個維護版本,也是一種巨大的進步呢。除了概念的澄清和陳舊規范重寫外,有一些很有趣的變化是值得注意的。

    會話表示標志(Session Present Flag)

    如果一個終端與服務器之間建立一個持久會話連接(假設這個終端沒有使用到一個“clean session”標記清除已有回話標志), 一個新增的“Session Present”標志(會話表示標志,邏輯值為true或false)會在CONNACK中出現,表明MQTT服務器已經擁有當前客戶端上次連接會話信息,比如訂閱的主題,排隊信息和其它信息等。

    會話表示標志若為true,客戶端可減少了一次發送訂閱SUBSCRIBLE交互步驟,有助于更有效的數據通信;為false,客戶端需要再次發送訂閱SUBSCRIBLE消息,不可略過。

    新增訂閱失敗代碼反饋

    MQTT 3.1.1之前,終端連接之后無法知道其發送的訂閱主題是否被MQTT服務器接受與否。此新特性較適用于細粒度權限MQTT主題管理;若無授權,服務器會把錯誤代碼(0x80)附加在SUBACK中,客戶端就可以知道訂閱失敗。

    MQTT匿名客戶端

    需要支持臨時或匿名?客戶端僅僅需要在發送CONNECT時把客戶端標識符( client identifier )置空(零長度)即可,MQTT服務器會為此類請求生成一個隨機、唯一客戶端標記符。但這要求客戶端必須設置Clean Session標記為1,否則服務器端會直接返回包含0x02 (Identifier rejected)代碼的CONNACK,同時關閉連接。

    可用于后端程序(不需要維護回話狀態)向終端發送消息的客戶端,MQTT服務器程序可區別對待。

    快速發布無等待

    這是一個新增的特別有用的特性,客戶端可以在發送CONNECT之后,可無須等待MQTT服務器返回的CONNACK,根據需要即刻發送PUBLISH、SUBSCRIBLE、DISCONNEECT等消息,可避免客戶端資源等待。此特性也適用于突發模式(burst-mode)客戶端需求,只關心數據要盡快的發送出去,而不是去擔心是否需要維護一個長連接。

    這需要MQTT服務器實現在分發消息之前檢查客戶端是否有權限發布到這些主題上。

    客戶端標識符可以變長一些

    MQTT 3.1針對客戶端標識符( client identifier)限制是23個字節,實際環境下會有所不便,已有遺留系統可能使用UUID作為客戶端的標識符,這樣服務器端需要做一些彼此之間的MAP映射。 MQTT 3.1.1中上限為65535個字節,畢竟成為業界標準,需要兼容大量的遺留設備和基礎設施。

    其它小改變

    1. CONNECT消息可變頭部協議名稱MQIsdp被改為MQTT,語義更準確
    2. 所有字符串明確規定使用UTF-8編碼,包括客戶端標識符(Client Identifier)
    3. CONNECT消息可變頭部協議版本號,由0x03變成了0x04 QoS 0類型PUBLISH消息DUP標記必須被設置為0
    4. MQTT Over WebSocket 被定義,互聯網地址編碼分配機構(Internet Assigned Numbers Authority)分配標識符為mqtt。雖在MQTT 3.1規范通篇沒有提到WebSocket,但因其二進制屬性可以很容易的在WebSocket通道傳輸。

    術語變化

    • MQTT代理 -> MQTT服務器(MQTT Broker is now MQTT Server)
    • 消息ID -> 包ID(Message ID is now Packet ID)
    • 消息類型 -> 包類型(Message Type is now Packet Type)
    • 主題路徑 -> 主題名稱(Subscribe and Unsubscribe take Topic Paths, rather than Topic names)
    • 以前在固定頭部,現在在包類型中( Flags in the fixed header are now specific to the packet type
    • 0字節保留信息需要清除 (A zero byte retained message MUST NOT be stored as a retained message on the Server )

    小結

    當前MQTT 3.1.1已經在很多活躍開源項目/商業產品得到支持。比如Eclipse Paho,Mosquitto,JBoss A-MQ 6.1, Apache ActiveMQ 5.10-SNAPSHOT,Apache Camel 2.13.0,HiveMQ等。

    關于Eclipse Paho:

    1. Eclipse Paho 1.0支持MQTT 3.1.1和MQTT 3.1規范
    2. Eclipse Paho 0.9僅支持 MQTT 3.1規范

    包含MQTT 3.1.1和MQTT 3.1的客戶端可以混合使用,彼此可以共存于同一個MQTT服務器下,在基本消息傳輸層面沒有多大修改,同樣的PUBLISH消息可以在MQTT客戶端中自由流轉,這個需要服務器端編碼支持。

    已有的MQTT 3.1客戶端可以用著急升級,但升級之后可以從新增特性中收益良多。

    引用

    1. 6 facts why it’s worth upgrading to the brand new MQTT 3.1.1 version
    2. Differences between 3.1.0 and 3.1.1
    3. other ……

    posted on 2014-12-16 13:59 nieyong 閱讀(23493) 評論(8)  編輯  收藏 所屬分類: MQTT

    評論

    # re: MQTT 3.1.1,值得升級的6個新特性 2014-12-18 15:07 網絡兼職

    產業互聯網正在改變我們的當下,也在創造著我們的未來  回復  更多評論   

    # re: MQTT 3.1.1,值得升級的6個新特性 2014-12-18 15:50 微信公眾號導航

    n牛人,支持!  回復  更多評論   

    # re: MQTT 3.1.1,值得升級的6個新特性 2014-12-18 22:34 性愛姿勢

    MQTT還不錯,正在弄明白是啥  回復  更多評論   

    # 感謝您的分享,太棒了 2014-12-19 10:29 邢臺婦產醫院

    看了您分享的博客,真的太棒了,邢臺中山婦產醫院給你超贊  回復  更多評論   

    # re: MQTT 3.1.1,值得升級的6個新特性 2014-12-19 10:40 痘印痘坑怎么去

    這是一個新增的特別有用的特性,客戶端可以在發送CONNECT之后,可無須等待MQTT服務器返回的CONNACK,根據需要即刻發送PUBLISH、SUBSCRIBLE、DISCONNEECT等消息,可避免客戶端資源等待。此特性也適用于突發模式(burst-mode)客戶端需求,只關心數據要盡快的發送出去,而不是去擔心是否需要維護一個長連接。這一點,我是非常喜歡的,贊一個  回復  更多評論   

    # re: MQTT 3.1.1,值得升級的6個新特性 2014-12-19 18:07 Jogos Da Elsa

    這需要MQTT服務器實現在分發消息之前檢查客戶端是否有權限發布到這些主題上。.Yes!  回復  更多評論   

    # re: MQTT 3.1.1,值得升級的6個新特性 2014-12-21 19:43 電動卷閘門

    賺錢是為了樂呵,技術是未來就是賺錢  回復  更多評論   

    # re: MQTT 3.1.1,值得升級的6個新特性 2015-01-06 11:34 臉上長痘痘的位置圖

    有技術餓不死  回復  更多評論   

    公告

    所有文章皆為原創,若轉載請標明出處,謝謝~

    新浪微博,歡迎關注:

    導航

    <2014年12月>
    30123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    統計

    常用鏈接

    留言簿(58)

    隨筆分類(130)

    隨筆檔案(151)

    個人收藏

    最新隨筆

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费一级e一片在线播放| 免费黄色毛片视频| 亚洲色婷婷六月亚洲婷婷6月| 亚洲国产高清国产拍精品| 免费观看的a级毛片的网站| 91在线亚洲综合在线| 在线a人片天堂免费观看高清 | 亚洲国产精品无码久久一线| 久久最新免费视频| 精品久久久久久亚洲| 七色永久性tv网站免费看| 亚洲av无码无在线观看红杏| 香蕉免费一区二区三区| 亚洲国产理论片在线播放| 97碰公开在线观看免费视频| 中文字幕亚洲情99在线| 免费少妇a级毛片| a色毛片免费视频| 亚洲综合无码一区二区三区| 成人免费在线看片| 亚洲成a人无码亚洲成www牛牛| 免费a级黄色毛片| 18禁在线无遮挡免费观看网站| 亚洲精品视频专区| 日本免费人成黄页在线观看视频 | 午夜不卡AV免费| 亚洲av网址在线观看| 18禁止观看免费私人影院| 亚洲av日韩av永久无码电影| 亚洲综合色区在线观看| 老汉精品免费AV在线播放| 亚洲欧美日韩国产精品一区| 亚洲成年看片在线观看| 久久一本岛在免费线观看2020| 国产AV旡码专区亚洲AV苍井空| ZZIJZZIJ亚洲日本少妇JIZJIZ | 中文字幕在线视频免费观看| 亚洲精品自拍视频| 亚洲一级黄色视频| 国产曰批免费视频播放免费s| 免费国产a理论片|