溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

基于MQTT消息總線的設(shè)計(jì)過(guò)程是什么

發(fā)布時(shí)間:2021-12-06 16:51:18 來(lái)源:億速云 閱讀:283 作者:iii 欄目:互聯(lián)網(wǎng)科技

本篇內(nèi)容主要講解“基于MQTT消息總線的設(shè)計(jì)過(guò)程是什么”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“基于MQTT消息總線的設(shè)計(jì)過(guò)程是什么”吧!

一、網(wǎng)關(guān)的作用

物聯(lián)網(wǎng)這個(gè)詞語(yǔ)的范疇太廣,似乎所有的硬件設(shè)備,只要能夠接入網(wǎng)絡(luò),就可以稱(chēng)之為物聯(lián)網(wǎng)產(chǎn)品,似乎物聯(lián)網(wǎng)這個(gè)詞可以把一切都納入到其中。

這么空洞的詞語(yǔ)不利于我們的講解,因此我們就用一個(gè)可以感知、想象的場(chǎng)景來(lái)代替,那就是智能家居系統(tǒng),這是最能代表物聯(lián)網(wǎng)時(shí)代的典型產(chǎn)品了。

指令轉(zhuǎn)發(fā)

在一個(gè)智能家居系統(tǒng)中,假設(shè)有這么幾個(gè)設(shè)備:

基于MQTT消息總線的設(shè)計(jì)過(guò)程是什么

這些設(shè)備的通信模塊,如果是 WiFi 或者是藍(lán)牙,那么一般都可以直接通過(guò)手機(jī)來(lái)控制(當(dāng)然,需要廠家提供相應(yīng)的手機(jī)  APP),手機(jī)就相當(dāng)于一個(gè)中心節(jié)點(diǎn),控制著所有的設(shè)備。

目前市面上的一些智能設(shè)備單品都是這樣的通信方式,例如:空調(diào)、吸塵器、空氣凈化器、冰箱等等。只要在這些設(shè)備中加一個(gè)無(wú)線通信模塊即可(例如:ESP8266模塊)。

基于MQTT消息總線的設(shè)計(jì)過(guò)程是什么

如果通信模塊是其它的通信模塊,例如:RF433、ZigBee、ZWave等,由于手機(jī)沒(méi)有這些通信模塊,因此就需要一個(gè)網(wǎng)關(guān)來(lái)“轉(zhuǎn)發(fā)”指令。

手機(jī)和網(wǎng)關(guān)都連接到家中的路由器,處于同一個(gè)局域網(wǎng)中,手機(jī)把控制指令發(fā)送給網(wǎng)關(guān),網(wǎng)關(guān)再把指令轉(zhuǎn)發(fā)給相應(yīng)的設(shè)備。通信模型如下:

基于MQTT消息總線的設(shè)計(jì)過(guò)程是什么

外網(wǎng)通信

在上面的通信模型中,手機(jī)和網(wǎng)關(guān)由于處于同一個(gè)局域網(wǎng)中,因此可以直接通信。如果手機(jī)不在局域網(wǎng)中呢?那么就要通過(guò)云端的服務(wù)器來(lái)轉(zhuǎn)發(fā)了,通信模型如下:

基于MQTT消息總線的設(shè)計(jì)過(guò)程是什么

  1. 手機(jī)把指令發(fā)到服務(wù)器;

  2. 服務(wù)器把指令轉(zhuǎn)發(fā)給網(wǎng)關(guān);

  3. 網(wǎng)關(guān)把指令發(fā)給指定的設(shè)備;

以上描述的是控制指令的流程,如果是設(shè)備發(fā)出的報(bào)警信息呢,數(shù)據(jù)的流向就是反向進(jìn)行的。

可以看出,網(wǎng)關(guān)是所有設(shè)備之間通信的中心節(jié)點(diǎn),也是內(nèi)網(wǎng)與外網(wǎng)之間通信的中轉(zhuǎn)節(jié)點(diǎn),也就是把各種智能設(shè)備連接到互聯(lián)網(wǎng)的中轉(zhuǎn)器。

協(xié)議轉(zhuǎn)換

上面已經(jīng)提到,硬件設(shè)備上的通信模塊都是確定的(RF,ZigBee,ZWave等等),一般來(lái)說(shuō),可以把這些通信模塊稱(chēng)呼為無(wú)線通信協(xié)議。在一套智能家居系統(tǒng)中,所有設(shè)備的無(wú)線通信協(xié)議大部分都是相同的。

那么,不同類(lèi)型的無(wú)線通信協(xié)議設(shè)備是否可以共存在同一個(gè)系統(tǒng)中呢?

答案是:可以。只要在網(wǎng)關(guān)中,集成了相應(yīng)的無(wú)線通信協(xié)議模塊就可以達(dá)到這個(gè)目的!如下圖所示:

基于MQTT消息總線的設(shè)計(jì)過(guò)程是什么

從手機(jī)APP上看,所有的設(shè)備都是相同的,不會(huì)關(guān)心設(shè)備的無(wú)線通信協(xié)議是什么,因此,發(fā)出的控制指令都是協(xié)議無(wú)關(guān)的。

當(dāng)網(wǎng)關(guān)接收到控制指令時(shí),首先根據(jù)指令內(nèi)容查找出目標(biāo)設(shè)備,然后確定目標(biāo)設(shè)備的無(wú)線通信協(xié)議,最后把指令發(fā)送給對(duì)應(yīng)的硬件通信模塊,由該通信模塊通過(guò)無(wú)線電信號(hào)把控制指令發(fā)送到設(shè)備。

從這個(gè)指令的傳輸過(guò)程來(lái)看,網(wǎng)關(guān)就充當(dāng)著協(xié)議轉(zhuǎn)換的角色。

另外還有一種通信場(chǎng)景:當(dāng)系統(tǒng)中的一個(gè)“輸入”設(shè)備與一個(gè)“輸出”設(shè)備進(jìn)行綁定/關(guān)聯(lián)時(shí),例如:

  1. 紅外感應(yīng)器與聲光報(bào)警器綁定:當(dāng)紅外感應(yīng)器監(jiān)測(cè)到人體時(shí),發(fā)出信號(hào),然后控制聲光報(bào)警器發(fā)出報(bào)警;

  2. 門(mén)磁與燈綁定:當(dāng)開(kāi)門(mén)時(shí),門(mén)磁發(fā)出信號(hào),自動(dòng)打開(kāi)燈光;

如果“輸入”設(shè)備與“輸出”設(shè)備是不同類(lèi)型的無(wú)線通信協(xié)議,也需要網(wǎng)關(guān)來(lái)進(jìn)行協(xié)議轉(zhuǎn)換。

基于MQTT消息總線的設(shè)計(jì)過(guò)程是什么

設(shè)備管理

在一個(gè)智能家居系統(tǒng)中,設(shè)備可多可少,對(duì)這些設(shè)備進(jìn)行管理也是很重要的事情。網(wǎng)關(guān)作為系統(tǒng)的中心節(jié)點(diǎn),對(duì)設(shè)備進(jìn)行管理的重任理所當(dāng)然就由網(wǎng)關(guān)來(lái)承擔(dān)。

設(shè)備管理功能包括:

設(shè)備的添加和刪除;

設(shè)備狀態(tài)的管理(電量、設(shè)備斷網(wǎng)、失聯(lián)等等);設(shè)備樹(shù)的管理;

邊沿計(jì)算(自動(dòng)化控制)

在正常的情況下,網(wǎng)關(guān)是可以通過(guò)路由器,與服務(wù)器保持著長(zhǎng)連接的。如果服務(wù)器的處理能力比較強(qiáng)大,智能家居系統(tǒng)中所有需要處理的事情都可以丟給服務(wù)器來(lái)計(jì)算、處理,服務(wù)器在計(jì)算之后把處理結(jié)果再發(fā)送給網(wǎng)關(guān)??雌饋?lái)想法很完美!

但是,考慮下面這 2 種情況:

  1. 路由器出現(xiàn)問(wèn)題了,網(wǎng)關(guān)無(wú)法連接到服務(wù)器,因此就無(wú)法把本地?cái)?shù)據(jù)及時(shí)上報(bào);

  2. 系統(tǒng)中出現(xiàn)了異常情況,需要緊急處理,如果把信息上報(bào)到服務(wù)器,由服務(wù)器計(jì)算之后再回傳給網(wǎng)關(guān),耗費(fèi)的時(shí)間可能超過(guò)了可容忍時(shí)間,該如何處理?(可以用車(chē)聯(lián)網(wǎng)系統(tǒng)來(lái)腦補(bǔ)一下這個(gè)場(chǎng)景:自動(dòng)駕駛中的汽車(chē)遇到緊急情況,如果把所有信息上傳給服務(wù)器,然后等待服務(wù)器的下一步指令?)

對(duì)于上面的這些場(chǎng)景,把一些計(jì)算、處理操作放在網(wǎng)關(guān)這一端來(lái)處理也許更合適!這也是近幾年比較流行的邊沿計(jì)算。

1. 邊緣計(jì)算,是指在靠近物或數(shù)據(jù)源頭的一側(cè),采用網(wǎng)絡(luò)、計(jì)算、存儲(chǔ)、應(yīng)用核心能力為一體的開(kāi)放平臺(tái),就近提供最近端服務(wù)。

2. 其應(yīng)用程序在邊緣側(cè)發(fā)起,產(chǎn)生更快的網(wǎng)絡(luò)服務(wù)響應(yīng),滿足行業(yè)在實(shí)時(shí)業(yè)務(wù)、應(yīng)用智能、安全與隱私保護(hù)等方面的基本需求。

3. 邊緣計(jì)算處于物理實(shí)體和工業(yè)連接之間,或處于物理實(shí)體的頂端。而云端計(jì)算,仍然可以訪問(wèn)邊緣計(jì)算的歷史數(shù)據(jù)

二、網(wǎng)關(guān)內(nèi)部進(jìn)程之間的通信

在設(shè)計(jì)一個(gè)應(yīng)用程序的架構(gòu)時(shí),可以通過(guò)多線程來(lái)實(shí)現(xiàn),也可以通過(guò)多進(jìn)程來(lái)實(shí)現(xiàn),每個(gè)人的習(xí)慣都不一樣,各有各的好處。我們這里不去討論孰優(yōu)孰劣,因?yàn)槲覍?duì)多進(jìn)程這樣的設(shè)計(jì)思想比較偏愛(ài),所以就直接按照多進(jìn)程的程序架構(gòu)來(lái)討論。

1 網(wǎng)關(guān)中需要哪些進(jìn)程

網(wǎng)關(guān)中需要執(zhí)行的所有進(jìn)程,是根據(jù)網(wǎng)關(guān)的功能來(lái)決定的,假設(shè)包括如下的功能:

(1)連接外網(wǎng)的進(jìn)程 Proc_Bridge

網(wǎng)關(guān)需要連接到云端的服務(wù)器,需要一個(gè)進(jìn)程與服務(wù)器之間保持長(zhǎng)連接,這樣就可以及時(shí)接收到服務(wù)器發(fā)來(lái)的控制指令,以及把系統(tǒng)內(nèi)部數(shù)據(jù)及時(shí)上報(bào)給服務(wù)器。

這個(gè)進(jìn)程需要把從服務(wù)器接收到的指令轉(zhuǎn)發(fā)到網(wǎng)關(guān)系統(tǒng)內(nèi)部,把從系統(tǒng)內(nèi)部接收到的信息轉(zhuǎn)發(fā)給服務(wù)器,類(lèi)似于橋接的功能,因此命名為 Proc_Bridge。

(2)設(shè)備管理進(jìn)程 Proc_DevMgr

這個(gè)進(jìn)程用來(lái)執(zhí)行設(shè)備管理功能,設(shè)備的添加(入網(wǎng))、刪除(退網(wǎng)),都由此進(jìn)程來(lái)管理。

(3)協(xié)議轉(zhuǎn)換進(jìn)程 Proc_Protocol

下行:把應(yīng)用層的統(tǒng)一通信協(xié)議,轉(zhuǎn)換成不同類(lèi)型無(wú)線通信協(xié)議,發(fā)送給相應(yīng)的無(wú)線模塊。

上行:把設(shè)備上報(bào)的、不同類(lèi)型的無(wú)線通信協(xié)議,轉(zhuǎn)換成應(yīng)用層的統(tǒng)一通信協(xié)議。

(4)邊沿計(jì)算進(jìn)程(自動(dòng)化控制) Proc_Auto

很明顯,這需要一個(gè)獨(dú)立的進(jìn)程來(lái)處理各種計(jì)算,這個(gè)進(jìn)程就相當(dāng)于系統(tǒng)的大腦。

(5)無(wú)線通信協(xié)議相關(guān)的進(jìn)程 Proc_ZigBee, Proc_RF, Proc_ZWave

在硬件上,每一種無(wú)線通信模塊通過(guò)串口或其他硬件連接方式與到網(wǎng)關(guān)的 CPU 進(jìn)行通信,因此,每一種無(wú)線通信模塊都需要一個(gè)相應(yīng)的進(jìn)程來(lái)處理。

(6)其他“軟設(shè)備”進(jìn)程 Proc_Xxx

在之前的項(xiàng)目中,還遇到一些硬件設(shè)備,它們與門(mén)磁、插座等設(shè)備在邏輯上處于同一個(gè)層次,但是與網(wǎng)關(guān)之間是通過(guò) TCP  來(lái)連接。對(duì)于這樣的設(shè)備,也可以使用一個(gè)獨(dú)立的進(jìn)程來(lái)進(jìn)行管理。

上面的這些進(jìn)程,在網(wǎng)關(guān)中的運(yùn)行模型如下:

基于MQTT消息總線的設(shè)計(jì)過(guò)程是什么

2 MQTT消息總線

以上這些進(jìn)程之間需要相互通信,不是簡(jiǎn)單的點(diǎn)對(duì)點(diǎn)通信,而是一個(gè)網(wǎng)狀的通信模型。比如:

設(shè)備管理進(jìn)程 Proc_DevMgr:當(dāng)任何一種設(shè)備被添加到系統(tǒng)中時(shí),都需要處進(jìn)行處理,因此它需要與 Proc_ZigBee, Proc_RF,  Proc_ZWave 這些進(jìn)程進(jìn)行通信;

當(dāng)某個(gè)設(shè)備上報(bào)數(shù)據(jù)時(shí)(例如:Proc_ZigBee),Proc_Protocol 進(jìn)程需要把數(shù)據(jù)進(jìn)行協(xié)議轉(zhuǎn)換,然后 Proc_Bridge  進(jìn)程把轉(zhuǎn)換后的數(shù)據(jù)上報(bào)給服務(wù)器,同時(shí) Proc_Auto 進(jìn)程需要檢查這個(gè)設(shè)備上報(bào)的數(shù)據(jù)是否觸發(fā)了其他相關(guān)聯(lián)的設(shè)備;

也就是說(shuō),這些進(jìn)程中間的通信是相互交叉的,如果通過(guò)傳統(tǒng)的 IPC 方式(共享內(nèi)存、命名管道、消息隊(duì)列、Socket)等,處理起來(lái)比較復(fù)雜。

引入了 MQTT 消息總線之后,每個(gè)進(jìn)程只需要掛載到總線上。每個(gè)進(jìn)程只需要監(jiān)聽(tīng)自己感興趣的 topic,就可以接收到相應(yīng)的數(shù)據(jù)。

基于MQTT消息總線的設(shè)計(jì)過(guò)程是什么

既然這些進(jìn)程之間的通信關(guān)系比較復(fù)雜,那么一個(gè)良好的 topic 設(shè)計(jì)規(guī)范就顯得很重要了!

3 Topic 的設(shè)計(jì)

MQTT 的通信模型是基于訂閱/發(fā)布的模式,一個(gè)客戶端(進(jìn)程)接入到消息總線之后,需要注冊(cè)自己感興趣的 主題 topic,其他客戶端(進(jìn)程)往這個(gè)  topic 發(fā)送消息,即可被訂閱者接收到。

主題 topic 是一個(gè)以反斜線(/)分割的字符串,用來(lái)表示多層的分級(jí)結(jié)構(gòu),例如下面的這 2 個(gè) topic,是亞馬遜 AWS  平臺(tái)中在線升級(jí)(OTA)相關(guān)的 topic:

$aws/things/MyThing/jobs/get/accepted  $aws/things/MyThing/jobs/get/rejected

在我們的示例場(chǎng)景中,可以按照下面這樣來(lái)設(shè)計(jì)主題 topic:

(1) Proc_DevMgr

訂閱主題:

$iot/v1/ZigBee/Register   $iot/v1/ZigBee/UnRegister   $iot/v1/RF/Register   $iot/v1/RF/UnRegister   $iot/v1/ZWave/Register   $iot/v1/ZWave/UnRegister

(2) Proc_Bridge

訂閱主題:

$iot/v1/Device/Report

發(fā)出數(shù)據(jù)的主題:

$iot/v1/Device/Control   $iot/v1/Device/Remove   $iot/v1/Auto/AddRule   $iot/v1/Auto/RemoveRule

(3) Proc_Protocol

訂閱主題:

$iot/v1/Device/Control   $iot/v1/Device/Remove   $iot/v1/ZigBee/Report   $iot/v1/RF/Report   $iot/v1/ZWave/Report

發(fā)送數(shù)據(jù)主題:

$iot/v1/Device/Report   $iot/v1/ZigBee/Control   $iot/v1/ZigBee/Remove   $iot/v1/RF/Control   $iot/v1/RF/Remove   $iot/v1/ZWave/Control   $iot/v1/ZWave/Remove

(4) Proc_Auto

訂閱主題:

$iot/v1/Auto/AddRule   $iot/v1/Auto/RemoveRule   $iot/v1/Device/Report

發(fā)送數(shù)據(jù)主題:

$iot/v1/Device/Control

(5) Proc_ZigBee

訂閱主題:

$iot/v1/ZigBee/Control   $iot/v1/ZigBee/Remove

發(fā)送數(shù)據(jù)主題:

$iot/v1/ZigBee/Register   $iot/v1/ZigBee/UnRegister   $iot/v1/ZigBee/Report

(6) Proc_RF

訂閱主題:

$iot/v1/RF/Control   $iot/v1/RF/Remove

發(fā)送數(shù)據(jù)主題:

$iot/v1/RF/Register   $iot/v1/RF/UnRegister   $iot/v1/RF/Report

(7) Proc_ZWave

訂閱主題:

$iot/v1/ZWave/Control   $iot/v1/ZWave/Remove

發(fā)送數(shù)據(jù)主題:

$iot/v1/ZWave/Register   $iot/v1/ZWave/UnRegister   $iot/v1/ZWave/Report

以上這些主題 topic 的設(shè)計(jì),還是有些粗略的。如果借助通配符(#, +, $),可以設(shè)計(jì)出更靈活的層次結(jié)構(gòu)。

  1. 多層通配符: “#”是用于匹配主題中任意層級(jí)的通配符,多層通配符表示它的父級(jí)和任意數(shù)量的子層級(jí)。

  2. 單層通配符:“+”加號(hào)是只能用于單個(gè)主題層級(jí)匹配的通配符,在主題過(guò)濾器的任意層級(jí)都可以使用單層通配符,包括第一個(gè)和最后一個(gè)層級(jí)。

  3. 通配符:“$”表示匹配一個(gè)字符,只要不是放在主題的最開(kāi)頭,其它情況下都表示匹配一個(gè)字符。

我們以一個(gè)控制指令為例,來(lái)梳理一下數(shù)據(jù)是如何通過(guò) topic 進(jìn)行流動(dòng):

基于MQTT消息總線的設(shè)計(jì)過(guò)程是什么

  1. Proc_Bridge 進(jìn)程從服務(wù)器接收到控制指令后,發(fā)送到消息總線上的 topic: $iot/v1/Device/Control。

  2. 由于 Proc_Protocol 進(jìn)程訂閱了這個(gè) topic,所以立刻接收到指令。

  3. Proc_Protocol 分析指令內(nèi)容,發(fā)現(xiàn)是一個(gè) ZigBee 設(shè)備,于是進(jìn)行協(xié)議轉(zhuǎn)換,發(fā)送一個(gè) ZigBee 控制指令到消息總線上的 topic:  $iot/v1/ZigBee/Control。

  4. 由于 Proc_ZigBee 進(jìn)程訂閱了這個(gè) topic,因此它接收到這個(gè)控制指令。

  5. Proc_ZigBee 把控制指令轉(zhuǎn)換成 ZigBee 無(wú)線通信模塊要求的格式,通過(guò)硬件發(fā)送給設(shè)備燈泡。

我們?cè)俜治鲆幌略O(shè)備數(shù)據(jù)上報(bào)的場(chǎng)景:

基于MQTT消息總線的設(shè)計(jì)過(guò)程是什么

先關(guān)注圖中紅色箭頭,忽略藍(lán)色箭頭:

  1. 門(mén)磁打開(kāi)后,通過(guò)無(wú)線通信把信息上報(bào)給進(jìn)程 Proc_CF。

  2. Proc_RF 進(jìn)程接收到 RF433 通信模塊上報(bào)的數(shù)據(jù),把“門(mén)磁打開(kāi)”這個(gè)信息發(fā)送到消息總線上的  topic:$iot/v1/RF/Report。

  3. 由于 Proc_Protocol 進(jìn)程訂閱了這個(gè) topic,因此接收到上報(bào)的門(mén)磁數(shù)據(jù)。

  4. Proc_Protocol 分析數(shù)據(jù),把 RF433 協(xié)議的數(shù)據(jù)轉(zhuǎn)成統(tǒng)一的應(yīng)用層協(xié)議的數(shù)據(jù),發(fā)送到消息總線上的  topic:$iot/v1/Device/Report。

  5. 由于 Proc_Bridge 進(jìn)程訂閱了這個(gè) topic,因此就接收到了這次上報(bào)的數(shù)據(jù)。

  6. Proc_Bridge 進(jìn)程把數(shù)據(jù)上報(bào)給服務(wù)器。

再來(lái)看一下藍(lán)色箭頭流程:

在上面的第 4 步:Proc_Protocol 進(jìn)程把 RF433 協(xié)議數(shù)據(jù)轉(zhuǎn)成應(yīng)用層統(tǒng)一協(xié)議之后,把數(shù)據(jù)發(fā)送到消息總線上的  topic:$iot/v1/Device/Report 之后,Proc_Auto 進(jìn)程同時(shí)進(jìn)行如下操作:

5.由于 Proc_Auto 也訂閱了這個(gè) topic,因此它也接收到了門(mén)磁上報(bào)的這個(gè)應(yīng)用層協(xié)議的數(shù)據(jù)。

6.Proc_Auto  查找自己的配置信息(假設(shè)用戶已經(jīng)提前配置好了一條規(guī)則:當(dāng)門(mén)磁打開(kāi)的時(shí)候,就觸發(fā)聲光報(bào)警器),發(fā)現(xiàn)匹配到了“門(mén)磁->報(bào)警器”這條規(guī)則,于是發(fā)出一條控制報(bào)警器的指令,發(fā)送到消息總線上的  topic: $iot/v1/Device/Control。

后面的 7,8,9,10 這四個(gè)步驟就與上面的控制指令流程完全一樣了。

4 與 DBUS 總線的對(duì)比

從上面描述的 3 個(gè)數(shù)據(jù)流向的場(chǎng)景中,是不是感覺(jué)到使用 topic 為“數(shù)據(jù)管道”的這種通信方式,與 Linux 系統(tǒng)中的 DBUS  總線特別的相似?

DBUS 總線也是用于進(jìn)程之間的通信,按照我個(gè)人的理解,DBUS中其實(shí)是把進(jìn)程之間的兩種通信組織在一起了:

  • 基于信號(hào)的數(shù)據(jù)傳輸;

  • 基于方法的 RPC 遠(yuǎn)程調(diào)用;

DBUS 總線包含的概念更復(fù)雜一些,包括:路徑、對(duì)象、接口、方法等等,這些概念組織在一起共同定位到一個(gè)具體的服務(wù)提供者了。

相比較而言,我感覺(jué) MQTT 這樣的方式更簡(jiǎn)潔一些。

所謂的 RPC 遠(yuǎn)程調(diào)用,就是調(diào)用位于遠(yuǎn)程機(jī)器上的一個(gè)函數(shù),主要解決兩個(gè)問(wèn)題:

  1. 網(wǎng)絡(luò)連接;

  2. 數(shù)據(jù)的序列化和反序列化;

三、網(wǎng)關(guān)與云平臺(tái)之間的通信

上面講解的設(shè)計(jì)過(guò)程,是網(wǎng)關(guān)內(nèi)部的各功能模塊之間通信方式,這也是我們作為嵌入式開(kāi)發(fā)者能充分發(fā)揮的部分。

網(wǎng)關(guān)與云平臺(tái)之間的通信方式一般都是客戶指定的,就那么幾種(阿里云、華為云、騰訊云、亞馬遜AWS平臺(tái))。一般都要求網(wǎng)關(guān)與云平臺(tái)之間處于長(zhǎng)連接的狀態(tài),這樣云端的各種指令就可以隨時(shí)發(fā)送到網(wǎng)關(guān)。

當(dāng)然了,這些云平臺(tái)都會(huì)提供相應(yīng)的 SDK 開(kāi)發(fā)包,一般使用的 MQTT 協(xié)議來(lái)連接云平臺(tái)更多一些。在一些文檔中,會(huì)把位于云端的 MQTT 服務(wù)器稱(chēng)作  Broker,其實(shí)就是一個(gè)服務(wù)器。

基于MQTT消息總線的設(shè)計(jì)過(guò)程是什么

進(jìn)程 Proc_Bridge 的功能主要有 2 點(diǎn):

  1. 與云平臺(tái)的數(shù)據(jù)傳輸通道;

  2. 協(xié)議轉(zhuǎn)換:把云平臺(tái)相關(guān)的協(xié)議轉(zhuǎn)換成網(wǎng)關(guān)內(nèi)部的協(xié)議,以及相反的轉(zhuǎn)換。

也就是說(shuō):Proc_Bridge 進(jìn)程需要同時(shí)連接到云平臺(tái)的 MQTT Broker 和網(wǎng)關(guān)內(nèi)部的 MQTT  消息總線。

到此,相信大家對(duì)“基于MQTT消息總線的設(shè)計(jì)過(guò)程是什么”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI