胡 靜 宋雪雁 孫濟(jì)洲
(天津大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 天津 300072)
?
航行通告分發(fā)服務(wù)中間件的研究與設(shè)計(jì)
胡靜宋雪雁孫濟(jì)洲
(天津大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院天津 300072)
摘要現(xiàn)有的航行通告處理系統(tǒng)采用C/S模式,客戶端和服務(wù)器間耦合度很高,且基于廣播的傳送方式造成客戶端大量冗余航行通告的產(chǎn)生。針對(duì)航行通告發(fā)生地明確、接收端可按需訂閱的特點(diǎn),結(jié)合數(shù)據(jù)分發(fā)服務(wù)DDS(Data Distribution Service)規(guī)范能夠使通信雙方在空間、時(shí)間和數(shù)據(jù)通信等方面實(shí)現(xiàn)松耦合的特征。提出基于DDS規(guī)范的發(fā)布訂閱模型,設(shè)計(jì)了一個(gè)支持服務(wù)質(zhì)量QoS(Quality of Service)的航行通告分發(fā)服務(wù)中間件,定義其中的數(shù)據(jù)結(jié)構(gòu)、工作流程以及全局?jǐn)?shù)據(jù)空間的管理策略。根據(jù)航行通告發(fā)布場(chǎng)景,使用CPN Tools工具進(jìn)行建模和仿真。案例仿真結(jié)果表明,該中間件能夠提供準(zhǔn)確的基于主題的航行通告分發(fā)服務(wù),從而證明了中間件設(shè)計(jì)方案的可行性和有效性。
關(guān)鍵詞航行通告分發(fā)服務(wù)中間件服務(wù)質(zhì)量著色Petri網(wǎng)
RESEARCH AND DESIGN OF NOTAM DISTRIBUTION SERVICE MIDDLEWARE
Hu JingSong XueyanSun Jizhou
(School of Computer Science and Technology,Tianjin University,Tianjin 300072,China)
AbstractExisting NOTAM processing system uses C/S model, the coupling degree between client and server is very high, and the broadcast-based transmission means makes a lot of redundant NOTAM generated at the client. In view of the features of NOTAM that their generation places are clear and the receiver can be subscribed on demand, and combining with the characteristics of data distribution service (DDS) specification that it enables two communicating parties to reach the loose coupling in space, time and data communications, in this paper we present a DDS specification-based publishing and subscribing model. We design a NOTAM distribution service middleware which supports the QoS policies, define the data structure and work flow of it, as well as the managerial strategy of global data space. According to NOTAM distribution scene, we use CPN Tools for modelling and simulation. Case simulation results show that the middleware can provide accurate subject-based NOTAM distribution services, so that proves the feasibility and validity of the design scheme of middleware.
KeywordsNotice to airmen (NOTAM)Distribution serviceMiddlewareQuality of serviceColoured Petri nets (CPN)
0引言
航行情報(bào)服務(wù)是空中交通管理的重要組成部分[1]。目前,我國(guó)正在使用的民航航行情報(bào)處理系統(tǒng)采用了基于客戶端/服務(wù)器C/S的通信模型,實(shí)現(xiàn)國(guó)內(nèi)外航行通告、雪情通告及其他電報(bào)的接收、處理和發(fā)布[2]。這種基于C/S模型的系統(tǒng),使得客戶端和服務(wù)器間的耦合程度很高,降低了系統(tǒng)的靈活性、擴(kuò)展性和健壯性。為了解決上述C/S模型的缺陷,本文在航行通告分發(fā)服務(wù)中引入了發(fā)布/訂閱模型[3],在發(fā)布/訂閱模型中,發(fā)布者和訂閱者通過(guò)主題關(guān)聯(lián),兩者不需同時(shí)在線,也不必知道對(duì)方的位置,從而實(shí)現(xiàn)了通信雙方時(shí)間、空間和數(shù)據(jù)通信的多維松耦合。
目前常用的發(fā)布/訂閱系統(tǒng)有:CORBA Notification Service[4],它以對(duì)象和服務(wù)為中心,采用了C/S通信模式,通信機(jī)制較為復(fù)雜,數(shù)據(jù)的收發(fā)需要建立連接的過(guò)程,不能完全滿足系統(tǒng)對(duì)實(shí)時(shí)性的需要;JMS[5],它是采用Java語(yǔ)言開發(fā)的,使用集中式體系結(jié)構(gòu)提供消息服務(wù),影響了系統(tǒng)的實(shí)時(shí)性,且JMS并沒(méi)有提出QoS約束,用戶不能指定相互間的通信方式,限制通信的靈活性和可靠性。由于上述系統(tǒng)缺乏對(duì)應(yīng)用層QoS(如:數(shù)據(jù)持久性、可靠性等)的支持,不能滿足航空航天、遠(yuǎn)程勘測(cè)等對(duì)于實(shí)時(shí)性和可靠性要求很高的應(yīng)用。因此,對(duì)象管理組織OMG頒布了數(shù)據(jù)分發(fā)服務(wù)DDS規(guī)范[6],定義了以數(shù)據(jù)為中心的發(fā)布/訂閱,并利用QoS策略描述資源狀況、網(wǎng)絡(luò)狀況等來(lái)控制數(shù)據(jù)分發(fā)的質(zhì)量,極大地增強(qiáng)了通信的實(shí)時(shí)性和可靠性[7]。基于該規(guī)范,馮國(guó)良[8]等人提出了一種集中式的DDS實(shí)時(shí)中間件,它通過(guò)中心服務(wù)器完成消息的匹配和轉(zhuǎn)發(fā),但中心服務(wù)器負(fù)擔(dān)較重,容易造成系統(tǒng)的通信瓶頸和單點(diǎn)故障。因此,本文在此基礎(chǔ)上,根據(jù)DDS規(guī)范設(shè)計(jì)了一種采取分布式體系結(jié)構(gòu)的基于主題的航行通告分發(fā)服務(wù)中間件,用以提高航行通告的交換效率,確保航行的正常、安全。并利用當(dāng)前流行的適用于軟件流程的理論分析方法—著色Petri網(wǎng),對(duì)本文所設(shè)計(jì)的航行通告的中間件進(jìn)行場(chǎng)景建模和分析,驗(yàn)證該設(shè)計(jì)方案的可行性、有效性。
1航行通告分發(fā)服務(wù)
1.1總體描述
航行通告是有關(guān)航行的設(shè)施、服務(wù)、程序等的設(shè)立、狀況、變化,以及涉及航行安全的危險(xiǎn)情況及其變化的通知[1]。其分發(fā)服務(wù)是航行情報(bào)服務(wù)的一個(gè)重要方面,是實(shí)施各類飛行的重要依據(jù)之一。常用的航行通告主要有一級(jí)航行通告、二級(jí)航行通告、雪情通告和火山通告,每一種航行通告都有其固定的格式。
本文在設(shè)計(jì)航行通告分發(fā)服務(wù)中間件時(shí),結(jié)合文獻(xiàn)[9]中介紹的航行通告中各項(xiàng)內(nèi)容的填寫規(guī)則,將其A)項(xiàng)內(nèi)容(記錄該航行通告的發(fā)生地)作為航行通告的主題,設(shè)計(jì)了一種基于主題的方式以實(shí)現(xiàn)航行通告的按需傳送。為了保證航行通告分發(fā)服務(wù)的質(zhì)量,我們選取了DDS規(guī)范QoS策略[7]中的Reliability和Durability,其中,Reliability為數(shù)據(jù)傳輸方面的QoS策略,描述了數(shù)據(jù)讀取器所申請(qǐng)的可靠性等級(jí)和發(fā)布者所能提供的可靠性等級(jí);Durability屬于數(shù)據(jù)有效性方面的QoS策略,用于控制當(dāng)前數(shù)據(jù)是否對(duì)后來(lái)加入網(wǎng)絡(luò)的訂閱者有效。結(jié)合DDS規(guī)范,該中間件的總體模型如圖1所示。
圖1 中間件的總體模型
該模型包括全局?jǐn)?shù)據(jù)空間(GDS)[10]、航行通告的發(fā)布者、訂閱者以及相應(yīng)的數(shù)據(jù)寫入器和數(shù)據(jù)讀取器。一個(gè)發(fā)布者可以根據(jù)航行通告主題及QoS策略的不同,創(chuàng)建多個(gè)數(shù)據(jù)寫入器,一個(gè)數(shù)據(jù)寫入器與一種主題及其提供的QoS策略對(duì)應(yīng)。類似的,一個(gè)訂閱者也可以根據(jù)實(shí)際需求創(chuàng)建多個(gè)數(shù)據(jù)寫入器,一個(gè)數(shù)據(jù)寫入器與一種主題及其要求的QoS策略對(duì)應(yīng),在航行通告的傳遞過(guò)程中,由GDS完成發(fā)布者與訂閱者、航行通告主題與QoS的匹配工作,控制相應(yīng)的數(shù)據(jù)寫入器寫入數(shù)據(jù),數(shù)據(jù)讀取器讀取數(shù)據(jù)。
1.2理論模型
根據(jù)中間件的總體模型,可以將航行通告的分發(fā)服務(wù)抽象為一個(gè)八元組,即Notam={P,S,DW,DR,GDS,T,M,QoS},其中,P表示發(fā)布者,S表示訂閱者,DW表示數(shù)據(jù)寫入器,DR表示數(shù)據(jù)讀取器,GDS表示各節(jié)點(diǎn)全局?jǐn)?shù)據(jù)空間的集合,T表示航行通告的主題,M表示航行通告的具體內(nèi)容,QoS表示分發(fā)服務(wù)中需要使用的QoS策略。各元組的定義如下:
P={P1,P2,…,Pn}表示航行通告的發(fā)布者,通常包括民航總局航行情報(bào)中心國(guó)際通告室和地區(qū)管理局情報(bào)中心航行通告室、本地空中交通管制中心航行情報(bào)室;
S={S1,S2,…,Sm}表示航行通告的訂閱者,通常包括民航總局航行情報(bào)中心,各地區(qū)空管局航行通告中心以及各空管中心(站)和部分航站;
DW={DW11,DW12,DWij,…,DWnj}表示數(shù)據(jù)寫入器的集合,其中,DWij表示由發(fā)布者Pi創(chuàng)建的第j個(gè)數(shù)據(jù)寫入器;
GDS={GDS1,GDS2,…,GDSn}表示系統(tǒng)中全局?jǐn)?shù)據(jù)空間的集合,每個(gè)系統(tǒng)參與者都擁有一個(gè)自己的GDS,為了保證系統(tǒng)的正確運(yùn)行,我們需要保證其中已發(fā)布數(shù)據(jù)記錄具有全局一致性;
DR={DR11,DR12,DRij,…,DRnj}表示數(shù)據(jù)讀取器的集合,其中,DRij表示由訂閱者Si創(chuàng)建的第j個(gè)數(shù)據(jù)讀取器;
T={T11,T12,Tij,…,Tnj}表示航行通告主題的集合,航行通告的主題為航行通告發(fā)布者所對(duì)應(yīng)的四字代碼[11],例如天津?yàn)I海機(jī)場(chǎng),即為ZBTJ。其中,Tij就表示由Ti所對(duì)應(yīng)機(jī)場(chǎng)發(fā)布的第j種QoS策略的航行通告主題;
M={M11,M12,Mij,…,Mnj}表示航行通告內(nèi)容的集合,其中,Mij就表示主題Tij所對(duì)應(yīng)航行通告的內(nèi)容;
QoS={Reliable,Best-effort,Volatile,Transient,Persistent}表示航行通告QoS策略的集合,這些值對(duì)應(yīng)DDS規(guī)范QoS策略中的Reliability和Durability。
2航行通告分發(fā)服務(wù)中間件的設(shè)計(jì)
通過(guò)第1節(jié)的分析可知,中間件在工作時(shí)所需要的主題管理及匹配,通知發(fā)布者、訂閱者進(jìn)行航行通告的傳送都是由GDS完成的,因此它是中間件設(shè)計(jì)的核心。本節(jié)首先給出中間件的體系結(jié)構(gòu),然后針對(duì)GDS中的數(shù)據(jù)結(jié)構(gòu)、分發(fā)服務(wù)處理流程及其GDS管理策略的設(shè)計(jì)進(jìn)行詳細(xì)敘述。
2.1體系結(jié)構(gòu)
本文設(shè)計(jì)的航行通告分發(fā)服務(wù)中間件,其底層通信建立在ACE(Adaptive Communication Environment)[12]之上,ACE是可自由使用、開放源碼的面向?qū)ο罂蚣?,提供了一組豐富的可重用C++包裝外觀和框架組件,可跨多種平臺(tái)完成通用的通信軟件任務(wù)。其體系結(jié)構(gòu)如圖2所示。
圖2 中間件的體系結(jié)構(gòu)
圖2中每個(gè)應(yīng)用系統(tǒng)對(duì)應(yīng)一個(gè)DDS應(yīng)用端(發(fā)布者/訂閱者),中間件之間的信息傳輸依賴于ACE提供的通信連接,消息在網(wǎng)絡(luò)傳輸中使用TCP/IP協(xié)議,位于網(wǎng)絡(luò)中的發(fā)布者和訂閱者通過(guò)中間件的GDS完成主題和QoS的匹配,并通過(guò)信息流交換發(fā)布、訂閱、控制信息等。當(dāng)訂閱關(guān)系建立后,通過(guò)數(shù)據(jù)流完成航行通告數(shù)據(jù)的傳輸,實(shí)現(xiàn)了信息流和控制流的分離,保證了發(fā)布者和訂閱者的異步實(shí)時(shí)通信。
2.2數(shù)據(jù)結(jié)構(gòu)
為了保證航行通告分發(fā)服務(wù)的質(zhì)量,需要在GDS中設(shè)計(jì)相關(guān)數(shù)據(jù)結(jié)構(gòu),記錄節(jié)點(diǎn)的發(fā)布訂閱信息、失敗信息等。主要包括全局一致的發(fā)布主題記錄表、訂閱登記表、發(fā)布數(shù)據(jù)緩沖區(qū)、失敗節(jié)點(diǎn)記錄表四個(gè)部分。
(1) 發(fā)布主題記錄表(Pub_Topic_Table)
Pub_Topic_Table是系統(tǒng)中所有已發(fā)布主題的記錄表,由于系統(tǒng)中各個(gè)節(jié)點(diǎn)各自擁有一份發(fā)布主題表,因此它需要實(shí)時(shí)更新以保證其全局一致性。其具體內(nèi)容如表1所示。
表1 發(fā)布主題表的數(shù)據(jù)結(jié)構(gòu)
其中,Topic表示航行通告的主題,其格式即為ICAO規(guī)定的情報(bào)區(qū)和機(jī)場(chǎng)的四字代碼[12];Reliability為傳輸方式的可靠性,Best-effort表示盡力而為的傳輸方式,Reliable表示可靠的傳輸方式;Durability為數(shù)據(jù)的持久性,Volatile表示非持久性數(shù)據(jù),即數(shù)據(jù)寫入器的內(nèi)容不在數(shù)據(jù)緩沖區(qū)中保存,Persistent表示永久保存數(shù)據(jù),其內(nèi)容將被保存在數(shù)據(jù)緩沖區(qū)中。
(2) 訂閱主題表(Sub_Table)
Sub_Table記錄了位于民航網(wǎng)絡(luò)中的訂閱本地節(jié)點(diǎn)的所有節(jié)點(diǎn)信息,其具體內(nèi)容如表2所示。
表2 訂閱主題表的數(shù)據(jù)結(jié)構(gòu)
其中,Reliability為訂閱端要求的傳輸可靠性;Priority為訂閱事件的優(yōu)先級(jí),其數(shù)值越小優(yōu)先級(jí)越高。發(fā)布端在發(fā)布航行通告時(shí),通過(guò)查閱訂閱登記表,選取符合條件的節(jié)點(diǎn),進(jìn)行航行通告的傳送。
(3) 發(fā)布數(shù)據(jù)緩沖區(qū)(Data_Pool)
Data_Pool保存了本地節(jié)點(diǎn)發(fā)布的且Durability屬性為Persistent的航行通告數(shù)據(jù),其組織結(jié)構(gòu)如圖3所示。
其中,每一項(xiàng)Data_Pool[n]記錄了同一主題已經(jīng)發(fā)布的數(shù)據(jù)。Topic表示航行通告的主題;length記錄了該主題已發(fā)布信息的數(shù)目;Reliability表示該主題下傳輸可靠性的QoS;data_ptr是一個(gè)指向航行通告數(shù)據(jù)的指針。位于Data_Pool中的航行通告由兩部分組成,T_id為航行通告的編號(hào),Notam表示航行通告的內(nèi)容,它們是完成航行通告重傳功能的消息來(lái)源。
(4) 失敗節(jié)點(diǎn)記錄表(Fail_Node_Table)
Fail_Node_Table記錄本地節(jié)點(diǎn)向其他訂閱節(jié)點(diǎn)發(fā)布航行通告失敗的節(jié)點(diǎn)信息,其具體內(nèi)容如表3所示。
表3 失敗節(jié)點(diǎn)記錄表的數(shù)據(jù)結(jié)構(gòu)
當(dāng)航行通告未能成功送達(dá)其訂閱端時(shí),該條航行通告的主要信息及訂閱失敗方的IP地址將會(huì)被記錄到Fail_Node_Table,網(wǎng)絡(luò)中的節(jié)點(diǎn)各自維護(hù)本地的Fail_Node_Table。通過(guò)該記錄可以確定訂閱失敗航行通告重傳時(shí)的對(duì)象。
2.3分發(fā)服務(wù)處理流程
本文所設(shè)計(jì)的中間件由發(fā)布端、訂閱端、數(shù)據(jù)寫入器、數(shù)據(jù)讀取器和GDS組成以完成航行通告的分發(fā)服務(wù)。下面將分別闡述航行通告的發(fā)布過(guò)程、訂閱過(guò)程和傳輸過(guò)程,其總體工作流程如圖4所示。
圖4 航行通告分發(fā)服務(wù)中間件的工作流程
(1) 發(fā)布過(guò)程
當(dāng)發(fā)布端有航行通告需要發(fā)布時(shí),首先,由發(fā)布端創(chuàng)建發(fā)布者Pi,然后,Pi根據(jù)航行通告的主題Ti及提供的QoS策略創(chuàng)建數(shù)據(jù)寫入器DWij,通知網(wǎng)絡(luò)中的其他各個(gè)節(jié)點(diǎn)更新其GDS中的Pub_Topic_Table,在其中添加一條記錄(Ti, Ti_Id, Pi_IP, Reliability, Durability),以保證民航網(wǎng)絡(luò)中所有節(jié)點(diǎn)的發(fā)布主題表是全局一致的。之后DWij處于阻塞狀態(tài),等待被激活。
(2) 訂閱過(guò)程
當(dāng)訂閱端需要訂閱主題為Ti的航行通告時(shí),首先,由訂閱端創(chuàng)建訂閱者Sj,然后,Sj根據(jù)訂閱主題及所需的QoS策略創(chuàng)建數(shù)據(jù)讀取器DRjm,DRjm查詢本地Pub_Topic_Table中是否有符合要求的發(fā)布者,若存在,則將訂閱主題Ti及申請(qǐng)的QoS作為訂閱請(qǐng)求,發(fā)送給對(duì)應(yīng)發(fā)布端的GDS,之后DRjm處于阻塞狀態(tài),等待被激活;
發(fā)布端在接收到訂閱請(qǐng)求后,在Sub_Table中添加一條記錄(Ti,Sj_IP,Reliability,Priority),然后查看Pub_Topic_Table中Ti的Durability值,若Durability = Volatile,則表明該航行通告為非持久性數(shù)據(jù),沒(méi)有記錄保存在Data_Pool中;若Durability = Persistent,則表明該航行通告為持久性數(shù)據(jù),保存在Data_Pool中,發(fā)布端在Data_Pool中查找Sj所需的數(shù)據(jù),并進(jìn)行QoS策略的匹配,若匹配成功,則激活DWij,將Data_Pool中相應(yīng)數(shù)據(jù)按照QoS策略向Sj發(fā)送數(shù)據(jù)。
(3) 傳輸過(guò)程
發(fā)布航行通告:當(dāng)發(fā)布端(Pi)有航行通告主題(Ti)需要發(fā)布時(shí),Pi首先激活與Ti對(duì)應(yīng)的數(shù)據(jù)寫入器DWi,然后判斷Durability屬性的值,若其值為Volatile,則將數(shù)據(jù)傳輸后丟棄;若其值為Persistent,則將該航行通告寫入Data_Pool的對(duì)應(yīng)主題中,并更新對(duì)應(yīng)Data_Pool的length。
傳輸航行通告:Pi在本地的Pub_Topic_Table中查找是否有符合要求的訂閱者Sj,若存在集合S={Sj1,Sj2,…,Sjn}滿足條件,則Pi與集合S中的所有訂閱者建立發(fā)布訂閱關(guān)系,并激活對(duì)應(yīng)的數(shù)據(jù)讀取器集合DR={DRj1,DRj2,…,DRjn}。DWi根據(jù)Ti中指定的QoS策略向數(shù)據(jù)讀取器集合DR發(fā)送航行通告,完成后DWi進(jìn)入阻塞狀態(tài)等待被激活,若數(shù)據(jù)寫入器DRjm激活失敗,則失敗消息會(huì)返回至發(fā)布端Pi的GDS,并在Fail_Node_Tab-le中添加一條訂閱失敗記錄(Topici,Ti_Id, Sj_IP)。訂閱端DRj接收到航行通告后,將其交由上層的應(yīng)用系統(tǒng)處理,隨后DRj進(jìn)入阻塞狀態(tài),等待下一次被激活。
2.4GDS管理策略
GDS是中間件實(shí)現(xiàn)基于主題的航行通告分發(fā)服務(wù)的關(guān)鍵,為了保證網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn)擁有全局一致的發(fā)布主題記錄表,并且能夠及時(shí)、有效地維護(hù)和更新訂閱登記表,本文提出以下6條GDS管理策略,其過(guò)程如圖5所示。
圖5 GDS管理策略
(1) 當(dāng)節(jié)點(diǎn)(圖中Node1)發(fā)布一個(gè)主題時(shí),需要將該主題廣播到網(wǎng)絡(luò)中的所有的節(jié)點(diǎn)。各個(gè)節(jié)點(diǎn)在接收到該主題廣播后,在本地GDS的Pub_Topic_Table中添加相應(yīng)的主題信息,從而保證網(wǎng)絡(luò)中各節(jié)點(diǎn)的Pub_Topic_Table是一致的。
(2) 當(dāng)節(jié)點(diǎn)(圖中Node2)產(chǎn)生訂閱需求時(shí),首先查找本地Pub_Topic_Table中是否有滿足要求的發(fā)布者,若存在,則向相應(yīng)的發(fā)布節(jié)點(diǎn)(圖中Node1)發(fā)送訂閱請(qǐng)求,Node1接收到訂閱請(qǐng)求后,將相關(guān)訂閱信息存入Sub_Table中,并查看Data_Pool中是否有相關(guān)信息,若存在,則向Node2傳送航行通告。若Node2未能成功接收到該航行通告,則將Node2的訂閱記錄添加到Node1的Fail_Node_Table中。
(3) 當(dāng)節(jié)點(diǎn)(圖中Node3)退訂航行通告時(shí),需要發(fā)送退訂消息通知相應(yīng)的發(fā)布端(圖中Node1)修改其Sub_Table,以避免訂閱端再次收到該發(fā)布端發(fā)布的航行通告。當(dāng)Node1收到退訂消息后,首先將Node3的訂閱記錄從Sub_Table中刪除,然后,檢查本地Fail_Node_Table,若存在訂閱者的記錄,則將其刪除。
(4) 當(dāng)有新節(jié)點(diǎn)(圖中Node4)加入時(shí),新節(jié)點(diǎn)向鄰近節(jié)點(diǎn)(圖中Node3)發(fā)送加入請(qǐng)求消息。Node3在接收到加入請(qǐng)求時(shí),需將本地節(jié)點(diǎn)GDS中的Pub_Topic_Table發(fā)送給Node3,從而使Node3擁有當(dāng)前網(wǎng)絡(luò)中的所有發(fā)布主題信息。
(5) 為了保證未收到航行通告的節(jié)點(diǎn)在恢復(fù)正常后,能再次收到其訂閱的有效的航行通告。我們規(guī)定,每個(gè)節(jié)點(diǎn)在開機(jī)后,向所有節(jié)點(diǎn)廣播開機(jī)信息。當(dāng)本地節(jié)點(diǎn)收到其他節(jié)點(diǎn)的開機(jī)信息后,檢查本地GDS中的Fail_Node_Table,若存在節(jié)點(diǎn)的失敗記錄,則向該節(jié)點(diǎn)重新發(fā)送未成功送達(dá)的航行通告,并在航行通告成功到達(dá)后,將該記錄從Fail_Node_Table中刪除。
(6) 為了保證網(wǎng)絡(luò)中各節(jié)點(diǎn)是有效的,我們規(guī)定位于網(wǎng)絡(luò)中的節(jié)點(diǎn)需要定期向其訂閱節(jié)點(diǎn)發(fā)送心跳信息。若一段時(shí)間內(nèi)收不到某個(gè)節(jié)點(diǎn)的回應(yīng),則認(rèn)為該節(jié)點(diǎn)已經(jīng)失效,刪除本地GDS中的Sub_Table及Fail_Node_Table(若存在)中對(duì)應(yīng)的記錄。
3案例分析
著色Petri網(wǎng)CPN(Colored Petri Net)[13]是丹麥的 Jensen Kurt于1981年在 Petri 網(wǎng)[14]的基礎(chǔ)上定義的一種高級(jí)Petri網(wǎng)系統(tǒng),通過(guò)對(duì)庫(kù)所和標(biāo)識(shí)加以顏色區(qū)別,代表系統(tǒng)中不同的資源;通過(guò)將庫(kù)所與特定的顏色集綁定,使得每個(gè)庫(kù)所只能存放相應(yīng)顏色的標(biāo)識(shí)。它是一種特別適合用來(lái)描述和分析在異步并發(fā)系統(tǒng)中的數(shù)據(jù)流與控制流的模型。相比于其他建模方法,它具有形式化的語(yǔ)義、狀態(tài)和動(dòng)作的顯示表示以及豐富的分析技術(shù)等特點(diǎn),對(duì)于從理論上驗(yàn)證軟件工作原理十分有效[15]。本節(jié)針對(duì)2.3節(jié)設(shè)計(jì)的中間件工作流程,設(shè)計(jì)航行通告的發(fā)布場(chǎng)景,并使用CPN的仿真工具—CPN Tools[16]進(jìn)行案例的建模和分析。
3.1場(chǎng)景設(shè)計(jì)
天津?yàn)I海機(jī)場(chǎng)(ZBTJ)需要發(fā)布一條航行通告(航行通告的內(nèi)容用“notam”代替),該航行通告的編號(hào)為201411,Reliability屬性值為“Best-effort”,Durability屬性值為“Persistent”。ZBTJ的訂閱登記表中有三條記錄,分別是上海浦東機(jī)場(chǎng)(IP:222.73.250.26)、北京首都機(jī)場(chǎng)(IP: 210.75.250.212)和??诿捞m機(jī)場(chǎng)(IP:202.100.200.203),它們的Reliability屬性值均為“Best-effort”,且Priority值均為2。航行通告的傳送過(guò)程中,??诿捞m機(jī)場(chǎng)由于網(wǎng)絡(luò)故障,未能成功接收航行通告,而上海浦東機(jī)場(chǎng)、北京首都機(jī)場(chǎng)均成功接收航行通告。
3.2CPN模型建立
(1) 根據(jù)第3節(jié)中設(shè)計(jì)的支持中間件工作所需的數(shù)據(jù)結(jié)構(gòu)、處理流程所需的函數(shù)及CPN Tools中 CPM ML語(yǔ)言的語(yǔ)法規(guī)則,定義模型的顏色集、變量、弧表達(dá)式,建立航行通告發(fā)布的CPN模型,并使用3.1節(jié)設(shè)計(jì)的場(chǎng)景進(jìn)行初始化,其結(jié)果如圖6所示。
圖6 航行通告發(fā)布場(chǎng)景CPN模型
如圖6,發(fā)布端(圖中庫(kù)所P1)具有一條待發(fā)布航行通告1`(″ZBTJ″,201411,″60.30.94.1″,″notam″,″Best-effort″,″Persiste-nt″),通過(guò)變遷create創(chuàng)建數(shù)據(jù)寫入器(圖中庫(kù)所DW1),航行通告的主題信息(topic,t_id,ip,notam,rel,dur)通過(guò)變遷write寫入發(fā)布主題表(圖中庫(kù)所PT),同時(shí),通過(guò)弧函數(shù)writeCheck()判斷本條航行通告是否需要寫入數(shù)據(jù)緩沖區(qū),由于航行通告的Durability屬性值為“Persistent”,因此航行通告相關(guān)內(nèi)容被寫入數(shù)據(jù)緩沖區(qū)(圖中庫(kù)所Data)。此時(shí),發(fā)布端的訂閱登記表中有三條記錄,分別代表浦東、首都、美蘭機(jī)場(chǎng)的訂閱信息(圖中庫(kù)所SR_1、SR_2、SR_3),這三條記錄的初始匹配值(圖中庫(kù)所rs1、rs2、rs3)都為空,當(dāng)PT中有新的內(nèi)容時(shí),變遷match被觸發(fā),通過(guò)弧表達(dá)式matchCheck()檢查訂閱主題表(SR_1、SR_2、SR_3)中Reliability屬性是否與發(fā)布主題一致,根據(jù)場(chǎng)景設(shè)計(jì),其Reliability屬性值與發(fā)布內(nèi)容相同,都為“Best-effort”,此時(shí),rs1、rs2、rs3的值變?yōu)椤皁k”,變遷copy被觸發(fā),弧函數(shù)send()被調(diào)用,通過(guò)檢查可知,訂閱登記表中記錄均滿足發(fā)布條件,因此,相應(yīng)的數(shù)據(jù)寫入器(圖中庫(kù)所 S1、S2、S3)被激活。其中,圖中庫(kù)所rp1、rp2、rp3為數(shù)據(jù)寫入器的激活結(jié)果,其內(nèi)容應(yīng)為網(wǎng)絡(luò)反饋的結(jié)果,為了簡(jiǎn)化模型,我們直接根據(jù)場(chǎng)景的設(shè)計(jì),將其賦值為(“ok”,“ok”,“no”),這里“ok”表示數(shù)據(jù)寫入器激活成功,“no”表示數(shù)據(jù)寫入器激活失敗。根據(jù)上文流程的設(shè)計(jì),通過(guò)弧函數(shù)decide()的判斷,被成功激活的數(shù)據(jù)寫入器(圖中庫(kù)所DR1、DR2)將通過(guò)變遷receive將航行通告?zhèn)鬟f到應(yīng)用層(圖示庫(kù)所S1、S2),而未能成功送達(dá)的航行通告,圖中庫(kù)所DR3將收不到消息,同時(shí),其相關(guān)信息將被寫入發(fā)布端的訂閱失敗列表(圖中庫(kù)所Fail)。
3.3結(jié)果分析
(1) 仿真結(jié)果
首先,使用CPN Tools提供的符號(hào)檢查功能對(duì)模型進(jìn)行檢驗(yàn),證明該模型沒(méi)有語(yǔ)法錯(cuò)誤,接著,利用CPN Tools中的仿真工具(Simulation)進(jìn)行模擬執(zhí)行,其結(jié)果如圖7所示。
圖7 CPN模型模擬執(zhí)行結(jié)果
圖8 State Space部分分析報(bào)告
從圖中可知代表Data_Pool的庫(kù)所Data中添加了發(fā)布信息1`(201411,″notam″,″Best-effort″),代表Pub_Topic_Table的庫(kù)所PT中添加了發(fā)布主題1`(″ZBTJ″,201411,″notam″,″Best-effort″,″P-ersistent″);代表Sub_Table的庫(kù)所SR_1、SR_2、SR_3中保留原有的訂閱信息;代表Fail_Node_Table的庫(kù)所Fail中添加了??诿捞m機(jī)場(chǎng)的訂閱失敗信息1`(″ZBTJ″,201411,″202.100.200.203-″)。代表上海浦東、北京首都機(jī)場(chǎng)應(yīng)用層的庫(kù)所S1、S2均接收到了發(fā)布的航行通告信息1`(201411,″notam″)。而代表??诿捞m機(jī)場(chǎng)數(shù)據(jù)讀取器的庫(kù)所DR3,因?yàn)榧せ钍?,而未收到任何信息。上述結(jié)果完全符合預(yù)期。通過(guò)模擬結(jié)果我們認(rèn)為中間件工作流程的設(shè)計(jì)能夠滿足我們對(duì)航行通告分發(fā)服務(wù)的要求,可以實(shí)現(xiàn)航行通告的按主題及QoS的訂按需制推送。
(2) CPN Tools 分析報(bào)告
通過(guò)使用CPN Tools提供的State Space工具可以對(duì)模型的狀態(tài)空間進(jìn)行分析,得到分析報(bào)告。其部分分析報(bào)告見(jiàn)圖8所示。
其中,Home Properties記錄模型的源屬性,源標(biāo)識(shí)是指可以從任何可達(dá)標(biāo)識(shí)到達(dá)的標(biāo)識(shí)[15],圖中顯示模型中存在源標(biāo)識(shí)7,該標(biāo)識(shí)即為場(chǎng)景中給出的初始條件,待發(fā)布的航行通告:1`(″ZBTJ″,201411,″60.30.94.1″,″notam″,″Best-effort″,″Persistent″);Liveness Properties記錄模型的活性,其中,死標(biāo)識(shí)是指不具有使能變遷的標(biāo)識(shí),圖中顯示模型中存在死標(biāo)識(shí)7,即為上述初始條件;圖中既不存在死鎖變遷,也不存在活變遷,說(shuō)明模型具有活性,即任何變遷的執(zhí)行都是由一定條件觸發(fā)的,處于中間件的控制范圍內(nèi);Fairness Properties表明模型的公平性,該模型中并不存在可無(wú)限實(shí)施的變遷,即任何變遷在實(shí)施之前,其他的變遷只能執(zhí)行有限多次。在分析報(bào)告中還有模型的有界屬性,它表示模型所有可達(dá)標(biāo)識(shí)中,每個(gè)庫(kù)所所能擁有的標(biāo)識(shí)數(shù)的上下界,其中各標(biāo)識(shí)的個(gè)數(shù)都是有限的,說(shuō)明該模型具有有界性。
CPN模型仿真執(zhí)行的結(jié)果與場(chǎng)景中設(shè)計(jì)的預(yù)期結(jié)果一致,通過(guò)其狀態(tài)空間分析報(bào)告的分析,可知該模型具有有界性、活性、公平性,中間件的控制過(guò)程符合預(yù)期。綜上,我們認(rèn)為該中間件能夠準(zhǔn)確地提供基于主題的航行通告分發(fā)服務(wù),其設(shè)計(jì)方案是可行的、有效的。
4結(jié)語(yǔ)
由于現(xiàn)有航行通告系統(tǒng)采用C/S結(jié)構(gòu),使得系統(tǒng)中服務(wù)器壓力過(guò)大,模塊耦合度很高,不能對(duì)實(shí)時(shí)傳輸提供良好的支持。本文結(jié)合DDS規(guī)范具有時(shí)間、空間松耦合,且提供極強(qiáng)的實(shí)時(shí)性和靈活性保證的特點(diǎn),提出了航行通告分發(fā)服務(wù)的理論模型,設(shè)計(jì)航行通告發(fā)布訂閱中間件所需的數(shù)據(jù)結(jié)構(gòu),發(fā)布訂閱處理流程以及GDS的管理方法,并提供數(shù)據(jù)持久性、傳輸方式、數(shù)據(jù)優(yōu)先級(jí)的QoS策略,以保證分發(fā)服務(wù)的實(shí)時(shí)性和可靠性。通過(guò)航行通告發(fā)布場(chǎng)景,使用CPN Tools工具進(jìn)行建模和分析,證明該中間件能夠?qū)崿F(xiàn)節(jié)點(diǎn)間準(zhǔn)確的基于主題的分發(fā)服務(wù),從而驗(yàn)證了該方案的可行性和有效性。今后,將更深入研究DDS規(guī)范,完善與航行通告分發(fā)服務(wù)相關(guān)的QoS策略,并通過(guò)代碼實(shí)現(xiàn)中間件的具體功能,提高其應(yīng)用價(jià)值。
參考文獻(xiàn)
[1] 中國(guó)民用航空局.民用航空情報(bào)工作規(guī)則[S].2010.
[2] 王楠.淺析東北地區(qū)航行情報(bào)動(dòng)態(tài)信息處理系統(tǒng)的運(yùn)行模式[J].黑龍江科技信息,2012(16):18-18.
[3] Ozansoy C R,Zayegh A,Kalam A.The real-time publisher/subscriber communication model for distributed substation systems[J].Power Delivery,IEEE Transactions on,2007,22(3):1411-1423.
[4] Object Management Group.High-performance CORBA Specification[R].Object Management Group,Version1.2,Jan.2005.
[5] Juneau J.Java Message Service[M]//Introducing Java EE 7.Apress,2013:147-161.
[6] Object Management Group.Data Distribution Service for Real-time System Specification[R].2004.
[7] Li C Q,Zhou C,Zhu S B.Design of QoS Protocol Matching Method in the DDS Specification[C]//Applied Mechanics and Materials,2014,577:898-902.
[8] 馮國(guó)良,谷青范.基于DDS的實(shí)時(shí)中間件的研究與設(shè)計(jì)[J].航空電子技術(shù),2011,42(3):41-47.
[9] 王果.數(shù)字化航行通告關(guān)鍵技術(shù)研究[D].天津:中國(guó)民航大學(xué),2012.
[10] Pardo-Castellote G.Omg data-distribution service:Architectural overview[C]//Distributed Computing Systems Workshops,2003.Proceedings.23rd International Conference on.IEEE,2003:200-206.
[11] 王潔寧,王果.基于DDS規(guī)范的航行情報(bào)分發(fā)服務(wù)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012,22(11):212-215.
[12] 朱建文.ACE+TAO架構(gòu)在網(wǎng)絡(luò)管理的應(yīng)用[D].北京:北京郵電大學(xué),2008.
[13] Zimmermann A.Colored Petri Nets[J].Stochastic Discrete Event Systems:Modeling,Evaluation,Applications,2008:99-124.
[14] Wu Zhehui.Petri net Introduction[M].Beijing:Mechanical Industry Press,2006:1-23.
[15] 方歡,陸陽(yáng),黃鎮(zhèn)謹(jǐn),等.基于CPN仿真的排隊(duì)系統(tǒng)建模及性能分析[J].系統(tǒng)仿真學(xué)報(bào),2013,25(2):228-234.
[16] Westergaard M.CPN tools 4:multi-formalism and extensibility[M] //Application and Theory of Petri Nets and Concurrency.Springer Berlin Heidelberg,2013:400-409.
中圖分類號(hào)TP311
文獻(xiàn)標(biāo)識(shí)碼A
DOI:10.3969/j.issn.1000-386x.2016.02.002
收稿日期:2014-06-30。國(guó)家自然科學(xué)基金項(xiàng)目(61039001);天津市科技支撐計(jì)劃重點(diǎn)項(xiàng)目(11ZCKFGX04200)。胡靜,碩士生,主研領(lǐng)域:Petri網(wǎng),CPN建模,民航數(shù)據(jù)分發(fā)技術(shù)等。宋雪雁,副教授。孫濟(jì)洲,教授。