當前位置:編程學習大全網 - 編程語言 - MQTT和Websocket的區別是什麽

MQTT和Websocket的區別是什麽

MQTT跟WebSocket關系不大。他們不是在壹個層級的。

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

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

非常小的通信開銷(最小的消息大小為 2 字節),小型傳輸,開銷很小(固定長度的頭部是 2 字節),協議交換最小化,以降低網絡流量。

支持各種流行編程語言(包括 C,Java,Ruby,Python 等等)且易於使用的客戶端;

使用發布 / 訂閱消息模式,提供壹對多的消息發布,解除應用程序耦合。

對負載內容屏蔽的消息傳輸。

使用 TCP/IP 提供網絡連接。

有三種消息發布服務質量,讓消息能按需到達目的地,適應在不穩定工作的網絡傳輸需求 :

"至多壹次",消息發布完全依賴底層 TCP/IP 網絡。會發生消息丟失或重復。這壹級別可用於如下情況,環境傳感器數據,丟失壹次讀記錄無所謂,因為不久後還會有第二次發送。

"至少壹次",確保消息到達,但消息重復可能會發生。

"只有壹次",確保消息到達壹次。這壹級別可用於如下情況,在計費系統中,消息重復或丟失會導致不正確的結果。

  • 上一篇:jJava方向綜合筆試題1
  • 下一篇:輻射避難所1.6版本有哪些bug
  • copyright 2024編程學習大全網