【摘要】隨著大數(shù)據(jù)及物聯(lián)網(wǎng)(IoT)技術(shù)的應(yīng)用以及普及,社會(huì)各領(lǐng)域?qū)ξ锫?lián)網(wǎng)技術(shù)的需求也越來(lái)越高。傳統(tǒng)的物聯(lián)網(wǎng)技術(shù)不能進(jìn)行大數(shù)據(jù)下的機(jī)器學(xué)習(xí),而且需要比較高的二次開(kāi)發(fā)成本;在這樣的背景下,面向大數(shù)據(jù)物聯(lián)網(wǎng)的中間件技術(shù)就日益重要。
【關(guān)鍵詞】消息中間件;MQ;大數(shù)據(jù);物聯(lián)網(wǎng)
1. 前言
物聯(lián)網(wǎng)指的是借助射頻技術(shù)連接多個(gè)智能終端,并對(duì)它們進(jìn)行識(shí)別和管理。物聯(lián)網(wǎng)的主要特征包括:(1)感知能力強(qiáng)??梢越柚漕l技術(shù)(RFID)及內(nèi)置在智能設(shè)備上的傳感器,對(duì)物體進(jìn)行感知,并且這種感知可以認(rèn)為是隨時(shí)隨地的。(2)共享的廣泛性。通過(guò)通信網(wǎng)及互聯(lián)網(wǎng)實(shí)現(xiàn)隨時(shí)、隨地的信息共享。(3)數(shù)據(jù)的智能處理。物聯(lián)網(wǎng)采集到海量數(shù)據(jù)后,可以借助云計(jì)算、大數(shù)據(jù)技術(shù)進(jìn)行智能處理。
在物聯(lián)網(wǎng)技術(shù)應(yīng)用到各行各業(yè)時(shí),有些共性的問(wèn)題需要解決:(1)優(yōu)先級(jí)問(wèn)題。在多個(gè)業(yè)務(wù)、產(chǎn)品同時(shí)需要發(fā)送或接收消息的時(shí)候,為了解決不同業(yè)務(wù)的優(yōu)先級(jí)問(wèn)題并提高報(bào)文的傳輸效率,需要為不同業(yè)務(wù)、產(chǎn)品設(shè)置優(yōu)先級(jí);這樣高優(yōu)先級(jí)的消息就可以在最短時(shí)間內(nèi)優(yōu)先得到收發(fā),低優(yōu)先級(jí)的則可以稍微延后處理。(2)可靠的消息傳輸。很多領(lǐng)域的傳輸內(nèi)容是非常關(guān)鍵的、不允許丟失的,為了保證數(shù)據(jù)包能夠可靠、不重復(fù)的到達(dá)接收端,就需要保證數(shù)據(jù)傳輸?shù)娜哂嘈院涂煽啃?,即使出現(xiàn)網(wǎng)絡(luò)中斷等異常情況,也可以保證數(shù)據(jù)的可靠到達(dá)。
中間件在操作系統(tǒng)和應(yīng)用軟件之間,它以自己實(shí)現(xiàn)的復(fù)雜性保證企業(yè)應(yīng)用的簡(jiǎn)單化。如果沒(méi)有中間件,則應(yīng)用需要直接和操作系統(tǒng)、網(wǎng)絡(luò)通信協(xié)議以及數(shù)據(jù)庫(kù)等直接交互,需要考慮系統(tǒng)的多樣性、網(wǎng)絡(luò)通信協(xié)議的復(fù)雜性等各種因素。中間件屏蔽了底層的這些差異,并且為開(kāi)發(fā)者提供公共的接口,簡(jiǎn)化了程序設(shè)計(jì)。
物聯(lián)網(wǎng)領(lǐng)域可以借助中間件技術(shù)將各種智能硬件設(shè)備連接起來(lái),并整合到云端,真正實(shí)現(xiàn)云環(huán)境與智能終端的端、云一體化,從而可以解決海量消息通信的問(wèn)題。
2. MQ消息中間件
在消息中間件領(lǐng)域,占據(jù)商業(yè)市場(chǎng)統(tǒng)治地位的是IBM的Websphere MQ,它是一款基于消息隊(duì)列的中間件,其自身實(shí)現(xiàn)保證能夠屏蔽底層操作系統(tǒng)平臺(tái)間的差異,從而實(shí)現(xiàn)跨平臺(tái)、跨網(wǎng)絡(luò)的消息傳輸。Websphere MQ包括消息傳輸系統(tǒng)以及應(yīng)用程序接口兩部分,在應(yīng)用程序間傳送消息時(shí)可以實(shí)現(xiàn)不同網(wǎng)絡(luò)協(xié)議、不同操作系統(tǒng)以及不同語(yǔ)言的應(yīng)用之間的消息傳送。最重要的是,Websphere MQ的消息傳輸是高效并且可靠的,消息不會(huì)丟失。
MQ消息中間件有如下優(yōu)點(diǎn):(1)應(yīng)用開(kāi)發(fā)對(duì)底層透明。在開(kāi)發(fā)應(yīng)用程序時(shí),只關(guān)注業(yè)務(wù)實(shí)現(xiàn)即可,并不需要過(guò)多操心業(yè)務(wù)層以下的通信協(xié)議、操作系統(tǒng)細(xì)節(jié)等,因此程序開(kāi)發(fā)更加簡(jiǎn)單。(2)系統(tǒng)開(kāi)發(fā)周期短。消息中間件提供了統(tǒng)一的API接口,標(biāo)準(zhǔn)的實(shí)現(xiàn)和接口避免了各種適配、測(cè)試及整合工作,從而有效縮短開(kāi)發(fā)周期。(3)降低風(fēng)險(xiǎn)和成本。如果不使用中間件,在實(shí)現(xiàn)業(yè)務(wù)應(yīng)用程序時(shí),就需要考慮可靠性、耦合度等各種性能因素,會(huì)提高總的成本;另外,標(biāo)準(zhǔn)的消息中間件能夠保證業(yè)務(wù)系統(tǒng)實(shí)現(xiàn)無(wú)縫銜接,保證新系統(tǒng)與老系統(tǒng)在過(guò)渡期的穩(wěn)定運(yùn)行。
IBM的Websphere MQ在實(shí)際使用過(guò)程中會(huì)涉及到一些對(duì)象的概念,包括消息、隊(duì)列管理器、隊(duì)列、通道等。這些對(duì)象都有其特定屬性,屬性不同會(huì)導(dǎo)致對(duì)象有不同的特性和工作方式。
隊(duì)列管理器是MQ中各資源的容器,可以容納隊(duì)列、通道等對(duì)象。MQ中通信的基本對(duì)象是消息,它實(shí)際上可以理解成一段數(shù)據(jù),能夠作為信息載體而被應(yīng)用程序理解。消息內(nèi)容分為消息頭和消息體兩部分,其中消息頭是消息的屬性描述,指定了消息如何被隊(duì)列管理器或應(yīng)用程序處理;消息頭可以完全由隊(duì)列管理器自動(dòng)生成,應(yīng)用程序可以覆蓋各屬性。消息體是應(yīng)用程序間傳輸?shù)膶?shí)際內(nèi)容,存在形式可以是字符串、xml文件甚至是二進(jìn)制數(shù)據(jù)。
消息實(shí)際上是存放在隊(duì)列中的。根據(jù)隊(duì)列的用途,可以將隊(duì)列分為本地隊(duì)列、遠(yuǎn)程隊(duì)列定義、傳輸隊(duì)列等。消息是按照先后順序存放到隊(duì)列中的,在消費(fèi)消息時(shí)有兩種模式,默認(rèn)情況下使用先進(jìn)先出模式,也可以設(shè)置為優(yōu)先級(jí)模式,這樣會(huì)根據(jù)消息的優(yōu)先級(jí)從高到低進(jìn)行消費(fèi)。通道把兩個(gè)隊(duì)列管理器連接起來(lái),保證消息可以從源端的隊(duì)列管理器發(fā)送到目的端的隊(duì)列管理器,實(shí)現(xiàn)兩個(gè)隊(duì)列管理器間的點(diǎn)到點(diǎn)通信。
為了方便應(yīng)用程序編寫(xiě),Websphere MQ提供了統(tǒng)一的API接口,主要的接口是兩個(gè):發(fā)送消息(PUT)和接收消息(GET)。使用Websphere MQ完成兩個(gè)系統(tǒng)間的消息傳輸?shù)氖疽鈭D如圖1所示:
3. 中間件在大數(shù)據(jù)物聯(lián)網(wǎng)領(lǐng)域的應(yīng)用
將中間件應(yīng)用到大數(shù)據(jù)物聯(lián)網(wǎng)領(lǐng)域時(shí),通常會(huì)涉及到三個(gè)部分:物聯(lián)網(wǎng)智能設(shè)備采集端、前置端以及服務(wù)器端。大量智能設(shè)備分布在需要采集數(shù)據(jù)的區(qū)域,并且將采集到的數(shù)據(jù)實(shí)時(shí)傳送到前置端。前置端和服務(wù)器端都會(huì)部署MQ服務(wù)器,數(shù)據(jù)被從前置端發(fā)送到服務(wù)器端。
為便于對(duì)前置端以及服務(wù)器端的MQ對(duì)象進(jìn)行統(tǒng)一管理,需要制定隊(duì)列、通道等對(duì)象的命名規(guī)則。
前置端需要配置遠(yuǎn)程隊(duì)列定義、傳輸隊(duì)列,服務(wù)器端需要配置接收隊(duì)列。隊(duì)列的命名規(guī)范包括:(1)遠(yuǎn)程隊(duì)列定義規(guī)范。QR_業(yè)務(wù)名稱(chēng)_智能終端采集設(shè)備編號(hào),舉例來(lái)說(shuō),如果物聯(lián)網(wǎng)設(shè)備采集的是氣象數(shù)據(jù),則1234號(hào)設(shè)備使用的遠(yuǎn)程隊(duì)列可以命名為QR_QIXIANG_1234。(2)傳輸隊(duì)列規(guī)范。QX_業(yè)務(wù)名稱(chēng)_智能終端采集設(shè)備編號(hào),例如QX_QIXIANG_1234。(3)接收隊(duì)列規(guī)范。QL_業(yè)務(wù)名稱(chēng)_智能終端采集設(shè)備編號(hào),例如QR_QIXIANG_1234。
通道的命名規(guī)范相對(duì)簡(jiǎn)單,CH_業(yè)務(wù)名稱(chēng)_智能終端采集設(shè)備編號(hào)即可,例如CH_QIXIANG_1234。
經(jīng)過(guò)這樣命名后,不同智能終端采集設(shè)備采集到的不同業(yè)務(wù)數(shù)據(jù)就可以使用獨(dú)立的通道進(jìn)行消息傳輸,傳輸?shù)椒?wù)器端后也可以保存在各自的隊(duì)列中,實(shí)現(xiàn)業(yè)務(wù)上的相互隔離,保證了消息的安全性。不同智能終端采集設(shè)備采集數(shù)據(jù)并通過(guò)前置端傳輸?shù)椒?wù)器端的示意圖如圖2所示:
傳輸物聯(lián)網(wǎng)消息的過(guò)程中,可以設(shè)置消息的優(yōu)先級(jí),以保證高優(yōu)先級(jí)的消息數(shù)據(jù)具有優(yōu)先權(quán)。Websphere MQ消息的優(yōu)先級(jí)可以設(shè)置為0到9中的任意值,0表示優(yōu)先級(jí)最低,9表示優(yōu)先級(jí)最高;這樣設(shè)置了消息的優(yōu)先級(jí)后,可以對(duì)重要業(yè)務(wù)的報(bào)文、時(shí)效性要求高的報(bào)文設(shè)置高優(yōu)先級(jí),以?xún)?yōu)先接收它們。
某些業(yè)務(wù)的消息數(shù)據(jù)報(bào)文可能比較大,受制于網(wǎng)絡(luò)帶寬等資源的限制,這些消息在傳輸過(guò)程中會(huì)長(zhǎng)時(shí)間的占用網(wǎng)絡(luò)帶寬,導(dǎo)致其他消息不能及時(shí)傳輸。為了解決這一問(wèn)題,就需要在緊急消息到達(dá)時(shí),允許中斷大消息的傳輸,從而保證緊急消息的優(yōu)先傳輸?;谶@樣的考慮,Websphere MQ對(duì)傳輸消息的最大大小做了限制,允許傳輸?shù)淖畲髥螚l消息為100M。
4. 總結(jié)
目前物聯(lián)網(wǎng)在各行各業(yè)得到了廣泛的應(yīng)用,物聯(lián)網(wǎng)智能終端在傳輸數(shù)據(jù)時(shí),要保證消息 的實(shí)時(shí)性、可靠性以及高效率,消息中間件產(chǎn)品完全可以滿(mǎn)足這種要求。消息中間件應(yīng)用到大數(shù)據(jù)物聯(lián)網(wǎng)領(lǐng)域中時(shí),可以設(shè)置傳輸?shù)南?shù)據(jù)的優(yōu)先級(jí),以保證高優(yōu)先級(jí)的消息優(yōu)先被處理,并且在保證消息可靠傳輸?shù)耐瑫r(shí)效率也比較高,完全符合物聯(lián)網(wǎng)的應(yīng)用需求。
參考文獻(xiàn):
[1]王艷.物聯(lián)網(wǎng)網(wǎng)關(guān)異構(gòu)協(xié)議中間件關(guān)鍵技術(shù)研究[D].深圳大學(xué),2016.
[2]ShashankShesharSingh,AjayKumar,KuldeepSingh,BhaskarBiswas.C2IM:Communitybasedcontext-awareinfluencemaximizationinsocialnetworks[J].PhysicaA:StatisticalMechanicsanditsApplications,2019,514.
[3]陳宇翔.精通WebSphereMQ[M].安徽:安徽科學(xué)技術(shù)出版社,2014,9.
[4]楊放春.異構(gòu)網(wǎng)絡(luò)中間件與開(kāi)放式API技術(shù)[M].北京:北京郵電大學(xué)出版社,2007,3.
作者簡(jiǎn)介:吳謀碩,湖南湘鄉(xiāng)人,碩士,副教授,研究方向:大數(shù)據(jù),信息檢索,數(shù)字媒體。