国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

實時數(shù)據(jù)分發(fā)系統(tǒng)軟件的設計與實現(xiàn)

2011-05-17 09:09:10楊傳順錢幸存
關鍵詞:發(fā)布者數(shù)據(jù)類型中間件

楊傳順,錢幸存

(中國船舶重工集團公司 江蘇自動化研究所,江蘇 連云港 222006)

實時數(shù)據(jù)分發(fā)系統(tǒng)指采用數(shù)據(jù)分發(fā)服務DDS(Data Distribution Service)中間件的實時分布式系統(tǒng)。OMG的數(shù)據(jù)分發(fā)服務正逐漸成為采用實時發(fā)布-訂閱RTPS(Real Time Publish-Subscribe)協(xié)議的分布式系統(tǒng)的標準,此標準的目的是提供一種通用的應用層接口,能夠清楚地定義數(shù)據(jù)分發(fā)的服務,提供一種在實時分布式計算環(huán)境中以數(shù)據(jù)為中心的通信規(guī)范,定義一個可擴展、與平臺無關、與位置無關的基礎服務模型,以連接發(fā)布者和訂閱者,支持服務質量(QoS)和屬性。該通信模型在空間上(節(jié)點可以在網(wǎng)絡中的任何地方)、時間上(發(fā)布后立即或稍微有些延遲后傳輸)、傳輸上(可根據(jù)帶寬流量控制可靠性,每個用戶可以管理自己數(shù)據(jù)傳輸?shù)臓顟B(tài))、功能上(多源的數(shù)據(jù)可以很容易地添加和刪除)都是松散耦合的。

1 數(shù)據(jù)分發(fā)服務

OMG的數(shù)據(jù)分發(fā)服務(DDS)的核心是以數(shù)據(jù)為中心的發(fā)布-訂閱 DCPS(Data-Centric Publish-Subscribe),即發(fā)布者能高效地將正確的信息傳遞給適當?shù)挠嗛喺?。DCPS定義了在實時分布式系統(tǒng)中運行在異構平臺上的標準接口的應用程序能從系統(tǒng)的全局數(shù)據(jù)空間讀/寫數(shù)據(jù)。具有以下特點:

(1)強制類型的全局數(shù)據(jù)空間

DDS創(chuàng)建一個全局性的數(shù)據(jù)空間,任何參與者使用數(shù)據(jù)類型接口高效自然地讀/寫數(shù)據(jù),讓每個訂閱者都可以訪問到“最新”的數(shù)據(jù)。它還建立了一個名稱空間,讓參與者查找和共享數(shù)據(jù)的對象。為了提高可擴展性,主題(Topic)可以包含多個獨立的數(shù)據(jù)通道稱為“關鍵字”(key)。這使得節(jié)點可以一次性訂閱到很多,可能是數(shù)以千計的相似的數(shù)據(jù)流。當數(shù)據(jù)到達時,中間件根據(jù)關鍵字排序,提供有效的處理。

(2)每個數(shù)據(jù)流可控的服務質量

DDS允許控制“每個數(shù)據(jù)流”的服務質量(QoS)。每對發(fā)布者——訂閱者之間可以建立獨立的QoS協(xié)議。DDS也具有獨特的允許應用設計支持極其復雜的、靈活的數(shù)據(jù)流需求。QoS參數(shù)幾乎能控制DDS模型和基本的通信機制的每個方面。

(3)自動發(fā)現(xiàn)和管理數(shù)據(jù)流

DDS能設計成自動發(fā)現(xiàn)發(fā)布者和訂閱者的每一個主題,根據(jù)它們之間設置的QoS參數(shù)自動建立數(shù)據(jù)流。DDS模型提供了快速透明的定位。這使得它非常適合用于系統(tǒng)動態(tài)配置的變化。它能迅速發(fā)現(xiàn)新的節(jié)點,新的節(jié)點上的新的參與者,新參與者的新的數(shù)據(jù)主題。能及時地清除掉過時的、失敗的節(jié)點和數(shù)據(jù)流。

(4)不可靠的無連接傳輸

DDS以不可靠的傳輸方式工作,如UDP或無線網(wǎng)絡。沒有任何設備需要中央服務器或特殊節(jié)點。高效、直接、點對點的通信、甚至多播,可以實現(xiàn)模型的每一個功能。

2 DDS的對象模型

圖1顯示了典型的DDS分布式應用的關鍵對象,域(Domain)、域成員(DomainParticipant)、數(shù)據(jù)發(fā)送器(Data writer)和發(fā)布者(publisher)、訂閱者(Subscriber)和數(shù)據(jù)接收器(Data reader)、主題(Topic)組成。域成員對象指的是域內參與應用的成員,參與者可以在同一個域上進行通信。

圖1 DDS的對象模型

發(fā)布者負責數(shù)據(jù)的發(fā)布,可以發(fā)布不同類型的數(shù)據(jù)。域成員通過發(fā)布者的數(shù)據(jù)發(fā)送器交流數(shù)據(jù)和改變數(shù)據(jù)類型。一旦新的數(shù)據(jù)值傳達給發(fā)布者,就由發(fā)布者決定何時執(zhí)行數(shù)據(jù)的發(fā)布,實際數(shù)據(jù)發(fā)布的執(zhí)行取決于發(fā)布者的服務質量。

訂閱者接收發(fā)布者的數(shù)據(jù),并提供給域成員。訂閱者可接收和轉發(fā)不同的數(shù)據(jù)類型。要訪問接收到的數(shù)據(jù),域成員必須通過和訂閱者相關的數(shù)據(jù)接收器。

數(shù)據(jù)發(fā)送器對象與數(shù)據(jù)接收器對象通過主題聯(lián)系。主題和數(shù)據(jù)類型以及數(shù)據(jù)本身的服務質量(QoS)關聯(lián)。DomainParticipantFactory(域成員廠)用于創(chuàng)建和刪除域成員,域成員通過 DomainParticipant::get_domain_id()綁定到域上,域成員可以創(chuàng)建和刪除主題、發(fā)布者和訂閱者;發(fā)布者用于強制創(chuàng)建和刪除數(shù)據(jù)發(fā)送器先前創(chuàng)建的主題的類型;訂閱者用于強制創(chuàng)建和刪除數(shù)據(jù)接收器先前創(chuàng)建的主題的類型;DataWriter::write()用來使應用程序更新數(shù)據(jù)值;DataReader::take()用來從 DDS中間件中接收數(shù)據(jù)樣本。DDS的編程模型如圖2所示。

抽象的實體接口定義了域成員和域實體(DomainEntities)(即主題、發(fā)布者、數(shù)據(jù)發(fā)送器、訂閱者和數(shù)據(jù)接收器)支持的通用行為。get_qos()和set_qos()用來檢索和修改服務質量;get_listener()可被DDS中間件用來探測和安裝用戶聽眾的具體地位的條件。確切的服務質量參數(shù)列表是針對每個具體的實體類型。

3 應用軟件的設計和實現(xiàn)

RTI公司的DDS中間件是執(zhí)行數(shù)據(jù)分發(fā)服務標準的一個典型代表。下面采用該公司的DDS中間件并結合Demo程序(發(fā)布-訂閱的主題用圓形、三角形和方形的幾何圖形形象的表示),研究實時數(shù)據(jù)分發(fā)系統(tǒng)的軟件設計和實現(xiàn)。Demo程序的運行界面如圖3所示。

3.1 應用軟件的設計

一般情況下,一個應用程序可以屬于多個域(如圖4所示),創(chuàng)建若干域成員,三個應用程序在域A交流命令/控制數(shù)據(jù),其他三個應用程序在域B中交流狀態(tài)數(shù)據(jù),其他兩個應用程序是域C內通信。創(chuàng)建多個域,可以提供有效的數(shù)據(jù)隔離。

DDS的主題是強制的數(shù)據(jù)類型。DDS中間件支持多語言的綁定,在 OMG的接口描述語言(IDL)中,定義類型TopicInfo。TopicInfo包含一個graphics變量——確定圖形的形狀和value變量——圖形的顏色。把graphics字段表記為關鍵字,讓DDS中間件區(qū)分不同圖形所更新的數(shù)據(jù)。

鑒于IDL類型定義,DDS的中間件提供的代碼生成器用來生成特定語言代碼來處理數(shù)據(jù)類型。生成的代碼將在目標語言中包含類型定義 (在本文中使用C++語言)、特定標準類型的API、中間件執(zhí)行的特定代碼。對于TopicInfo數(shù)據(jù)類型,生成下列標準類:TopicInfoType-Support、TopicInfoDataWriter、TopicInfoDataReader。

3.2 應用軟件的實現(xiàn)

(1)創(chuàng)建DomainParticipant綁定到域上

(2)注冊用戶的數(shù)據(jù)類型

TopicInfoTypeSupport::register_type()用來注冊數(shù)據(jù)類型,可以在DomainParticipant中使用。

(3)創(chuàng)建主題(Topics)

使用標準的DDS API創(chuàng)建命名主題綁定到注冊用戶的數(shù)據(jù)類型上。主題會自動地在DataWriters和DataReaders之間建立一個數(shù)據(jù)流。

(4)創(chuàng)建 Publishers和 DataWriters

在給定的DomainParticipant上,創(chuàng)建 Publisher。一個Publishr可以有不同主題的DataWriters。DataWriter提供發(fā)送數(shù)據(jù)樣本的方法,管理輸入數(shù)據(jù)通道的生命周期。

(5)發(fā)送數(shù)據(jù)更新

對于給定的writer,使用::write()方法將新的數(shù)據(jù)值發(fā)布給 subscribers。

(6)創(chuàng)建 Subscribers和 DataReaders

在給定的 DomainParticipant,創(chuàng)建 Subscriber,一個Subscriber可以有不同主題的DataReaders。通過調用on_data_available()方法處理接收到的數(shù)據(jù)樣本。

(7)接收數(shù)據(jù)樣本

當應用程序檢索到數(shù)據(jù)樣本時,調用::on_data_available()函數(shù)接收數(shù)據(jù);接收到topic_info數(shù)據(jù)時,調用::take()函數(shù)匹配DDS中間件里的數(shù)據(jù)狀態(tài)標準。接收完數(shù)據(jù)樣本后,應用程序通過調用::return_loan()函數(shù)返回。

(8)調整服務質量(QoS)

在DataReader和DataWriter對象之間調整數(shù)據(jù)流的QoS參數(shù)設置,也可以通過get_qos()/set_qos()指定參數(shù)設置。

DataReaders可以要求不同程度的可靠性交付,從快速但不可靠到高可靠性順序交付。這為每個數(shù)據(jù)流提供了可靠性控制。

中間件可以通過QoS的OwnershipStrength參數(shù)自動判斷多個DataWriters的同一主題所代表的信息。根據(jù)唯一性,一個通道上的一個主題只能由單一的DataWriter更新。DataReaders從DataWriter接收具有最高權值的數(shù)據(jù),并提供了自動故障排除功能。如果一個高優(yōu)先級的DataWriter失敗,所有DataReaders立即接收較弱的備份DataWriter的更新數(shù)據(jù)。DataWriter也可以指定持續(xù)時間,通過QoS參數(shù)Lifespan(預期生存期限)標示樣本是否過時。DDS可以定義許多QoS參數(shù)。每對相關的實體都可以在此基礎上調整各自的行為。

(9)狀態(tài)改變的響應

每個DDS實體的狀態(tài)可以通過get_*_status()函數(shù)更新。使用偵聽者,當狀態(tài)發(fā)生變化后中間件會自動通知或等待條件變量觸發(fā)特定的狀態(tài)變化。

應用程序可以對特定狀態(tài)的變化做出響應。例如,應用程序可以得到通知,當DataWriter不再有效或其活力發(fā)生了變化;或當另一具有相同名稱的主題存在,但具有不同的特征;或當QoS參數(shù)不符合提供的數(shù)據(jù);或當錯過了生存期限;或者當發(fā)現(xiàn)了一個新的與主題匹配的DataReader(或 DataWriter);或當數(shù)據(jù)有效;或當數(shù)據(jù)樣本丟失或被拒絕。應用程序響應狀態(tài)變化可在每個實例的基礎上調整。

OMG的DDS創(chuàng)建了一個簡單的數(shù)據(jù)通信結構,實現(xiàn)了復雜的數(shù)據(jù)模式。采用DDS中間件發(fā)送和接收數(shù)據(jù),每個實體通過調整QoS參數(shù)支持復雜的數(shù)據(jù)通信模式配置,減輕了開發(fā)者擔心的低層次的網(wǎng)絡編程任務。該中間件能夠跨平臺操作,便于應用程序的移植和維護,易于組建和實現(xiàn)一個擴展的、易維護的實時分布式系統(tǒng)。

[1]Middleware solutions for automation applications-case RTPS[R].Helsinki University of Technology Information and Computer Systems in Automation Espoo 2003.

[2]RTPS wire protocol specification[S].Version 1.0,November 2001,Real-Time Innovations.

[3]Interface for distributed automation architecture description and specification[S].Revision 1.1,November 2002.

[4]Data distribution service for real-time systems version 1.2[S].OMG Available Specification,January 2007.

[5]REVILL G.Designing and debugging real-time distributed systems[J].Safety Critical Embedded Systems,2008(2):27-31.

猜你喜歡
發(fā)布者數(shù)據(jù)類型中間件
詳談Java中的基本數(shù)據(jù)類型與引用數(shù)據(jù)類型
新加坡新法規(guī)引爭議
如何理解數(shù)據(jù)結構中的抽象數(shù)據(jù)類型
RFID中間件技術及其應用研究
電子制作(2018年14期)2018-08-21 01:38:10
基于VanConnect中間件的設計與開發(fā)
電子測試(2018年10期)2018-06-26 05:54:02
基于NDN的高效發(fā)布/訂閱系統(tǒng)設計與實現(xiàn)
廣告發(fā)布者的著作權審查義務問題研究
加權映射匹配方法的站內搜索引擎設計
中間件在高速公路領域的應用
一種支持智能環(huán)境構建的中間件
铜梁县| 菏泽市| 达尔| 汉源县| 黄浦区| 长顺县| 吴川市| 义马市| 花垣县| 辉县市| 北碚区| 龙州县| 万宁市| 信阳市| 西昌市| 如东县| 赤峰市| 栖霞市| 肥东县| 安阳市| 双鸭山市| 浮梁县| 宁武县| 根河市| 乐业县| 沧州市| 南华县| 郎溪县| 大安市| 永昌县| 东乡县| 廉江市| 乌鲁木齐县| 丹江口市| 北票市| 安义县| 当阳市| 策勒县| 民丰县| 渝北区| 上蔡县|