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

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

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

    聶永的博客

    記錄工作/學(xué)習(xí)的點(diǎn)點(diǎn)滴滴。

    MQTT 3.1.1,值得升級(jí)的6個(gè)新特性

    前言

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

    在沉寂了四年之后,QTT 3.1.1規(guī)范于2014年10月30號(hào)正式發(fā)布,與此同時(shí)MQTT 3.1.1已成為OASIS(結(jié)構(gòu)化信息標(biāo)準(zhǔn)促進(jìn)組織)開放物聯(lián)網(wǎng)消息傳遞協(xié)議標(biāo)準(zhǔn)(連接1 連接2),換種說法就是MQTT 3.1.1已升級(jí)為國(guó)際物聯(lián)網(wǎng)標(biāo)準(zhǔn)。

    正如HTTP為人們通過萬(wàn)維網(wǎng)分享信息鋪平了道路一樣,MQTT能將幾十億低成本、嵌入式數(shù)據(jù)采集遙測(cè)設(shè)備連接到網(wǎng)絡(luò)。

    與MQTT 3.1(還不是國(guó)際物聯(lián)網(wǎng)標(biāo)準(zhǔn)呢)規(guī)范相比,MQTT 3.1.1目標(biāo)在于消除歧義,盡可能的向后兼容,事實(shí)上一些大眾所需的新特性被包含在這個(gè)版本(更多的是物聯(lián)網(wǎng)標(biāo)準(zhǔn)推動(dòng)),因此不僅是一個(gè)維護(hù)版本,也是一種巨大的進(jìn)步呢。除了概念的澄清和陳舊規(guī)范重寫外,有一些很有趣的變化是值得注意的。

    會(huì)話表示標(biāo)志(Session Present Flag)

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

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

    新增訂閱失敗代碼反饋

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

    MQTT匿名客戶端

    需要支持臨時(shí)或匿名?客戶端僅僅需要在發(fā)送CONNECT時(shí)把客戶端標(biāo)識(shí)符( client identifier )置空(零長(zhǎng)度)即可,MQTT服務(wù)器會(huì)為此類請(qǐng)求生成一個(gè)隨機(jī)、唯一客戶端標(biāo)記符。但這要求客戶端必須設(shè)置Clean Session標(biāo)記為1,否則服務(wù)器端會(huì)直接返回包含0x02 (Identifier rejected)代碼的CONNACK,同時(shí)關(guān)閉連接。

    可用于后端程序(不需要維護(hù)回話狀態(tài))向終端發(fā)送消息的客戶端,MQTT服務(wù)器程序可區(qū)別對(duì)待。

    快速發(fā)布無(wú)等待

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

    這需要MQTT服務(wù)器實(shí)現(xiàn)在分發(fā)消息之前檢查客戶端是否有權(quán)限發(fā)布到這些主題上。

    客戶端標(biāo)識(shí)符可以變長(zhǎng)一些

    MQTT 3.1針對(duì)客戶端標(biāo)識(shí)符( client identifier)限制是23個(gè)字節(jié),實(shí)際環(huán)境下會(huì)有所不便,已有遺留系統(tǒng)可能使用UUID作為客戶端的標(biāo)識(shí)符,這樣服務(wù)器端需要做一些彼此之間的MAP映射。 MQTT 3.1.1中上限為65535個(gè)字節(jié),畢竟成為業(yè)界標(biāo)準(zhǔn),需要兼容大量的遺留設(shè)備和基礎(chǔ)設(shè)施。

    其它小改變

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

    術(shù)語(yǔ)變化

    • MQTT代理 -> MQTT服務(wù)器(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)
    • 以前在固定頭部,現(xiàn)在在包類型中( Flags in the fixed header are now specific to the packet type
    • 0字節(jié)保留信息需要清除 (A zero byte retained message MUST NOT be stored as a retained message on the Server )

    小結(jié)

    當(dāng)前MQTT 3.1.1已經(jīng)在很多活躍開源項(xiàng)目/商業(yè)產(chǎn)品得到支持。比如Eclipse Paho,Mosquitto,JBoss A-MQ 6.1, Apache ActiveMQ 5.10-SNAPSHOT,Apache Camel 2.13.0,HiveMQ等。

    關(guān)于Eclipse Paho:

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

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

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

    引用

    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) 評(píng)論(8)  編輯  收藏 所屬分類: MQTT

    評(píng)論

    # re: MQTT 3.1.1,值得升級(jí)的6個(gè)新特性 2014-12-18 15:07 網(wǎng)絡(luò)兼職

    產(chǎn)業(yè)互聯(lián)網(wǎng)正在改變我們的當(dāng)下,也在創(chuàng)造著我們的未來(lái)  回復(fù)  更多評(píng)論   

    # re: MQTT 3.1.1,值得升級(jí)的6個(gè)新特性 2014-12-18 15:50 微信公眾號(hào)導(dǎo)航

    n牛人,支持!  回復(fù)  更多評(píng)論   

    # re: MQTT 3.1.1,值得升級(jí)的6個(gè)新特性 2014-12-18 22:34 性愛姿勢(shì)

    MQTT還不錯(cuò),正在弄明白是啥  回復(fù)  更多評(píng)論   

    # 感謝您的分享,太棒了 2014-12-19 10:29 邢臺(tái)婦產(chǎn)醫(yī)院

    看了您分享的博客,真的太棒了,邢臺(tái)中山婦產(chǎn)醫(yī)院給你超贊  回復(fù)  更多評(píng)論   

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

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

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

    這需要MQTT服務(wù)器實(shí)現(xiàn)在分發(fā)消息之前檢查客戶端是否有權(quán)限發(fā)布到這些主題上。.Yes!  回復(fù)  更多評(píng)論   

    # re: MQTT 3.1.1,值得升級(jí)的6個(gè)新特性 2014-12-21 19:43 電動(dòng)卷閘門

    賺錢是為了樂呵,技術(shù)是未來(lái)就是賺錢  回復(fù)  更多評(píng)論   

    # re: MQTT 3.1.1,值得升級(jí)的6個(gè)新特性 2015-01-06 11:34 臉上長(zhǎng)痘痘的位置圖

    有技術(shù)餓不死  回復(fù)  更多評(píng)論   

    公告

    所有文章皆為原創(chuàng),若轉(zhuǎn)載請(qǐng)標(biāo)明出處,謝謝~

    新浪微博,歡迎關(guān)注:

    導(dǎo)航

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

    統(tǒng)計(jì)

    常用鏈接

    留言簿(58)

    隨筆分類(130)

    隨筆檔案(151)

    個(gè)人收藏

    最新隨筆

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲乱人伦精品图片| 日韩精品亚洲专区在线观看| 99在线视频免费| 免费无码又爽又刺激高潮软件 | gogo全球高清大胆亚洲| 国产免费小视频在线观看| 男人的天堂亚洲一区二区三区| 性xxxxx免费视频播放| 免费无码AV电影在线观看| 日韩精品无码区免费专区| 免费无码肉片在线观看| 日本一线a视频免费观看| 国产大片51精品免费观看| 免费人成在线观看网站品爱网日本| 日韩视频在线免费观看| 免费人成网站7777视频| 国产精品亚洲玖玖玖在线观看| 国产精品V亚洲精品V日韩精品| 激情97综合亚洲色婷婷五| 国产av天堂亚洲国产av天堂 | 222www免费视频| 青青青国产在线观看免费| 全免费a级毛片免费看无码| 国产在线98福利播放视频免费| 亚洲精品国产高清不卡在线| 亚洲精品美女久久777777| 亚洲精品综合一二三区在线| 亚洲av乱码一区二区三区香蕉| 亚洲人成电影网站免费| 免费在线观看一区| 国产成人AV片无码免费| 91频在线观看免费大全| 国产青草视频免费观看97| 亚洲熟妇av一区二区三区| 亚洲精品亚洲人成在线观看麻豆| 亚洲一卡2卡3卡4卡5卡6卡| 免费一级毛片在线播放放视频 | 国产久爱免费精品视频| 一区二区三区福利视频免费观看| 青娱乐免费视频在线观看| 免费人成激情视频|