胡永立
機(jī)科發(fā)展科技股份有限公司 北京 100044
當(dāng)前我國廣泛利用物聯(lián)網(wǎng)信息推送系統(tǒng),并且具有良好的發(fā)展前景,并且逐步形成互聯(lián)網(wǎng)軟件系統(tǒng),在未來將會(huì)在全球推廣。本文論述了基于MQTT物聯(lián)網(wǎng)消息推送系統(tǒng),進(jìn)一步優(yōu)化系統(tǒng)性能。
MQTT全稱Message Queuing Telemetry Transport,于1999年由IBM發(fā)布,這是一種消息傳輸協(xié)議。其消息在傳輸時(shí)代碼占用空間小,對于遠(yuǎn)程連接非常有效,這種協(xié)議適用低寬帶、受限設(shè)備的情況。因此,MQTT是物聯(lián)網(wǎng)智能寄居首次選擇的傳輸協(xié)議,可用于多種現(xiàn)實(shí)服務(wù)中,還可以適用家庭自動(dòng)化的設(shè)備。并且該協(xié)議也適用移動(dòng)運(yùn)用,積極及耗能均比較小,數(shù)據(jù)包也是最小的,可有效將信息分解,可傳輸至一或多個(gè)的接收器。
協(xié)議特點(diǎn)具體如下:
開放性。該協(xié)議是由IBM公司與Eurotech一起研制的,專門為設(shè)備網(wǎng)絡(luò)定制。MQTT利用二進(jìn)制形式,通信開銷和協(xié)議交換比較小,可以降低網(wǎng)絡(luò)流量,同時(shí)可以簡化網(wǎng)絡(luò)復(fù)雜度。MQTT支持簡單的信息模式。MQTT具有開發(fā)公開的協(xié)議,可以專業(yè)定制設(shè)備網(wǎng)絡(luò)。
輕巧性。傳輸?shù)母袷绞亲钚』?,最小的?shù)據(jù)包僅有2比特。所以復(fù)雜度較低且容量小。
第三,可靠性。有三種不同服務(wù)的質(zhì)量。發(fā)布消息時(shí)完全依賴于底層的TCP/IP網(wǎng)絡(luò)。消息丟失可能發(fā)生。如果客戶端出現(xiàn)了意外掉線的情況,可以使用另外的方式多發(fā)布一條消息。同時(shí),可實(shí)現(xiàn)持久性的訂閱。MQTT具有三種等級的信息發(fā)布服務(wù)質(zhì)量,針對“至多一次”這一級別,表示會(huì)產(chǎn)生信息丟失和重復(fù),主要是采集各類環(huán)境傳感器的數(shù)據(jù),記錄丟失一次并不會(huì)產(chǎn)生較大的影響,因?yàn)樵诓唤窈髸?huì)再次發(fā)送。針對“至少一次”這一級別,保障信息送達(dá),但是可能會(huì)發(fā)生信息重復(fù)的情況,“只有一次”表示消息傳達(dá)一次,主要是在計(jì)費(fèi)系統(tǒng)中利用,如果發(fā)生信息重復(fù)和信息丟失等問題,影響到結(jié)果的正確性。
第四,發(fā)布以及訂閱的消息模式簡單,而且積極非常小,在推送傳輸時(shí)可能是不同步的,但這種不同步是可以實(shí)現(xiàn)的,可簡單的發(fā)布、連接、訂閱以及斷開的使用方式。
MQTT在移動(dòng)應(yīng)用中的優(yōu)勢如下:
可靠的傳輸性??煽堪踩畔⒔换?,高可用性以及大規(guī)模的支持,和企業(yè)服務(wù)的建議集成。
消息的實(shí)時(shí)推送??蓪?shí)現(xiàn)有效的實(shí)時(shí)通知,并且所推送的內(nèi)容非常豐富。訂閱以及發(fā)布消息十分靈活,能有效存儲(chǔ)和過濾消息。
成本低、耗能低、帶寬低。這就說明了移動(dòng)應(yīng)用程序所占用的空間十分小,而且利用效率比較高,電量耗費(fèi)也比較小,與SMS相比,更具有經(jīng)濟(jì)性。
MQTT結(jié)構(gòu)主要包括MQTT消息代理和MQTT客戶端,客戶端利用MQTT協(xié)議連接消息代理。在推送消息的過程中,MQTT定義了消息代理和發(fā)布者以及調(diào)閱者,消息代理指的是服務(wù)器端,主要是利用Mosquitto應(yīng)用程序,這是開源信息代理軟件,主要負(fù)責(zé)推送信息,支持信息推送模式。在嵌入式計(jì)算機(jī)和微型控制器等移動(dòng)設(shè)備中都可以利用這種軟件,可以實(shí)現(xiàn)設(shè)備之間的短消息通信。消息代理服務(wù)器端可以接收和管理主題,同時(shí)可以接受訂閱者,注冊并且管理以及維護(hù)發(fā)布者。同時(shí)可以儲(chǔ)存發(fā)布的信息,并且向有需要的訂閱者發(fā)送消息。訂閱者首先進(jìn)行注冊,隨后提交訂閱主題,隨后等待接受有關(guān)主題的消息[1]。
消息中間件利用消極傳遞機(jī)制,實(shí)現(xiàn)平臺(tái)數(shù)據(jù)交流,根據(jù)數(shù)據(jù)通信集成分布式系統(tǒng)。構(gòu)建消息傳遞和消息排隊(duì)模型,可以在拓展進(jìn)程間實(shí)現(xiàn)通信,有利于處理網(wǎng)絡(luò)環(huán)境復(fù)雜的通信工作。
消息中間件主要包括點(diǎn)對點(diǎn)模式和發(fā)布/訂閱模式。利用點(diǎn)對點(diǎn)模式,主要是通過PTP模式實(shí)現(xiàn)消息發(fā)布者和信息接受者之間一對一通信,消息發(fā)布者向消息隊(duì)列中發(fā)布消息,消息接受者再讀取消息。PTP模式比較簡單,但是通信雙方具有較高的耦合度,同時(shí)又缺乏拓展性,如果通信雙方某方發(fā)生變化,另一方需要變更應(yīng)用程序,因此無法實(shí)現(xiàn)多方數(shù)據(jù)通信,系統(tǒng)通信靈活性因此受到影響。
在發(fā)布/訂閱模式中,可以實(shí)現(xiàn)多對多的通信,通過建立消息代理服務(wù)器的特定主體,因此作為中介,實(shí)現(xiàn)多個(gè)消息發(fā)布者和訂閱者之間通信。消息發(fā)布者根據(jù)主體發(fā)布信息,無須考慮信息接受者的目的。消息訂閱者需要結(jié)合相應(yīng)主題獲取相應(yīng)的消息,無須考慮信息發(fā)送地址。消息訂閱者可以將訂閱消息分為持久訂閱和非持久訂閱,利用持久訂閱模式,訂閱者在不在線狀態(tài)中,可以暫時(shí)存儲(chǔ)消息,如果是在線狀態(tài),可以向訂閱者轉(zhuǎn)發(fā)消息。針對非持久訂閱模式,要求訂閱者必須處于在線狀態(tài),如果離線時(shí)間比較長,將會(huì)自動(dòng)刪除消息。
對比點(diǎn)對點(diǎn)模式,發(fā)布/訂閱模式可以利用消息代理服務(wù)器,提高數(shù)據(jù)通信雙方的松耦合,保障網(wǎng)絡(luò)拓?fù)涞耐卣剐院蛣?dòng)態(tài)性。利用消息代理服務(wù)器實(shí)現(xiàn)消息和轉(zhuǎn)發(fā)和管理,在大規(guī)模數(shù)據(jù)交互過程中,將會(huì)影響到消息代理服務(wù)器性能,引發(fā)單電失效的問題,整體系統(tǒng)的可靠性和高效性因此受到影響[2]。
基于MQTT物聯(lián)網(wǎng)消息推送系統(tǒng)主要包括消息發(fā)布者和基于MQTT消息代理服務(wù)器以及移動(dòng)終端,根據(jù)實(shí)際情況,消息發(fā)布者和消息訂閱者可能會(huì)發(fā)生變化,客戶端可以發(fā)布信息,也可以訂閱信息。消息發(fā)布者可以向MQTT消息代理服務(wù)器發(fā)布消息,打包發(fā)送數(shù)據(jù)為信息形式,并且向MQTT消息代理服務(wù)器中發(fā)送。消息訂閱者可以向MQTT消息代理服務(wù)器訂閱消息,也可以取消訂閱的消息,訂閱者具有獨(dú)立的消息接收隊(duì)伍,并且根據(jù)需求解包和解密處理消息。消息推送系統(tǒng)的核心是消息代理服務(wù)器,接收了消息之后,需要封裝、壓縮以及加密處理消息。
利用系統(tǒng)初始化模塊,可以啟動(dòng)消息代理服務(wù)器的服務(wù)功能,客戶端可以利用客戶端初始化模塊,高效連接消息代理服務(wù)器。移動(dòng)終端連接了消息代理服務(wù)器支護(hù),經(jīng)過注冊獲取注冊賬號,發(fā)布/訂閱信息主題,利用訂閱表管理模塊記錄訂閱主題和賬號標(biāo)識。消息發(fā)布者打包處理發(fā)送的數(shù)據(jù)信息,向MQTT消息代理服務(wù)器中發(fā)送,根據(jù)消息優(yōu)先級,在相應(yīng)的系統(tǒng)剛接手隊(duì)伍當(dāng)中存放消息,消息代理模塊在隊(duì)伍當(dāng)中獲取信息,根據(jù)訂閱表中的客戶端訂閱信息,向響應(yīng)的訂閱者推動(dòng)消息。觸發(fā)了MQTT消息代理服務(wù)器消息監(jiān)聽器之后,根據(jù)消息訂閱者各種信息,同時(shí)可以提醒通知訂閱者及時(shí)接受消息。消息訂閱者利用移動(dòng)終端監(jiān)聽到最新消息之后,可以讀取各個(gè)接受隊(duì)列中的消息。
本文論述了基于MQTT的農(nóng)業(yè)物聯(lián)網(wǎng)消息推送系統(tǒng),在登錄了系統(tǒng)之后可以查看GIS地理定位,通過點(diǎn)擊鼠標(biāo)之后,確定土地種植情況,實(shí)時(shí)更新傳感器采集的數(shù)據(jù)信息,同時(shí)可以發(fā)揮遠(yuǎn)程控制作用,幫助管理人員高效管理農(nóng)種土地。
基于MQTT農(nóng)業(yè)物聯(lián)網(wǎng)消息推送系統(tǒng)主要包括種植記錄和施肥記錄以及打藥記錄以及采摘記錄。利用種植記錄模塊可以為用戶展示出種植分區(qū)和種植種類以及種植時(shí)間等情況。利用施肥記錄模塊記錄肥料平成和施肥時(shí)間以及施肥對象等,種植人員可以結(jié)合施肥記錄確定作物施肥的信息,同時(shí)可以遠(yuǎn)程控制施肥工作。利用打藥記錄模塊記負(fù)責(zé)記錄農(nóng)藥名稱和農(nóng)藥噴灑時(shí)間以及面積等,管理人員可以遠(yuǎn)程控制農(nóng)藥噴灑工作,有效監(jiān)控農(nóng)作物的生長情況。利用采摘記錄模塊可以記錄農(nóng)作物的采摘情況,詳細(xì)記錄農(nóng)作物的名稱和采摘時(shí)間等,通過記錄這些時(shí)間,避免發(fā)生提前采摘等問題。
利用各種集成技術(shù),可以利用基于MQTT農(nóng)業(yè)物聯(lián)網(wǎng)消息推送系統(tǒng)自動(dòng)采集農(nóng)作物周邊環(huán)境的空氣溫度和濕度以及土壤等信息,實(shí)現(xiàn)實(shí)時(shí)遠(yuǎn)程傳輸。系統(tǒng)在實(shí)際運(yùn)行過程中,需要充分發(fā)揮出傳感器技術(shù)的作用,在特定位置安裝特定傳感器,采集沒異性數(shù)據(jù)參數(shù)。如果傳感器無法正常工作,那么利用該系統(tǒng)可以反饋于監(jiān)管人員和決策人員。在數(shù)據(jù)分析專欄當(dāng)中,系統(tǒng)可以自動(dòng)顯示傳感器的工作狀態(tài),如果傳感器發(fā)生故障,基于MQTT農(nóng)業(yè)物聯(lián)網(wǎng)消息推送系統(tǒng)可以提出警報(bào),提醒用戶及時(shí)處理問題。
在MQTT網(wǎng)絡(luò)消息的推送系統(tǒng)中,選擇MQTT協(xié)議效果高,而且戰(zhàn)勝資源非常低,而且采用訂閱以及發(fā)布的制度可自動(dòng)把消息發(fā)布者所發(fā)布的消息及時(shí)推送至移動(dòng)終端,可有效滿足終端資源特點(diǎn),避免對服務(wù)器造成過大的壓力,節(jié)省人力部門的成本以及網(wǎng)絡(luò)的資源。因此,在大數(shù)據(jù)交互消息代理服務(wù)器所遇到的問題,可構(gòu)建服務(wù)器集群,有效加強(qiáng)服務(wù)器穩(wěn)定以及可靠性,可有效支持更多用戶。