亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        消息中間件在物聯(lián)網(wǎng)網(wǎng)關(guān)中的應(yīng)用

        2018-12-12 08:15:44李松濤尹清爽
        物聯(lián)網(wǎng)技術(shù) 2018年12期
        關(guān)鍵詞:插件網(wǎng)關(guān)消息

        李松濤,尹清爽

        (河南工程學(xué)院 計算機學(xué)院,河南 鄭州 451191)

        0 引 言

        物聯(lián)網(wǎng)應(yīng)用系統(tǒng)是一個復(fù)雜的分布式系統(tǒng),系統(tǒng)通常由數(shù)據(jù)采集節(jié)點、執(zhí)行器節(jié)點和網(wǎng)關(guān)組成,不同功能節(jié)點之間可以使用ZigBee,BLE等通信協(xié)議實現(xiàn)數(shù)據(jù)通信。通常情況下,這些協(xié)議的實現(xiàn)要求所有節(jié)點使用同一種開發(fā)環(huán)境,部署在同一款軟件框架上,在實際應(yīng)用中,更多的是對原有系統(tǒng)的擴展或者是在原有系統(tǒng)之上再疊加一層新系統(tǒng)。用戶更關(guān)注如何復(fù)用已有的軟硬件資源,以減少開發(fā)周期并降低成本。原有節(jié)點可能由不同的開發(fā)語言實現(xiàn),運行在不同的框架和平臺之上。如何在不同的模塊、平臺和應(yīng)用之間進行數(shù)據(jù)通信是實際應(yīng)用過程中亟待解決的問題。消息中間件是解決企業(yè)應(yīng)用系統(tǒng)異構(gòu)集成的一種有效方法[1-2],這種方法也同樣適用于物聯(lián)網(wǎng)[3]。物聯(lián)網(wǎng)中的分布式節(jié)點本身就是一個小型的嵌入式系統(tǒng),其硬件配置足以支持其上運行嵌入式操作系統(tǒng)和服務(wù)管理軟件,從而為基于消息的異構(gòu)系統(tǒng)集成在物聯(lián)網(wǎng)節(jié)點上的實現(xiàn)提供了可能。

        本文對基于消息中間件的物聯(lián)網(wǎng)應(yīng)用異構(gòu)系統(tǒng)集成進行了探索,并在環(huán)境監(jiān)控系統(tǒng)中對設(shè)計方案進行了驗證。傳感器節(jié)點和網(wǎng)關(guān)分別使用不同的開發(fā)語言和客戶端軟件,傳感器節(jié)點采用Python開發(fā),網(wǎng)關(guān)使用基于OSGi框架的插件技術(shù),對網(wǎng)關(guān)管理軟件Kura的服務(wù)進行擴展,使其支持JMS(Java Message Service,JMS)。借助部署在網(wǎng)關(guān)的ActiveMQ消息中間件,實現(xiàn)了在不同節(jié)點之間通過消息機制進行數(shù)據(jù)通信的目的。

        1 相關(guān)技術(shù)介紹

        1.1 Kura開源網(wǎng)關(guān)框架

        Kura是Eclipse基金會發(fā)布的物聯(lián)網(wǎng)項目,用于構(gòu)建IoT網(wǎng)關(guān)框架,它提供了一種使用開源硬件作為網(wǎng)關(guān)的方式。Kura內(nèi)部嵌入了多種對網(wǎng)關(guān)容器進行管理的服務(wù),包括UI Web管理界面以及支持Amazon AWS IoT,Microsoft Azure IoT和IBM IoT云服務(wù)的接口[4]。Kura運行在Java虛擬機(JVM)上,使用模塊化OSGi(Open Service Gateway Initiative,OSGi)技術(shù)實現(xiàn)。由于網(wǎng)關(guān)基于動態(tài)可插拔的模塊化技術(shù)實現(xiàn),因此用戶可以很方便地創(chuàng)建自己的功能插件,并集成到系統(tǒng)中實現(xiàn)網(wǎng)關(guān)功能的擴展[5-6]。Kura遵循OSGi R4規(guī)范,其核心設(shè)計思想是面向服務(wù)的組件模型。在OSGi中,組件或模塊稱為bundle,OSGi支持軟件熱插拔、多版本并存,具有動態(tài)模塊化、面向服務(wù)架構(gòu)和模塊擴展等功能,OSGi的模塊擴展功能可以在不改變原有模塊代碼的情況下注入新的功能或更新原有功能[7]。

        1.2 ActiveMQ消息服務(wù)

        消息中間件基于消息驅(qū)動方式,為異構(gòu)系統(tǒng)和平臺提供了一種高效、可靠的數(shù)據(jù)通信服務(wù)[8]。ActiveMQ是被廣泛使用的基于JMS規(guī)范的開源消息中間件,它屏蔽了底層軟件框架和硬件的差異,具有部署簡單、占用資源少、運行可靠等特點。消息中間件不僅簡化了在物聯(lián)網(wǎng)環(huán)境下異構(gòu)應(yīng)用的集成,也提供了一種構(gòu)建松耦合系統(tǒng)的方式。

        2 系統(tǒng)框架設(shè)計

        系統(tǒng)由傳感器節(jié)點和網(wǎng)關(guān)構(gòu)成,在局域網(wǎng)內(nèi)采用分布式部署,節(jié)點之間通過消息進行數(shù)據(jù)通信,系統(tǒng)架構(gòu)如圖1所示。

        圖1 系統(tǒng)架構(gòu)

        傳感器節(jié)點采集現(xiàn)場數(shù)據(jù)后,將傳感器數(shù)據(jù)封裝到消息負(fù)載中,并通過設(shè)計開發(fā)的ActiveMQ客戶端軟件將消息發(fā)送到網(wǎng)關(guān)。網(wǎng)關(guān)采用Kura框架對軟硬件資源進行管理,與傳感器節(jié)點的硬件運行平臺相同,它們運行在開源硬件樹莓派(Raspberry Pi)之上。網(wǎng)關(guān)不具有數(shù)據(jù)采集功能,但具有更多的數(shù)據(jù)處理和網(wǎng)絡(luò)管理功能。系統(tǒng)需要在網(wǎng)關(guān)中部署ActiveMQ消息中間件,用于JMS消息管理。由于Kura框架本身不支持JMS服務(wù),無法實現(xiàn)與消息中間件的消息通信,因此,需要設(shè)計新的bundle對Kura網(wǎng)關(guān)框架進行JMS消息功能擴展,使其支持對JMS消息的訂閱/發(fā)布服務(wù)。網(wǎng)關(guān)既可以利用消息機制接收來自傳感器節(jié)點的數(shù)據(jù),也可對數(shù)據(jù)進行格式轉(zhuǎn)換、分析,并通過MQTT協(xié)議與云端相連。

        基于JMS消息的通信機制可以屏蔽通信雙方的具體技術(shù)實現(xiàn)細(xì)節(jié),以統(tǒng)一的消息協(xié)議通過第三方消息中間件實現(xiàn)通信,并可以實現(xiàn)一對一、一對多等不同形式的消息通信模式。傳感器節(jié)點可以在不同的主題上發(fā)布消息,也可以多個節(jié)點在同一主題上發(fā)布,滿足了系統(tǒng)集成的松耦合和靈活性要求。

        3 主要功能的設(shè)計與實現(xiàn)

        3.1 傳感器節(jié)點

        系統(tǒng)中節(jié)點硬件平臺均選用開源硬件樹莓派開發(fā)板,其上可運行Linux或Win10操作系統(tǒng),開發(fā)板搭載1.2 GHz的64位ARM處理器,板上集成802.11 b/g/n無線網(wǎng)卡和低功耗藍(lán)牙4.1適配器。為連接外部設(shè)備,樹莓派上配置有40個GPIO引腳,支持SPI,I2C以及Serial等接口和總線標(biāo)準(zhǔn),豐富的軟硬件資源可保證其不僅可作為數(shù)據(jù)采集終端,也可作為物聯(lián)網(wǎng)系統(tǒng)的小型網(wǎng)關(guān)。

        傳感器節(jié)點通過GPIO接口連接溫濕度傳感器DHT11。數(shù)據(jù)采集程序使用Python開發(fā),獲取數(shù)字量的環(huán)境溫、濕度數(shù)據(jù),然后調(diào)用STOMP(Streaming Text Orientated Message Protocol,STOMP)庫函數(shù)將數(shù)據(jù)封裝為JMS消息發(fā)送到網(wǎng)關(guān)。STOMP即流文本定向消息協(xié)議,是一種面向消息中間件設(shè)計的簡單文本協(xié)議。傳感器節(jié)點程序流程如圖2所示。

        圖2 傳感器節(jié)點程序流程圖

        3.2 網(wǎng)關(guān)JMS插件實現(xiàn)

        Kura雖然內(nèi)置了大量支持物聯(lián)網(wǎng)功能的服務(wù),但并未直接提供對JMS的支持。Kura基于OSGi技術(shù)實現(xiàn),用戶可以基于OSGi的動態(tài)化插件技術(shù)構(gòu)建自己的功能插件。為了在網(wǎng)關(guān)實現(xiàn)JMS客戶端功能,需要做如下兩方面工作:

        (1)安裝配置JMS支持插件,OSGi框架只能運行符合bundle規(guī)范的Jar庫文件,JMS支持庫文件,以普通Jar庫文件的形式提供,因此需要將Jar文件轉(zhuǎn)變成bundle插件。

        (2)設(shè)計可提供JMS服務(wù)的bundle,其實質(zhì)是封裝JMS客戶端的具體實現(xiàn),以服務(wù)的形式發(fā)布接口,供其他bundle調(diào)用,這部分是系統(tǒng)設(shè)計的核心內(nèi)容。

        bundle之間通過服務(wù)的方式關(guān)聯(lián),可以降低bundle之間的耦合,有利于軟件重用,并提高其靈活性。在發(fā)布或使用bundle前,首先需要注冊和獲取bundle所提供的服務(wù)。服務(wù)的注冊和獲取主要包括如下兩種方式:

        (1)通過編碼的方式在bundle激活器中完成;

        (2)使用聲明式服務(wù)的方式管理bundle,由組件配置文件定義bundle的服務(wù)接口以及插件倚賴。

        相對于第一種方式,第二種方式具有更大的靈活性。本系統(tǒng)對插件的管理使用第二種方式,聲明式服務(wù)可以保證在服務(wù)接口不變的情況下,根據(jù)需要動態(tài)配置、升級、替換bundle,并在服務(wù)切換過程中無需重啟系統(tǒng),實現(xiàn)“熱插拔”。

        在系統(tǒng)設(shè)計過程中,基于Kura框架設(shè)計實現(xiàn)了多個bundle對原有服務(wù)進行擴展,包括JMS服務(wù)bundle(JMS Service)、服務(wù)實現(xiàn)bundle(JMS Service Implement)和JMS服務(wù)支持bundle(JMS bundle)。JMS Service提供框架級別的服務(wù),該服務(wù)注冊后可被其他bundle使用。JMS Service Implement提供具體的服務(wù)實現(xiàn),將接口與實現(xiàn)分離,對其他插件隱藏了服務(wù)實現(xiàn)的細(xì)節(jié),符合OSGi對模塊動態(tài)性和松耦合的要求。網(wǎng)關(guān)擴展bundle之間的依賴關(guān)系如圖3所示。

        圖3 網(wǎng)關(guān)擴展bundle之間的依賴關(guān)系

        JMS bundle封裝與ActiveMQ通信的基礎(chǔ)類,該bundle不依賴框架的任何bundle,是一個完全獨立的bundle,它可以根據(jù)需要向外發(fā)布軟件包,供其他bundle進行功能調(diào)用。

        以上三個bundle使用OSGi機制管理bundle的生命周期,實現(xiàn)服務(wù)的注冊和發(fā)布。JMS Service Implement和JMS Service bundle還需要使用Kura框架提供的底層服務(wù),如通過事件機制與其他bundle通信。

        4 系統(tǒng)功能測試

        系統(tǒng)測試環(huán)境包含兩塊樹莓派3B開發(fā)板,板上運行Raspbian操作系統(tǒng),分別作為數(shù)據(jù)采集節(jié)點和網(wǎng)關(guān),網(wǎng)關(guān)運行Apache ActiveMQ 5.13.0消息中間件和網(wǎng)關(guān)管理軟件Kura3.1,系統(tǒng)工作在Internet和WiFi網(wǎng)絡(luò)環(huán)境。測試環(huán)境硬件連接如圖4所示。

        數(shù)據(jù)采集節(jié)點以10 s為周期采集環(huán)境的溫度數(shù)據(jù),并以消息的形式發(fā)送到特定的主題或消息隊列中。網(wǎng)關(guān)節(jié)點啟動服務(wù)器消息中間件ActiveMQ和Kura管理軟件后,ActiveMQ將來自傳感器節(jié)點的消息保存在隊列中,Kura的功能擴展插件讀取消息隊列消息,并由其他插件對數(shù)據(jù)進行分析處理。測試結(jié)果表明,系統(tǒng)實現(xiàn)了不同節(jié)點之間異構(gòu)應(yīng)用的集成。

        圖4 測試環(huán)境硬件連接

        5 結(jié) 語

        本文使用消息中間件實現(xiàn)了物聯(lián)網(wǎng)系統(tǒng)的異構(gòu)集成,重點對Kura的服務(wù)功能進行了擴展,設(shè)計實現(xiàn)了面向服務(wù)的JMS bunble,部署到OSGi框架之上,使Kura支持JMS消息通信。實驗結(jié)果表明,消息集成模式可以簡單有效地實現(xiàn)物聯(lián)網(wǎng)應(yīng)用系統(tǒng)的異構(gòu)集成,在保持原有節(jié)點功能不變的情況下,只需添加JMS功能模塊即可可靠地實現(xiàn)數(shù)據(jù)通信。但由于消息通信的時間延遲,只能在非實時的場景下應(yīng)用。

        猜你喜歡
        插件網(wǎng)關(guān)消息
        基于改進RPS技術(shù)的IPSEC VPN網(wǎng)關(guān)設(shè)計
        一張圖看5G消息
        自編插件完善App Inventor與樂高機器人通信
        電子制作(2019年22期)2020-01-14 03:16:34
        MapWindowGIS插件機制及應(yīng)用
        LTE Small Cell網(wǎng)關(guān)及虛擬網(wǎng)關(guān)技術(shù)研究
        移動通信(2015年18期)2015-08-24 07:45:08
        應(yīng)對氣候變化需要打通“網(wǎng)關(guān)”
        太陽能(2015年7期)2015-04-12 06:49:50
        基于Revit MEP的插件制作探討
        消息
        消息
        消息
        国产丶欧美丶日本不卡视频| 一区二区免费国产a在亚洲 | 麻豆三级视频网站在线观看| av天堂一区二区三区| 亚洲精品一区二在线观看| 日韩欧美中文字幕公布 | 国产中文欧美日韩在线| 最新国产拍偷乱偷精品| 中文少妇一区二区三区| 熟女中文字幕一区二区三区| 色偷偷888欧美精品久久久| 最新中文字幕av无码不卡| 亚洲男同志gay 片可播放| 少妇被粗大猛进进出出| 亚洲中文字幕免费精品| 亚洲av无码乱码国产麻豆| 久久久久久久岛国免费观看| 中文字幕一区二区三区四区在线 | 亚洲成a人片在线观看无码3d| 美女视频黄的全免费视频网站| 久久无码人妻一区=区三区| 一区二区三区人妻在线| 亚洲伊人av天堂有码在线| 久久久亚洲精品无码| 在线观看国产高清免费不卡黄| 国产午夜精品久久久久九九| 女人18毛片aa毛片免费| 又粗又硬又大又爽免费视频播放| 妺妺窝人体色www在线图片| 日本变态网址中国字幕| 曰日本一级二级三级人人| 国产在线第一区二区三区| 日日碰狠狠添天天爽超碰97| av手机天堂| 国产伦精品一区二区三区| 欧美牲交a欧美牲交aⅴ| 亚洲熟女少妇一区二区| 日本经典中文字幕人妻| 亚洲人成综合第一网站| 国产美女久久精品香蕉69| 国内精品一区视频在线播放|