鄭鵬怡 張振國(guó) 袁戰(zhàn)軍
(陜西國(guó)際商貿(mào)學(xué)院信息與工程學(xué)院 陜西 西安 712046)
隨著計(jì)算機(jī)技術(shù)的發(fā)展,現(xiàn)有的計(jì)算機(jī)分布式系統(tǒng)應(yīng)用要求中間件具有實(shí)時(shí)性。實(shí)時(shí)中間件可以為大規(guī)模新型應(yīng)用系統(tǒng)提供數(shù)據(jù)通信的平臺(tái),在滿足數(shù)據(jù)交互及時(shí)性和正確性的同時(shí),為應(yīng)用開(kāi)發(fā)提供統(tǒng)一的接口,使得開(kāi)發(fā)人員不用考慮底層通信的實(shí)現(xiàn),把更多的精力投入到應(yīng)用邏輯方面,提高了開(kāi)發(fā)效率,縮短了開(kāi)發(fā)時(shí)間。
傳統(tǒng)中間件主要側(cè)重于解決異構(gòu)和分布情況下的復(fù)雜問(wèn)題,系統(tǒng)的實(shí)現(xiàn)細(xì)節(jié)通過(guò)抽象的方式隱藏了起來(lái),形成了一個(gè)典型的黑箱結(jié)構(gòu)[1]。它為分布式實(shí)時(shí)系統(tǒng)提供了開(kāi)發(fā)簡(jiǎn)單、可互操作性、靈活性、可維護(hù)性、可重用性等優(yōu)勢(shì),但卻并不適用于具有嚴(yán)格時(shí)限的應(yīng)用,缺乏對(duì)實(shí)時(shí)性的支持[2]。因此,利用基于發(fā)布訂閱機(jī)制的實(shí)時(shí)中間件構(gòu)筑分布式實(shí)時(shí)系統(tǒng),可以降低軟件開(kāi)發(fā)的費(fèi)用,提高應(yīng)用的可互操作性、可重用性、可擴(kuò)展性、可維護(hù)性以及時(shí)間可預(yù)測(cè)性[3]。它為軟件的體系結(jié)構(gòu)注入了新鮮的活力,簡(jiǎn)化了應(yīng)用程序的開(kāi)發(fā)復(fù)雜性,促使軟件生產(chǎn)的產(chǎn)業(yè)化,使跨企業(yè)的分布式應(yīng)用得到了推廣。
與當(dāng)前通用發(fā)布訂閱中間件相比,本文采用RTX(Real Time eXtention)操作系統(tǒng)與RT-TCP/IP協(xié)議來(lái)保證數(shù)據(jù)處理和數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性,確保提出的中間件具有較強(qiáng)的實(shí)時(shí)性能,可滿足分布式實(shí)時(shí)應(yīng)用的需求。另外,本文基于分布式對(duì)象的發(fā)布訂閱機(jī)制將中間件的通信方式由消息封裝成類,通過(guò)對(duì)象的訪問(wèn)接口實(shí)現(xiàn)互操作功能,結(jié)構(gòu)清晰,使用方便,具有獨(dú)立性、可靠性、繼承性等優(yōu)勢(shì),更加便于中間件的實(shí)現(xiàn)與應(yīng)用。
在分布式系統(tǒng)中,實(shí)時(shí)中間件可以解決異構(gòu)環(huán)境下應(yīng)用交互和數(shù)據(jù)傳遞,也可以實(shí)現(xiàn)分布式應(yīng)用跨平臺(tái)互操作。同時(shí),還可以保證分布式系統(tǒng)在限定的時(shí)間內(nèi)完成對(duì)外部事件的響應(yīng)和任務(wù)執(zhí)行,提高數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性、可重用性及可擴(kuò)展性[4]。要想完成對(duì)以上功能的實(shí)現(xiàn),需要完成以下三個(gè)方面的內(nèi)容。
支持基于分布式對(duì)象的數(shù)據(jù)同步是實(shí)時(shí)中間件的一個(gè)核心功能。該功能用例是當(dāng)發(fā)布端更新一個(gè)對(duì)象時(shí),發(fā)布端對(duì)象對(duì)本地對(duì)象進(jìn)行更新,中間件自發(fā)地完成對(duì)象狀態(tài)的同步到代理[5],訂閱端從代理中獲得更新后的狀態(tài)數(shù)據(jù)[6]。
基于以太網(wǎng)的發(fā)布訂閱通信機(jī)制可以提高實(shí)時(shí)中間件的可重用性和可擴(kuò)展性,提高分布式應(yīng)用開(kāi)發(fā)的效率和性能[7]。該功能用例為發(fā)布端公布發(fā)布興趣[8],訂閱端公布訂閱興趣,中間件進(jìn)行興趣匹配,建立連接。接著發(fā)布端發(fā)布狀態(tài)數(shù)據(jù),中間件通過(guò)同步功能完成在訂閱端的更新,當(dāng)訂閱端獲取狀態(tài)數(shù)據(jù)接口時(shí),獲取相應(yīng)的數(shù)據(jù)[9]。
發(fā)布訂閱實(shí)時(shí)中間件要為分布式實(shí)時(shí)應(yīng)用的時(shí)間可預(yù)測(cè)性提供使能機(jī)制及服務(wù),還要為應(yīng)用提供表達(dá)時(shí)間約束和特性的手段,并提供多種粒度的實(shí)時(shí)控制機(jī)制,使應(yīng)用能夠調(diào)節(jié)中間件的各個(gè)處理環(huán)節(jié),從而為應(yīng)用任務(wù)提供某種程度的時(shí)間可預(yù)測(cè)性[10]。該功能用例為發(fā)布端和訂閱端分別采用QoS(Quality of Service)接口,設(shè)置實(shí)時(shí)性要求,中間件對(duì)發(fā)布端和訂閱端所設(shè)置的實(shí)時(shí)性要求進(jìn)行綜合,生成狀態(tài)數(shù)據(jù)的優(yōu)先級(jí),中間件根據(jù)優(yōu)先級(jí)進(jìn)行狀態(tài)數(shù)據(jù)的更新,完成狀態(tài)對(duì)象的實(shí)時(shí)分發(fā)。
另外,對(duì)于性能需求也有要求,如果分布式對(duì)象的大小在1 024字節(jié)以內(nèi),中間件的更新延遲應(yīng)在1毫秒以下。
根據(jù)發(fā)布訂閱實(shí)時(shí)中間件的功能需求,采用基于分布式對(duì)象的數(shù)據(jù)同步技術(shù)、基于以太網(wǎng)的發(fā)布訂閱通信技術(shù)及基于分布式的實(shí)時(shí)性能保障技術(shù)設(shè)計(jì)實(shí)現(xiàn)了基于發(fā)布訂閱機(jī)制的實(shí)時(shí)中間件。
整個(gè)中間件的設(shè)計(jì)采用分層的設(shè)計(jì)思想,其軟件體系結(jié)構(gòu)抽象為三層:模型層、通信層與支撐層,如圖1所示。模型層主要實(shí)現(xiàn)分布式對(duì)象的數(shù)據(jù)同步功能,通信層主要實(shí)現(xiàn)基于以太網(wǎng)的發(fā)布訂閱機(jī)制,支撐層主要實(shí)現(xiàn)基于分布式對(duì)象的實(shí)時(shí)性能保障機(jī)制。中間件的各功能模塊之間達(dá)到高內(nèi)聚低耦合,使得實(shí)時(shí)中間件的業(yè)務(wù)邏輯能夠更清晰的體現(xiàn)。
圖1 中間件軟件體系結(jié)構(gòu)圖
中間件模型層通過(guò)設(shè)置訂閱端代理對(duì)象與發(fā)布端伺服對(duì)象建立連接并維護(hù)兩者之間的會(huì)話關(guān)系[11],為分布式應(yīng)用系統(tǒng)中的狀態(tài)對(duì)象(SO)提供狀態(tài)同步調(diào)用功能。通過(guò)訂閱端代理對(duì)象與發(fā)布端伺服進(jìn)行狀態(tài)對(duì)象信息的傳遞,使對(duì)象之間相互協(xié)作,如圖2所示。模型層維護(hù)了本地代理對(duì)象與遠(yuǎn)端對(duì)象之間的會(huì)話關(guān)系,使得本地代理對(duì)象能夠通過(guò)回調(diào)機(jī)制,感知遠(yuǎn)端伺服對(duì)象連接、遠(yuǎn)端伺服對(duì)象狀態(tài)更新以及遠(yuǎn)端伺服對(duì)象撤銷。同時(shí),在模型層中還對(duì)需要傳輸?shù)臄?shù)據(jù)進(jìn)行序列化及反序列化處理,使得中間件底層通信不需要關(guān)心數(shù)據(jù)的格式,只需按照要求的傳輸方式完成傳輸即可。
圖2 模型層流程圖
具體實(shí)現(xiàn)為:首先通過(guò)發(fā)布端的對(duì)象維護(hù)的發(fā)布者組件將伺服對(duì)象執(zhí)行狀態(tài)更新命令后的狀態(tài)信息發(fā)送出去;然后訂閱端接收到狀態(tài)信息后,查看是否有對(duì)應(yīng)的代理工廠,如果沒(méi)有則由交互對(duì)象創(chuàng)建代理工廠,之后獲取指定的代理工廠對(duì)象,由代理工廠查看該對(duì)象的代理是否已經(jīng)創(chuàng)建,如果沒(méi)有則根據(jù)狀態(tài)所屬對(duì)象創(chuàng)建指定的代理對(duì)象并獲取。
中間件通信層為模型層提供基于主題的發(fā)布訂閱通信服務(wù),屏蔽底層傳輸細(xì)節(jié),實(shí)現(xiàn)發(fā)布訂閱通信機(jī)制,并提供QoS設(shè)置,保證狀態(tài)對(duì)象處理的實(shí)時(shí)性。通信層設(shè)計(jì)為通信組件模塊和傳輸組件模塊。通信組件模塊為中間件模型層提供了統(tǒng)一的通信接口,并完成了發(fā)布者組件和訂閱者組件[12],使發(fā)布端的發(fā)布者和訂閱端的訂閱者能夠建立連接,進(jìn)行通信。傳輸組件模塊提供了TCP傳輸組件和UDP傳輸組件,保障了數(shù)據(jù)流的可靠與盡力而為傳輸。
具體實(shí)現(xiàn)為首先要由主題信息匹配來(lái)確定通信雙方,其次要根據(jù)通信雙方所在節(jié)點(diǎn)的IP地址和端口信息來(lái)建立連接[13]。因此中間件通信層設(shè)計(jì)了主題通道服務(wù)器來(lái)為各個(gè)節(jié)點(diǎn)提供主題信息的分發(fā)服務(wù)[14],如圖3所示。主題是通信雙方建立連接的唯一標(biāo)識(shí),發(fā)布端和訂閱端在啟動(dòng)時(shí),都會(huì)向主題通道服務(wù)器公告帶有自身位置信息(IP和端口)的主題,之后由主題通道服務(wù)器分發(fā)至其他各個(gè)節(jié)點(diǎn),應(yīng)用程序在本地進(jìn)行主題匹配,選擇是否建立連接。
圖3 通信層流程圖
連接建立之后,可以進(jìn)行數(shù)據(jù)收發(fā)。發(fā)布者維護(hù)了與每一個(gè)訂閱者之間的連接,中間件通信層提供數(shù)據(jù)廣播通信機(jī)制,使發(fā)布者能夠?qū)顟B(tài)數(shù)據(jù)流廣播到與之連接的所有訂閱者。從而達(dá)到發(fā)布訂閱通信服務(wù)。
中間件支撐層主要為實(shí)時(shí)中間件的通信對(duì)象提供節(jié)點(diǎn)級(jí)和節(jié)點(diǎn)間的實(shí)時(shí)性能保障機(jī)制。目前流行的操作系統(tǒng)(Windows、Linux等)在任務(wù)調(diào)度、定時(shí)精度都缺乏實(shí)時(shí)性的保障,需要進(jìn)行實(shí)時(shí)性能擴(kuò)展和改進(jìn)[15]。中間件信息通信的實(shí)時(shí)性需要從運(yùn)行管理、調(diào)度與通信等方面進(jìn)行保障。
為了提供實(shí)時(shí)性通信機(jī)制,運(yùn)行支撐層采用RTX操作系統(tǒng)和RT-TCP/IP協(xié)議完成數(shù)據(jù)傳輸,既避免了系統(tǒng)其他任務(wù)對(duì)中間件任務(wù)的干擾,又保障了中間件數(shù)據(jù)傳遞的及時(shí)性與準(zhǔn)確性。
RTX操作系統(tǒng)實(shí)現(xiàn)整個(gè)實(shí)時(shí)性的關(guān)鍵點(diǎn)在于接管Windows的硬件抽象層(HAL),實(shí)現(xiàn)中斷管理,實(shí)現(xiàn)更快的定時(shí)器服務(wù),縮減中斷延遲等。
如圖4所示,采用RTX操作系統(tǒng)為中間件進(jìn)行支撐,可以使實(shí)時(shí)中間件的應(yīng)用程序調(diào)用專用的實(shí)時(shí)API[16],進(jìn)而利用RTX系統(tǒng)的任務(wù)管理和通信管理,實(shí)現(xiàn)實(shí)時(shí)中間件的通信對(duì)象節(jié)點(diǎn)級(jí)和節(jié)點(diǎn)間的實(shí)時(shí)性保障。
圖4 RTX操作系統(tǒng)對(duì)Windows系統(tǒng)的實(shí)時(shí)擴(kuò)展
支撐層采用RTX實(shí)時(shí)操作系統(tǒng),完成實(shí)時(shí)任務(wù)管理,從操作系統(tǒng)層面上克服非實(shí)時(shí)任務(wù)對(duì)中間件實(shí)時(shí)任務(wù)的干擾,斷絕內(nèi)外部中斷對(duì)中間件實(shí)時(shí)任務(wù)的影響,并提供高精度的、供實(shí)時(shí)任務(wù)線程使用的定時(shí)與同步機(jī)制。
利用構(gòu)建的實(shí)驗(yàn)仿真場(chǎng)景在不同網(wǎng)絡(luò)負(fù)載和CPU負(fù)載下與現(xiàn)存的TAO中間件進(jìn)行對(duì)比 ,說(shuō)明本文研究的中間件(RTM)的實(shí)時(shí)性。測(cè)試場(chǎng)景如圖5所示,構(gòu)建了基于發(fā)布訂閱實(shí)時(shí)中間件的應(yīng)用集群,模擬了虛擬實(shí)驗(yàn)中紅藍(lán)雙方相互獲取飛機(jī)位置信息的簡(jiǎn)單應(yīng)用場(chǎng)景。其中紅藍(lán)雙方雷達(dá)程序訂閱對(duì)方飛機(jī)應(yīng)用的信息,而主控節(jié)點(diǎn)負(fù)責(zé)實(shí)時(shí)獲取所有飛機(jī)信息并顯示,評(píng)估節(jié)點(diǎn)在實(shí)驗(yàn)結(jié)束后,完成對(duì)本次實(shí)驗(yàn)的評(píng)估工作。
圖5 測(cè)試場(chǎng)景部署圖
從實(shí)驗(yàn)場(chǎng)景的運(yùn)行結(jié)果中可以發(fā)現(xiàn),本文研究的RTM實(shí)時(shí)中間件提供了基于分布式對(duì)象的數(shù)據(jù)同步功能、基于以太網(wǎng)的發(fā)布訂閱通信機(jī)制和基于分布式對(duì)象的實(shí)時(shí)性能保障機(jī)制,取得了預(yù)期的效果。
另外,在上述環(huán)境中,采用乒乓法測(cè)試了TAO中間件和本文研究的RTM中間件在CPU負(fù)載和網(wǎng)絡(luò)負(fù)載情況下的更新延遲,測(cè)試結(jié)果如圖6、圖7所示。
圖6 不同CPU負(fù)載下的測(cè)試結(jié)果
圖7 空負(fù)載和網(wǎng)絡(luò)負(fù)載測(cè)試結(jié)果
在圖6中,當(dāng)CPU負(fù)載為0,數(shù)據(jù)包大小為2 048字節(jié)時(shí),本文提出的RTM中間件的延遲為820.81微秒,而此時(shí)TAO的傳輸延遲為1 395.49微秒,是RTM中間件的1.7倍。當(dāng)CPU負(fù)載變?yōu)?5%時(shí),TAO的傳輸延遲為1 998.63微秒,而RTM中間件的延遲依然為820.81微秒,說(shuō)明RTM中間件的延遲小,并且受CPU負(fù)載影響小。同樣,在圖7中,在數(shù)據(jù)包大小為2 048字節(jié),網(wǎng)絡(luò)負(fù)載由空變?yōu)橛胸?fù)載時(shí),TAO中間件的傳輸延遲由1 395.49微秒變?yōu)? 198.7微秒,而RTM中間件的延遲由820.81微秒變?yōu)?83.34微秒,變化范圍小,顯示出RTM中間件的穩(wěn)定性。
從圖6和圖7可以看出RTM實(shí)時(shí)中間件在相同情況下,都比TAO中間件的更新延遲小,并且在狀態(tài)對(duì)象在1 024字節(jié)以內(nèi)時(shí),不論當(dāng)前系統(tǒng)內(nèi)的CPU負(fù)載和網(wǎng)絡(luò)負(fù)載,中間件的更新延遲都在1毫秒以下,達(dá)到了預(yù)期的效果。
本文針對(duì)分布式應(yīng)用對(duì)通信的實(shí)時(shí)性需求,利用分布式對(duì)象技術(shù)和實(shí)時(shí)性能保障技術(shù),設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于發(fā)布訂閱機(jī)制的實(shí)時(shí)中間件,支持了服務(wù)質(zhì)量,確保了數(shù)據(jù)交互的實(shí)時(shí)性。然而,本文提出的中間件服務(wù)單一,功能不夠完備,在后續(xù)工作中需要進(jìn)一步完善。一方面需要逐步添加中間件的各類服務(wù),包括時(shí)間管理、域管理服務(wù)等,使中間件在支持實(shí)時(shí)發(fā)布訂閱機(jī)制的同時(shí),滿足應(yīng)用程序?qū)r(shí)間的要求,提供對(duì)中間件中消息和會(huì)話域的管理。另一方面需要對(duì)中間件的功能進(jìn)行擴(kuò)展,使中間件通信層支持其他實(shí)時(shí)網(wǎng)絡(luò)協(xié)議,為用戶提供更豐富的網(wǎng)絡(luò)環(huán)境選擇,更好地滿足分布式應(yīng)用的需求。
[1] 王旻珉.DRE系統(tǒng)中間件的研究與設(shè)計(jì)[D].上海:同濟(jì)大學(xué),2007.
[2] Belokosztolszki A, Eyers D M, Pietzuch P R, et al. Role-based access control for publish/subscribe middleware architectures[C]//Proceedings of the 2nd International Workshop on Distributed Event-Based Systems, DEBS 2003, Sunday, June 8th, 2003, San Diego, California, USA. 2003:1-8.
[3] 樊留群, 馬玉敏. 開(kāi)放式控制器的實(shí)時(shí)中間件[J]. 計(jì)算機(jī)工程, 2008, 34(3):272-273,282.
[4] 胡靜, 宋雪雁, 孫濟(jì)洲. 航行通告分發(fā)服務(wù)中間件的研究與設(shè)計(jì)[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2016,33(2):7-11,41.
[5] Park J, Joe I, Kim W T. An Efficient Discovery Protocol of Large-Scale CPS Middleware for Real-Time Control System[J]. Studies in Informatics & Control, 2014, 23(1):23-30.
[6] 朱華勇.分布式系統(tǒng)實(shí)時(shí)發(fā)布/訂閱數(shù)據(jù)分發(fā)技術(shù)[M].北京:國(guó)防工業(yè)出版社,2013.
[7] Antonic A, Roankovic K, Marjanovic M, et al. A Mobile Crowdsensing Ecosystem Enabled by a Cloud-Based Publish/Subscribe Middleware[C]//International Conference on Future Internet of Things and Cloud. IEEE, 2014:107-114.
[8] Loser K, Delic E, Schreiber M, et al. The benefits of middleware for safety-related systems-on-chip[C]//International Symposium on Fundamentals of Electrical Engineering. IEEE, 2015:1-5.
[9] Caporuscio M, Marco A D, Inverardi P. Run-time performance management of the Siena publish/subscribe middleware[C]//International Workshop on Software and PERFORMANCE. ACM, 2005:65-74.
[10] Ren H, Gao Y. A Study on the Distributed Real-time System Middleware Based on the DDS [M].Springer Berlin Heidelberg,2013:1-6.
[11] 冒佳明.基于DDS的分布式系統(tǒng)的性能評(píng)估模型研究與實(shí)現(xiàn)[D].南京:東南大學(xué),2015.
[12] 屈志堅(jiān), 林宏平. 基于發(fā)布訂閱的分布式監(jiān)控主動(dòng)消息交互研究[J]. 計(jì)算機(jī)測(cè)量與控制, 2015, 23(2):529-532.
[13] 鄒軒.移動(dòng)互聯(lián)網(wǎng)跨平臺(tái)應(yīng)用中間件的研究[D].上海:復(fù)旦大學(xué),2013.
[14] 胡文瀟.東航中間件移動(dòng)應(yīng)用平臺(tái)設(shè)計(jì)及安全性研究[D].上海:上海交通大學(xué),2013.
[15] 于潤(rùn)勝.發(fā)布訂閱網(wǎng)絡(luò)中的緩存機(jī)制研究[D].上海:上海交通大學(xué),2014.
[16] 杜旭東,蔣澤軍,王麗芳.基于資源重分配的Windows實(shí)時(shí)性改造[J].微電子學(xué)與計(jì)算機(jī),2012,29(5):95-98.