成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MQTT與SSE的對比

網絡 網絡管理
當您需要數據從服務器快速地流向客戶機時,需要一個持久連接。您可以使用長輪詢(long polling)、WebSockets、服務器發送事件(SSE)或HTTP2推送來完成此操作。今天,我們將具體看看MQTT和SSE,看看它們之間的比較。

構建實時web或移動應用程序比構建標準服務更具挑戰性。這是因為您選擇的將數據從服務器傳遞到客戶端的協議將對總體體驗產生重大影響。

當您需要數據從服務器快速地流向客戶機時,需要一個持久連接。您可以使用長輪詢(long polling)、WebSockets、服務器發送事件(SSE)或HTTP2推送來完成此操作。

今天,我們將具體看看MQTT和SSE,看看它們之間的比較。

[[332275]]

MQTT和SSE的簡要歷史

MQTT,即消息隊列遙測傳輸(Message Queuing Telemetry Transport),是一種發布-訂閱(publish-subscribe)消息協議,最早出現于1999年。IBM的andy Stanford-Clark和eurotech的Arlen Nipper在那一年發布了該協議。

最初,它為沙漠管道段之間的連接提供支持,以便進行主動監測。這是通過將管道連接與衛星網絡同步來實現的。

這個想法是創建一種輕量級的機器對機器通信協議,該協議甚至可以在帶寬低,連接性無法預測的有限網絡上以及低功耗設備上運行。它還合并了不同級別的服務質量(QoS)。

從那時起,MQTT已成為類似應用程序的公認協議,在CPU功率有限、電池限制和不可預測的通信實例之間橋接設備之間的連接。最近,MQTT已成為物聯網解決方案的首選協議。

另一方面,SSE(Server-Sent Events)出現的時間要晚得多,在2006年。該協議基于服務器發送的DOM事件,它是Opera 9 web瀏覽器引入的。當時,它還是一項試驗技術,僅在發生新事件或更新時才將內容從服務器推送到客戶機或web瀏覽器。

首先,客戶端使用EventSource接口建立連接。基于JavaScript的API使HTTP流保持打開狀態并接收更新,直到最終將其關閉。

這是一個新的EventSource對象的示例,該對象設置為從服務器接收事件:

它們有何不同?

有兩種主要的方法來處理數據傳遞。第一個稱為客戶端請求,它表示瀏覽器或應用正在從服務器請求數據。第二種方法稱為服務器推送,這是遠程服務器主動將數據推送到網站或應用程序。本質上,一個涉及客戶端,另一個涉及服務器。

雖然只有兩種方法可以進行數據傳遞,但是可以通過幾種方法實現此過程:

  • 長輪詢或短輪詢(客戶端pull)
  • WebSockets(服務器推送)
  • 服務器發送的事件(服務器推送)

輪詢是在客戶端完成的,當應用程序或網站定期向服務器請求數據時會發生輪詢。

WebSockets是客戶端和服務器之間的持久連接,主要用作通信協議。

最后,SSE(Server-Sent Events)是一種異步機制,通過活動連接將數據推送到客戶端。當新的數據塊或更新可用時,服務器也可以發送數據。連接可能保持打開狀態,但這并不一定意味著數據正在傳輸。

僅從這些定義,您就可以看到客戶機-服務器進程有多么不同。這也意味著它們各有優缺點,這使得它們在某些情況下非常適合使用,而在另一些情況下就不那么實用了。

MQTT作用概述

MQTT協議依賴于類似網絡的系統,包括服務器,一個或多個客戶端和代理。代理是MQTT服務器,連接的設備是客戶端。發布者和客戶端都不會處理這些工作。相反,處理能力和通信主要由代理處理。

因此,MQTT允許開發人員建立通信通道層次結構。從視覺上看,這就像一個樹枝。發布者或服務器首先向代理發送新數據,以及傳遞控制說明。

然后,代理會促進另一端的客戶之間的信息交換。高級客戶端可以從發布服務器接收每一條消息或更新,而低級客戶端只接收與其基本級別相關的消息。

所有發布并發送給代理的數據(以及接收到的數據)均采用二進制協議進行編碼。 因此,必須先解釋該消息,然后才能使用數據內容。

盡管如此,MQTT僅通過純文本分發安全性憑證,因此它并不完全安全,并且不能為大多數應用程序提供足夠的身份驗證或安全性。開發人員可以通過實現SSL框架解決此問題,該框架通過加密保護任何傳輸的數據。

MQTT:優點和缺點

優點:

  • MQTT是一種難以置信的輕量級協議,旨在連接資源最受限的設備。
  • 它內置了多層服務質量(QoS)。
  • 大多數云OT廠商和提供商已經支持MQTT,使其成為傳感器不斷收集和報告聚合數據的IoT解決方案的理想選擇。
  • MQTT是雙向的。

缺點:

  • 由于集中代理的性質,開發人員在使用MQTT時可能會遇到擴展限制,本地代理中心會限制其支持的擴展量。
  • 具有諷刺意味的是,MQTT通常運行在TCP/IP網絡堆棧的頂部,該堆棧是為具有更大內存和處理能力的設備而設計的。因此,喚醒和通訊時間可能會延長,這可能會影響長期的電池消耗。

SSE概述

SSE連接通常在客戶端-服務器配置之間的鏈接的客戶端開始。客戶端通過在JavaScript中創建新的EventSource對象來啟動并打開連接。它通過HTTP請求發送相關的URL。

建立連接后,客戶端將期待并尋找事件消息流。只要傳輸數據,HTTP請求就保持打開狀態。一段時間后,當客戶端認為傳輸過時時,連接將關閉。如果取消了初始請求,則客戶端也可以直接關閉連接。

如您所見,SSE比MQTT更簡單,并且不涉及代理。

SSE:優點和缺點

優點:

  • 數據通過簡單且廣泛使用的HTTP協議而不是專有協議進行同步。
  • 包括對重新建立連接和事件ID功能的內置支持。
  • 對于利用單向通信的應用程序和服務非常有用。

缺點:

  • 不幸的是,SSE只支持UTF-8編碼,不支持二進制數據。
  • 對最大打開連接數的嚴格限制可能使事情變得困難,每個瀏覽器都設置了限制。
  • SSE是單向的。

MQTT與SSE

比較MQTT和SSE時要考慮的最重要的事情是它們的連接能力。例如,SSE是單向的,專門為需要從服務器提取信息的服務或應用程序而設計。另一方面,MQTT是一種健壯的雙向通信選項,可以促進服務器與客戶端之間來回的數據傳輸。

這意味著SSE非常適合將信息存儲在服務器上并推送到客戶端的應用程序,例如實時股票應用程序或基于新聞的服務。從本質上講,不需要從客戶端以相反的方向傳遞數據。

這也解釋了為什么開發人員在物聯網應用程序,傳感器和設備中首選MQTT的原因,當然還有其他優點。由于信息具有雙向結構,因此可以雙向傳遞。

SSE開源解決方案

了解SSE之后,您可能已經準備好尋找可以幫助您入門的開源SSE軟件。Gossed就是一個例子。它允許您將任何程序的標準輸出作為服務器發送的事件推送到瀏覽器。

還有SSE Channel,可以將消息廣播到所有連接的客戶端。另外,此工具會自動維護歷史記錄。它的另一個功能是能夠根據需要向客戶端發送自動“保持活動(keep-alive)”數據包的功能。

MQTT開源解決方案

也有開放源碼MQTT選項。Eclipse Mosquitto是輕量級的,適用于所有設備。它可以處理從智能手機到連接傳感器的各種設備的消息傳遞需求。還有一個測試服務器,它允許您使用幾個與MQTT相關的場景查看客戶機的功能。

HiveMQ是MQTT的另一個代理,它在2019年4月成為一種開源軟件。它專門用于處理與物聯網設備相關的信息。該工具提供了一個實時監視界面,以及用于故障診斷的高級端到端MQTT分析。

實施中的困難

首先,為MQTT或SSE實現內部解決方案可能聽起來可行。但是,有一些常見的問題需要克服,比如與消息順序和有保障的傳遞相關的問題。您還必須牢記安全性,包括訪問控制和配置。2019年,安全研究人員詳細描述了至少3200個擁有智能家居技術的家庭是如何由于MQTT的不安全錯誤配置而可能受到黑客攻擊的。

再加上其他必需的東西,比如創建開發人員文檔,就很容易理解為什么您最終會認為,從操作和工程的角度來看,使用內部解決方案過于耗費人力和成本。隨著最終用戶數量的增長,你很可能會得出這樣的結論。在加大努力的同時,這里列出的所有挑戰可能會變得更成問題。

盡管如前所述,MQTT和SSE都具有開源選項,但更明智的選擇是投資于商用的實時消息傳遞平臺。 即使您擴大規模,它也可以幫助您始終獲得較高的性能和可靠性。

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2023-09-07 14:59:42

物聯網MQTTCoAP

2009-09-24 14:04:25

Hibernate i

2024-04-01 00:05:00

ChatGPTSSE

2023-06-20 14:04:59

2025-06-24 07:21:31

2010-07-01 09:00:07

UbuntuDebian

2016-12-16 15:30:41

大數據商業智能

2010-06-21 10:35:30

LinuxDeepin

2010-09-01 16:36:20

DHCPNAT

2018-01-26 14:29:01

框架

2018-01-21 14:11:22

人工智能PaddlePaddlTensorflow

2024-10-14 17:24:32

2009-01-07 18:04:05

服務器安騰高性能

2010-07-12 15:50:05

多協議GMPLS

2012-05-10 09:03:34

Ubuntu 12.0Windows 8

2010-09-17 09:24:30

PowerShellSSH

2023-06-14 18:41:42

模型人工智能機器學習

2022-01-11 19:28:14

安全服務邊緣SSESASE

2019-02-11 08:48:07

XMLJSON前端

2017-04-13 15:15:17

Netflix ZuuNginx性能
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 视频一区在线观看 | 国产欧美精品一区二区 | 欧美亚洲国语精品一区二区 | 国产一区二区三区视频 | 国产精品久久久久久久久久免费看 | www九色| 国产一区二区三区四区三区四 | 搞黄视频免费看 | 久久久久久久亚洲精品 | 午夜小视频在线播放 | 天天爱爱网 | 国产精品色 | 亚洲欧洲日本国产 | 一级黄a视频 | 久久久青草婷婷精品综合日韩 | 在线观看免费av网 | 国产一区不卡 | 一区二区在线 | 中文字幕乱码视频32 | 欧美中文字幕在线 | 国产在线播放一区二区三区 | 在线观看一区 | 精品一区二区三 | 成年免费在线观看 | 亚洲精品一区av在线播放 | 亚洲精品乱码久久久久久黑人 | 国产成人精品一区二区三区网站观看 | 久久精品天堂 | 久草资源网站 | 欧美在线一区二区三区 | www.欧美视频| 国产视频二区 | 中文字幕在线网 | 日韩欧美国产成人一区二区 | 国产精品久久久久久久久久三级 | 日韩一级免费电影 | 亚洲成a人片 | 国产精品毛片无码 | 欧美一区二区免费视频 | 欧美在线一区二区三区 | 国产欧美精品一区二区三区 |