MQTT和WebSocket

來源:互聯網
上載者:User

標籤:c   style   blog   java   a   http   

嚴格來說,MQTT跟WebSocket關係不大。他們不是在一個層級的。

 

MQTT和TCP、WebSocket的關係可以用一目瞭然:

 

參考資料:

http://www.zhihu.com/question/21816631

 

WebSocket的優勢

以前,很多網站使用輪詢實現推送技術。輪詢是在特定的的時間間隔(比如1秒),由瀏覽器對伺服器發出HTTP request,然後由伺服器返回最新的資料給瀏覽器。輪詢的缺點很明顯,瀏覽器需要不斷的向伺服器發出請求,然而HTTP請求的header是非常長的,而實際傳輸的資料可能很小,這就造成了頻寬和伺服器資源的浪費。

Comet使用了AJAX改進了輪詢,可以實現雙向通訊。但是Comet依然需要發出請求,而且在Comet中,普遍採用了長連結,這也會大量消耗伺服器頻寬和資源。

於是,WebSocket協議應運而生。 瀏覽器通過 JavaScript 向伺服器發出建立 WebSocket 串連的請求,串連建立以後,用戶端和伺服器通過 TCP 串連直接交換資料。WebSocket 串連本質上是一個 TCP 串連。

WebSocket在資料轉送的穩定性和資料轉送量的大小方面,具有很大的效能優勢。Websocket.org 比較了輪詢和WebSocket的效能優勢:

HTTP 輪訓每次需要返回871個位元組,websocket每次只需要2個位元組

Use Case A: 1,000個用戶端每秒接受一個message,網路輸送量 (2*1,000)=2,000 bytes = 16,000 每秒bits

Use Case B: 10,000個用戶端每秒接受一個message,網路輸送量 (2*10,000)=20,000 bytes = 160,000 每秒bits

Use Case C: 100,000個用戶端每秒接受一個message,網路輸送量 (2*100,000)=200,000 bytes = 1,600,000 每秒bits

參考:

http://segmentfault.com/a/1190000000382788

Spring 4.0 中的 WebSocket 架構
http://www.oschina.net/translate/websocket-architecture-in-spring-4-0

MQTT

 

MQTT 協議是為大量計算能力有限,且工作在低頻寬、不可靠的網路的遠程感應器和控制裝置通訊而設計的協議,它具有以下主要的幾項特性:

  • 非常小的通訊開銷(最小的訊息大小為 2 位元組),小型傳輸,開銷很小(固定長度的頭部是 2 位元組),協議交換最小化,以降低網路流量。
  • 支援各種流行程式設計語言(包括 C,Java,Ruby,Python 等等)且便於使用的用戶端;
  • 使用發布 / 訂閱訊息模式,提供一對多的訊息發布,解除應用程式耦合。
  • 對負載內容屏蔽的訊息傳輸。
  • 使用 TCP/IP 提供網路連接。
  • 有三種訊息發布服務品質,讓訊息能按需到達目的地,適應在不穩定工作的網路傳輸需求 :
    • "至多一次",訊息發布完全依賴底層 TCP/IP 網路。會發生訊息丟失或重複。這一層級可用於如下情況,環境感應器資料,丟失一次讀記錄無所謂,因為不久後還會有第二次發送。
    • "至少一次",確保訊息到達,但訊息重複可能會發生。
    • "只有一次",確保訊息到達一次。這一層級可用於如下情況,在計費系統中,訊息重複或丟失會導致不正確的結果。
  • 使用 Last Will 和 Testament 特性通知有關各方用戶端異常中斷的機制。

 

參考:

MQTT技術:為物聯網而生
http://www.leiphone.com/0828-danice-mqtt.html

 

MQTT 折騰筆記----協議簡讀
http://www.cnblogs.com/youxilua/archive/2013/04/25/3041528.html

 

 

基於 WebSocket 的 MQTT Alibaba Cloud Mobile Push方案
http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1308_xiangr_mqtt/1308_xiangr_mqtt.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.