轉(zhuǎn)載自:
http://www.234plus.com/?p=740
https://blog.csdn.net/yangzaizhong/article/details/80877166
HTTP是最流行和最廣泛使用的協(xié)議。但在過去幾年中楷拳,MQTT迅速獲得了牽引力绣夺。當我們談論物聯(lián)網(wǎng)開發(fā)時,開發(fā)人員必須在它們之間做出選擇欢揖。
設計和消息傳遞
MQTT以數(shù)據(jù)為中心陶耍,而HTTP是以文檔為中心的。HTTP是用于客戶端 – 服務器計算的請求 – 響應協(xié)議她混,并不總是針對移動設備進行優(yōu)化烈钞。MQTT在這些術語中的主要優(yōu)點是輕量級(MQTT將數(shù)據(jù)作為字節(jié)數(shù)組傳輸)和發(fā)布/訂閱模型,這使其非常適合資源受限的設備并有助于節(jié)省電池坤按。
此外毯欣,發(fā)布/訂閱模型為客戶提供了彼此獨立的存在,增強了整個系統(tǒng)的可靠性晋涣。當一個客戶端出現(xiàn)故障時仪媒,整個系統(tǒng)可以繼續(xù)正常工作。
速度和交付
根據(jù)3G網(wǎng)絡的測量結(jié)果谢鹊,MQTT的吞吐量比HTTP快93倍算吩。
此外,與HTTP相比佃扼,MQTT協(xié)議確保了高傳輸保證偎巢。有3個級別的服務質(zhì)量:
– 最多一次:保證盡力交付。
– 至少一次:保證消息至少傳送一次兼耀。但是消息也可以不止一次傳遞压昼。
– 恰好一次:保證每個消息只被對方接收一次
MQTT還為用戶提供Last will&Testament和Retained消息的選項。第一個意味著在客戶端意外斷開連接的情況下瘤运,所有訂閱的客戶端都將從代理獲得消息窍霞。保留消息意味著新訂閱的客戶端將立即獲得狀態(tài)更新。
HTTP協(xié)議沒有這些功能拯坟。
復雜性和消息大小
?MQTT具有相當短的規(guī)范但金。只有CONNECT,PUBLISH郁季,SUBSCRIBE冷溃,UNSUBSCRIBE和DISCONNECT類型對開發(fā)人員很重要钱磅。而HTTP規(guī)范要長得多。
MQTT具有非常短的消息頭似枕,并且最小的包消息大小為2個字節(jié)盖淡。通過HTTP協(xié)議使用文本消息格式允許它組成冗長的標題和消息。它有助于消除麻煩凿歼,因為它可以被人類閱讀褪迟,但同時它對于資源受限的設備是不必要的。
MQTT
MQTT的特點是可以保持長連接答憔,具有一定的實時性牵咙,云端向設備端發(fā)送消息,設備端可以在最短的時間內(nèi)接收到并作出響應攀唯,所以MQTT更適合需要實時控制的場合,更適合執(zhí)行器渴丸。要保持長連接侯嘀,那么就要時不時地發(fā)送心跳包,這就不會省電了谱轨。所以低功耗的場合并不適合MQTT戒幔。MQTT的長連接需要建立在TCP的基礎上,TCP協(xié)議的復雜性決定了對設備的要求是比較高一些的土童,相比UDP诗茎。
CoAP
CoAP的特點是低功耗,數(shù)據(jù)發(fā)完就可以休眠了献汗。所以CoAP更適合數(shù)據(jù)采集的場合敢订,更適合純粹的傳感器設備,特別是電池供電的傳感器設備罢吃〕纾基于UDP協(xié)議,對設備的要求比較簡單尿招。華為出的NB-IoT芯片就只支持UDP和CoAP矾柜,華為的決策告訴我們CoAP和NB-IoT是一對。
對比
結(jié)論
相比HTTP就谜,MQTT怪蔑、CoAP協(xié)議更適合物聯(lián)網(wǎng):
1、更節(jié)省電池丧荐,尤為突出的是CoAP
2缆瓣、吞吐量更大,MQTT比HTTP快93倍
3篮奄、更省流量
4捆愁、增強了整個系統(tǒng)的可靠性