国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

物聯(lián)網(wǎng)協(xié)議介紹-MQTT協(xié)議的概念與應(yīng)用

2022-08-26 09:47 作者:騰科IT教育官方賬號(hào)  | 我要投稿

一、MQTT 協(xié)議概念

MQTT 協(xié)議的全稱(chēng)是 Message Queuing Telemetry Transport,翻譯為消息隊(duì)列傳輸探測(cè),它是 ISO 標(biāo)準(zhǔn)下的一種基于發(fā)布 - 訂閱模式的消息協(xié)議,它是基于 TCP/IP 協(xié)議簇的,它是為了改善網(wǎng)絡(luò)設(shè)備硬件的性能和網(wǎng)絡(luò)的性能來(lái)設(shè)計(jì)的。MQTT 一般多用于 IoT 即物聯(lián)網(wǎng)上,廣泛應(yīng)用于工業(yè)級(jí)別的應(yīng)用場(chǎng)景,比如汽車(chē)、制造、石油、天然氣等。

在了解了?MQTT 的概念和應(yīng)用場(chǎng)景后,我們下來(lái)就來(lái)走進(jìn) MQTT 的學(xué)習(xí)中了,先來(lái)看一下 MQTT 有哪些概念。

?

二、MQTT 基礎(chǔ)

上面我們解釋了?MQTT 協(xié)議的基本概念,MQTT 協(xié)議總結(jié)一點(diǎn)就是一種輕量級(jí)的二進(jìn)制協(xié)議,MQTT 協(xié)議與 HTTP 相比具有一個(gè)明顯的優(yōu)勢(shì):數(shù)據(jù)包開(kāi)銷(xiāo)較小,數(shù)據(jù)包開(kāi)銷(xiāo)小就意味著更容易進(jìn)行網(wǎng)絡(luò)傳輸。還有一個(gè)優(yōu)勢(shì)就是 MQTT 在客戶(hù)端容易實(shí)現(xiàn),而且具有易用性,非常適合當(dāng)今資源有限的設(shè)備。

你可能對(duì)這些概念有些諱莫如深,為什么具有?xxx 這種特性呢?這就需要從 MQTT 的設(shè)計(jì)說(shuō)起了。

MQTT 協(xié)議由 Andy Stanford-Clark (IBM) 和 Arlen Nipper(Arcom,現(xiàn)為 Cirrus Link)于 1999 年發(fā)明。 他們需要一種通過(guò)衛(wèi)星連接石油管道的協(xié)議,以最大限度地減少電池?fù)p耗和帶寬。所以他們?yōu)檫@個(gè)協(xié)議規(guī)定了幾種要求:

1、這個(gè)協(xié)議必須易于實(shí)現(xiàn);

2、這個(gè)協(xié)議中的數(shù)據(jù)必須易于傳輸,消耗成本小;

3、這個(gè)協(xié)議必須提供服務(wù)質(zhì)量管理;

4、這個(gè)協(xié)議必須支持連續(xù)的會(huì)話(huà)控制;

5、假設(shè)數(shù)據(jù)不可知,不強(qiáng)求傳輸數(shù)據(jù)的類(lèi)型與格式,保持靈活性。

這些設(shè)計(jì)也是?MQTT 的精髓所在,MQTT 經(jīng)過(guò)不斷的發(fā)展,已經(jīng)成為了物聯(lián)網(wǎng) IoT 所必備的一種消息探測(cè)協(xié)議,官方強(qiáng)烈推薦使用的版本是 MQTT 5。

?

三、發(fā)布?- 訂閱模式

發(fā)布?- 訂閱模式,我相信接觸消息中間件架構(gòu)的同學(xué)都聽(tīng)過(guò),這是一種傳統(tǒng)的客戶(hù)端 - 服務(wù)器架構(gòu)的替代方案,因?yàn)橐话銈鹘y(tǒng)的客戶(hù)端-服務(wù)器是客戶(hù)端能夠直接和服務(wù)器進(jìn)行通信。

但是發(fā)布?- 訂閱模式 pub/sub就不一樣了,發(fā)布訂閱模式會(huì)將發(fā)送消息的發(fā)布者 publisher與接收消息的訂閱者 subscribers進(jìn)行分離,publisher 與 subscribers 并不會(huì)直接通信,他們甚至都不清楚對(duì)方是否存在,他們之間的交流由第三方組件 broker 代理。

pub/sub 最重要的方面是 publisher 與 subscriber 的解藕,這種耦合度有下面三個(gè)維度:

1、空間解耦

publisher 與 subscriber 并不知道對(duì)方的存在,例如不會(huì)有 IP 地址和端口的交互,也更不會(huì)有消息的交互。

2、時(shí)間解藕

publisher 與 subscriber 并不一定需要同時(shí)運(yùn)行。

3、同步?Synchronization 解藕

兩個(gè)組件的操作比如 publish 和 subscribe 都不會(huì)在發(fā)布或者接收過(guò)程中產(chǎn)生中斷。

總之,發(fā)布/訂閱模式消除了傳統(tǒng)客戶(hù)-服務(wù)器之間的直接通信,把通信這個(gè)操作交給了 broker 進(jìn)行代理,并在空間、時(shí)間、同步三個(gè)維度上進(jìn)行了解藕。

?

四、可拓展性

pub/sub 比傳統(tǒng)的客戶(hù)端-服務(wù)器模式有了更好的拓展,這是由于 broker 的高度并行化,并且是基于事件驅(qū)動(dòng)的模式??赏卣剐赃€體現(xiàn)在消息的緩存和消息的智能路由,還可以通過(guò)集群代理來(lái)實(shí)現(xiàn)數(shù)百萬(wàn)的連接,使用負(fù)載均衡器將負(fù)載分配到更多的單個(gè)服務(wù)器上,這就是 MQTT 的深度應(yīng)用了。

你可能不明白什么是事件驅(qū)動(dòng),我在這里解釋下事件驅(qū)動(dòng)的概念。

事件驅(qū)動(dòng)是一種編程范式,編程范式是軟件工程中的概念,它指的是一種編程方法或者說(shuō)程序設(shè)計(jì)方式,比如說(shuō)面向?qū)ο缶幊毯兔嫦蜻^(guò)程編程就是一種編程范式,事件驅(qū)動(dòng)中的程序流程會(huì)由諸如用戶(hù)操作(點(diǎn)擊鼠標(biāo)、鍵盤(pán))、傳感器輸出或者從其他程序或傳遞的消息事件決定。事件驅(qū)動(dòng)編程是圖形用戶(hù)界面和其他應(yīng)用程序比如?Web 中使用的主要范式,這些應(yīng)用程序能夠響應(yīng)用戶(hù)輸入執(zhí)行某些操作為中心,這同時(shí)也適用于驅(qū)動(dòng)程序的編程。

?

五、消息過(guò)濾

在?pub/sub 的架構(gòu)模式中,broker 扮演著至關(guān)重要的作用,其中非常重要的一點(diǎn)就是 broker 能夠?qū)ο⑦M(jìn)行過(guò)濾,使每個(gè)訂閱者只接收自己感興趣的消息。broker 有幾個(gè)可以過(guò)濾的選項(xiàng):

1、基于主題的過(guò)濾

MQTT 是基于 subject 的消息過(guò)濾的,每條消息都會(huì)有一個(gè) topic ,接收客戶(hù)端會(huì)向 borker 訂閱感興趣的 topic,訂閱后,broker 就會(huì)確??蛻?hù)端收到發(fā)布到 topic 中的消息。

2、基于內(nèi)容的過(guò)濾

在基于內(nèi)容的過(guò)濾中,broker 會(huì)根據(jù)特定的內(nèi)容過(guò)濾消息,接受客戶(hù)端會(huì)經(jīng)過(guò)過(guò)濾他們感興趣的內(nèi)容。這種方法的一個(gè)顯著的缺點(diǎn)就是必須事先知道消息的內(nèi)容,不能加密或者輕易修改。

3、基于類(lèi)型的過(guò)濾

在使用面向?qū)ο蟮恼Z(yǔ)言時(shí),基于消息(事件)的類(lèi)型過(guò)濾是一種比較常見(jiàn)的過(guò)濾方式。

為了發(fā)布/訂閱系統(tǒng)的挑戰(zhàn),MQTT 具有三個(gè)服務(wù)質(zhì)量級(jí)別,你可以指定消息從客戶(hù)端傳到 broker 或者從 broker 傳到客戶(hù)端,在 topic 的訂閱中,會(huì)存在 topic 沒(méi)有 subscriber 訂閱的情況,作為 broker 必須知道如何處理這種情況。

?

六、MQTT 與消息隊(duì)列的區(qū)別

我們現(xiàn)在知道,MQTT 是一種消息隊(duì)列傳輸探測(cè)協(xié)議,這種協(xié)議是看似是以消息隊(duì)列為基礎(chǔ),但卻與消息隊(duì)列有所差別。

在傳統(tǒng)的消息隊(duì)列模式中,一條消息會(huì)存儲(chǔ)在消息隊(duì)列中等待被消費(fèi),每個(gè)傳入的消息都存儲(chǔ)在消息隊(duì)列中,直到它被客戶(hù)端(通常稱(chēng)之為消費(fèi)者)所接收,如果沒(méi)有客戶(hù)端消費(fèi)消息的話(huà),這條消息就會(huì)存在消息隊(duì)列中等待被消費(fèi)。但是在消息隊(duì)列中,不會(huì)存在消息沒(méi)有客戶(hù)端消費(fèi)的情況,但是在?MQTT 中,確存在 topic 無(wú) subscriber 訂閱的情況。

在傳統(tǒng)的消息隊(duì)列模式中,一條消息只能被一個(gè)客戶(hù)端所消費(fèi),負(fù)載會(huì)分布在隊(duì)列的每個(gè)消費(fèi)者之間;而在?MQTT 中,每個(gè)訂閱者都會(huì)受到消息,每個(gè)訂閱者有相同的負(fù)載。

在傳統(tǒng)的消息隊(duì)列模式中,必須使用單獨(dú)的命令來(lái)顯式創(chuàng)建隊(duì)列,只有隊(duì)列創(chuàng)建后,才可以生產(chǎn)或者消費(fèi)消息;而在?MQTT 中,topic 比較靈活,可以即時(shí)創(chuàng)建。

物聯(lián)網(wǎng)協(xié)議介紹-MQTT協(xié)議的概念與應(yīng)用的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
江门市| 侯马市| 怀仁县| 高雄县| 中方县| 柳江县| 西林县| 江油市| 沐川县| 天峨县| 雷州市| 云和县| 上林县| 太仆寺旗| 邵阳市| 随州市| 聊城市| 灵璧县| 芦山县| 雷州市| 焉耆| 山西省| 镇平县| 东至县| 祁东县| 呼图壁县| 台北市| 隆化县| 梅河口市| 无棣县| 邢台市| 静海县| 扎鲁特旗| 修水县| 遂川县| 横峰县| 会昌县| 盖州市| 怀来县| 横山县| 桦甸市|