999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

以數(shù)據(jù)為中心的實(shí)時(shí)分發(fā)技術(shù)研究與應(yīng)用

2021-05-25 08:07:24胡佳貝呂睿娟
通信電源技術(shù) 2021年24期
關(guān)鍵詞:模型系統(tǒng)

胡佳貝,邢 浩,呂睿娟

(中國航空工業(yè)集團(tuán)公司西安航空計(jì)算技術(shù)研究所,陜西 西安 710068)

0 引 言

近年來,隨著分布式信息系統(tǒng)的快速發(fā)展,很多領(lǐng)域?qū)τ谙到y(tǒng)的實(shí)時(shí)性和可靠性提出了更高的要求,尤其是航空領(lǐng)域、作戰(zhàn)領(lǐng)域以及航海領(lǐng)域等。對(duì)于這些分布式硬實(shí)時(shí)系統(tǒng),如果數(shù)據(jù)的共享和傳遞不能按照預(yù)期到達(dá),則會(huì)造成重大災(zāi)難或事故。因此,對(duì)于實(shí)時(shí)數(shù)據(jù)分發(fā)系統(tǒng)的研究至關(guān)重要。傳統(tǒng)的客戶/服務(wù)器(Client/Server system,C/S)模式以對(duì)象為中心,由于其信息傳遞過程存在耦合度高、擴(kuò)展性低、效率低等缺陷,已不足以滿足當(dāng)前許多信息系統(tǒng)對(duì)于實(shí)時(shí)性的要求[1]。對(duì)象管理組織(Object Management Group,OMG)在以數(shù)據(jù)為中心的發(fā)布/訂閱(Data Centric Publish-Subscriber,DCPS)模型基礎(chǔ)上,制定了一套數(shù)據(jù)分發(fā)服務(wù)(Data Distribute Servic,DDS)標(biāo)準(zhǔn)[2]。該標(biāo)準(zhǔn)可以更好地滿足當(dāng)前對(duì)于實(shí)時(shí)性要求高的系統(tǒng)的需求。

本文首先研究了兩種數(shù)據(jù)分發(fā)模型,其次在DDS開源實(shí)現(xiàn)OpenDDS的基礎(chǔ)上,實(shí)現(xiàn)了一個(gè)以數(shù)據(jù)為中心的實(shí)時(shí)分發(fā)系統(tǒng)。該系統(tǒng)可以作為分布式復(fù)雜實(shí)時(shí)分發(fā)系統(tǒng)的雛形,在此基礎(chǔ)上進(jìn)行擴(kuò)展所形成的復(fù)雜實(shí)時(shí)分發(fā)系統(tǒng)可以被廣泛應(yīng)用到多個(gè)領(lǐng)域。

1 數(shù)據(jù)分發(fā)模型

一般情況下,常用的數(shù)據(jù)分發(fā)模型可以分為傳統(tǒng)的C/S和DCPS兩種,具體內(nèi)容如下[3]。

1.1 傳統(tǒng)的C/S模型

傳統(tǒng)的C/S通信模型如圖1所示,可以看到,該模型以處理對(duì)象為中心,通常情況下,由客戶端和服務(wù)器端建立鏈接,客戶端主動(dòng)發(fā)起請(qǐng)求,服務(wù)器端處理請(qǐng)求并作出響應(yīng)[4]。一個(gè)客戶端可以與多個(gè)服務(wù)器端進(jìn)行交互,同時(shí)一個(gè)服務(wù)端可以為多個(gè)客戶端提供服務(wù)。常用的Web服務(wù)采用的就是C/S通信模型。

然而,從圖1中同樣也可以看出,客戶端和服務(wù)器端存在較高的耦合度,這樣會(huì)限制整個(gè)系統(tǒng)的靈活性和擴(kuò)展性,而且該模型的通信過程較為復(fù)雜,使得信息的傳遞和共享效率會(huì)降低。如果在實(shí)時(shí)分布式系統(tǒng)中使用此模型,隨著運(yùn)行時(shí)間的增加,一旦服務(wù)器端連接的客戶節(jié)點(diǎn)數(shù)目增加,就會(huì)增加服務(wù)器端的工作負(fù)荷,這樣服務(wù)器端很容易出現(xiàn)故障,最終造成整個(gè)系統(tǒng)無法運(yùn)轉(zhuǎn)[5]。因此,該模型還存在單點(diǎn)失效問題,不適用于對(duì)實(shí)時(shí)性和可靠性要求較高的分布式信息系統(tǒng)中。

1.2 DCPS模型

在OMG提出的DDS規(guī)范中,將DDS API的接口進(jìn)行了分層,分別為數(shù)據(jù)本地重構(gòu)層(Data Local Reconstruction Layer,DLRL) 和 DCPS[6]。 其 中,DLRL位于DCPS的上層,對(duì)于DCPS提供的服務(wù)進(jìn)行了映射和封裝,這樣便于上層應(yīng)用程序去使用。

實(shí)際上,DDS規(guī)范中最重要的內(nèi)容是DCPS。該模型是一個(gè)與平臺(tái)無關(guān)的數(shù)據(jù)模型,其通信模型如圖2所示[7]。主要功能是將發(fā)布端發(fā)送的信息高效地傳遞給對(duì)該信息感興趣的訂閱端。DCPS構(gòu)建了一個(gè)全局?jǐn)?shù)據(jù)空間(Global Data Space,GDS),對(duì)于每個(gè)分布式應(yīng)用節(jié)點(diǎn),既可以作為發(fā)布者角色往GDS中寫數(shù)據(jù),也可以作為訂閱者角色讀取GDS中感興趣的數(shù)據(jù),同時(shí)也可以兩種角色兼得[8]。每當(dāng)發(fā)布者將數(shù)據(jù)發(fā)送到GDS時(shí),DDS中間件就會(huì)快速地將數(shù)據(jù)傳遞給對(duì)該數(shù)據(jù)感興趣的所有訂閱者[9]。因此,發(fā)布者與訂閱者就不需要知道彼此的存在,這便形成了一種低耦合的連接方式,而且任何分布式應(yīng)用節(jié)點(diǎn)可以隨時(shí)接入到GDS中,從而增加了整個(gè)系統(tǒng)的靈活性和擴(kuò)展性。

DDS規(guī)范中包括的實(shí)體對(duì)象有域參與者(Domain Participant)、主題(Topic)、發(fā)布者(Publisher)、訂閱者(Subscriber)、數(shù)據(jù)讀者(DataReader)以及數(shù)據(jù)寫者(DataWriter),彼此之間的關(guān)系如圖3所示。

DDS通過引入域的概念將通信空間劃分為不同的平面,處于同一域或者同一個(gè)平面內(nèi)的實(shí)體之間才能相互通信,處于不同域或不同平面內(nèi)的實(shí)體之間不能通信。每個(gè)域中可以包含多個(gè)域參與者,每個(gè)域參與者也可以包含多個(gè)發(fā)布者或多個(gè)訂閱者,每個(gè)發(fā)布者可以包含多個(gè)數(shù)據(jù)寫者,每個(gè)訂閱者也可以包含多個(gè)數(shù)據(jù)讀者[10]。主題作為發(fā)布者和訂閱者進(jìn)行通信的橋梁,并且每個(gè)主題關(guān)聯(lián)特定的數(shù)據(jù)類型。在每一次的發(fā)布訂閱過程中,由DDS中間件通過檢測(cè)發(fā)布者和訂閱者之間的主題是否相匹配,如果匹配,則建立通信鏈接,反之不會(huì)建立鏈接。同時(shí),在整個(gè)DDS的通信過程中,可以根據(jù)需要通過相關(guān)的QoS來設(shè)置數(shù)據(jù)傳輸過程中的質(zhì)量。因此,DPCS保證了正確的數(shù)據(jù)在正確的時(shí)間內(nèi)到達(dá)正確的地方。

2 實(shí)時(shí)分發(fā)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

以DDS的開源實(shí)現(xiàn)OpenDDS為例,在不同操作系統(tǒng)之間設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的實(shí)時(shí)發(fā)布系統(tǒng),設(shè)計(jì)思路如圖4所示。

2.1 發(fā)布端程序?qū)崿F(xiàn)過程

2.1.1 創(chuàng)建域參與者Participant對(duì)象

發(fā)布端應(yīng)用程序首先需要?jiǎng)?chuàng)建一個(gè)域參與者工廠對(duì)象dpf,由域參與者工廠對(duì)象dpf調(diào)用create_participant()方法創(chuàng)建域參與者對(duì)象participant。在本示例中,設(shè)置的域ID值為10,所有的DDS實(shí)體對(duì)象均采用默認(rèn)的QoS,具體代碼為:

DDS::DomainParticipantFactory_var dpf = ThePartici pantFactoryWithArgs(argc, argv);

DDS::DomainParticipant_var participant=dpf->create_participant(10, PARTICIPANT_QOS_DEFAULT,0, OpenDDS::DCPS::DEFAULT_STATUS_MASK);

2.1.2 注冊(cè)發(fā)布的數(shù)據(jù)類型

接著采用register_type()方法注冊(cè)要發(fā)布的數(shù)據(jù)類型。此類型是事先定義好的數(shù)據(jù)結(jié)構(gòu),具體代碼為:

Messenger::MessageTypeSupport_var ts =new Messen ger::MessageTypeSupportImpl;

ts->register_type(participant, “Message”);

2.1.3 創(chuàng)建主題Topic對(duì)象

利用域參與者對(duì)象participant調(diào)用create_topic()方法來創(chuàng)建要發(fā)布的主題對(duì)象topic,主題對(duì)象topic需要與主題名稱、數(shù)據(jù)類型進(jìn)行關(guān)聯(lián),具體代碼為:

DDS::Topic_var topic =participant->create_topic(“Movie List”,”Message”, TOPIC_QOS_DEFAULT,

0, OpenDDS::DCPS::DEFAULT_STATUS_MASK);

2.1.4 創(chuàng)建發(fā)布者Publisher對(duì)象和數(shù)據(jù)寫者Writer對(duì)象

利用域參與者對(duì)象participant調(diào)用create_publisher()方法創(chuàng)建發(fā)布者對(duì)象publisher,由發(fā)布者對(duì)象publisher調(diào)用create_datawriter()方法創(chuàng)建相關(guān)的寫者對(duì)象writer,該對(duì)象和之前創(chuàng)建的topic對(duì)象進(jìn)行關(guān)聯(lián),具體代碼為:

DDS::Publisher_var publisher =participant->create_publisher(PUBLISHER_QOS_DEFAULT, 0,OpenDDS::DCPS::DEFAULT_STATUS_MASK);

DDS::DataWriter_var writer =publisher->create_datawriter(topic, DATAWRITER_QOS_DEFAULT, 0,OpenDDS::DCPS::DEFAULT_STATUS_MASK);

Messenger::MessageDataWriter_var message_writer=Messenger::MessageDataWriter::_narrow(writer);

2.2 訂閱端程序?qū)崿F(xiàn)過程

2.2.1 創(chuàng)建域參與者Participant對(duì)象

訂閱端應(yīng)用程序首先也需要?jiǎng)?chuàng)建一個(gè)域參與者工程對(duì)象dpf,由域參與者工廠對(duì)象dpf調(diào)用create_participant()方法創(chuàng)建域參與者對(duì)象participant。在本示例中,設(shè)置的域ID值為10,所有的DDS實(shí)體對(duì)象均采用默認(rèn)的QoS,具體代碼為:

DDS::DomainParticipantFactory_var dpf = ThePartici pantFactoryWithArgs(argc, argv);

DDS::DomainParticipant_var participant=dpf->create_participant(10, PARTICIPANT_QOS_DEFAULT,0, OpenDDS::DCPS::DEFAULT_STATUS_MASK);

2.2.2 注冊(cè)訂閱的數(shù)據(jù)類型

接著采用register_type()方法注冊(cè)要訂閱的數(shù)據(jù)類型。此類型是事先定義好的數(shù)據(jù)結(jié)構(gòu),具體代碼為:

Messenger::MessageTypeSupport_var ts =new Messen ger::MessageTypeSupportImpl;

ts->register_type(participant, “Message”);

2.2.3 創(chuàng)建主題Topic對(duì)象

利用域參與者對(duì)象participant調(diào)用create_topic()方法來創(chuàng)建要發(fā)布的主題對(duì)象topic,主題對(duì)象topic需要與主題名稱、數(shù)據(jù)類型進(jìn)行關(guān)聯(lián),具體代碼為:

p a r t i c i p a n t->c r e a t e_t o p i c(“M o v i e List”,”Message”, TOPIC_QOS_DEFAULT, 0,OpenDDS::DCPS::DEFAULT_STATUS_MASK);

2.2.4 創(chuàng)建訂閱者Subscriber對(duì)象

利用域參與者對(duì)象participant調(diào)用create_subscriber ()方法創(chuàng)建訂閱者對(duì)象subscriber,具體代碼為:

DDS::Subscriber_var subscriber =participant->create_subscriber(SUBSCRIBER_QOS_DEFAULT, 0,OpenDDS::DCPS::DEFAULT_STATUS_MASK);

2.2.5 創(chuàng)建監(jiān)聽器Listener對(duì)象和數(shù)據(jù)讀者DataReader對(duì)象

由訂閱者對(duì)象subscriber調(diào)用create_datareader()方法創(chuàng)建相關(guān)的寫者對(duì)象reader,該對(duì)象和之前創(chuàng)建的topic對(duì)象進(jìn)行關(guān)聯(lián),同時(shí),在創(chuàng)建寫者對(duì)象reader對(duì)象的需要綁定一個(gè)監(jiān)聽器對(duì)象listener,以便于對(duì)發(fā)布端發(fā)布的數(shù)據(jù)進(jìn)行異步監(jiān)聽和檢測(cè),具體代碼如下:

DDS::DataReaderListener_var listener(new DataReaderListenerImpl);

DDS::DataReader_var reader =subscriber->create_datareader(topic, reader_qos, listener,OpenDDS::DCPS::DEFAULT_STATUS_MASK);

Messenger::MessageDataReader_var message_reader=Messenger::MessageDataReader::_narrow(reader);

3 結(jié) 論

本文首先將傳統(tǒng)C/S模型和DCPS模型進(jìn)行對(duì)比,前者具有較高的耦合度與擴(kuò)展性低等缺點(diǎn),而DDS規(guī)范中的DCPS模型具有耦合度低和靈活性高等優(yōu)勢(shì),可以很好地滿足目前分布式系統(tǒng)對(duì)實(shí)時(shí)性與可靠性的需求。其次基于DDS的開源實(shí)現(xiàn)OpenDDS,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的實(shí)時(shí)分發(fā)系統(tǒng),介紹了應(yīng)用程序的開發(fā)過程。后續(xù)可以在此基礎(chǔ)上進(jìn)一步擴(kuò)展,將其應(yīng)用到更多的領(lǐng)域及更復(fù)雜的場(chǎng)景。

猜你喜歡
模型系統(tǒng)
一半模型
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機(jī)系統(tǒng)
ZC系列無人機(jī)遙感系統(tǒng)
重要模型『一線三等角』
重尾非線性自回歸模型自加權(quán)M-估計(jì)的漸近分布
基于PowerPC+FPGA顯示系統(tǒng)
半沸制皂系統(tǒng)(下)
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
3D打印中的模型分割與打包
主站蜘蛛池模板: 免费一看一级毛片| 国产精品一区二区不卡的视频| 欧美一级高清免费a| 国产黑丝视频在线观看| 日韩精品成人网页视频在线| 国产91麻豆免费观看| 国产农村1级毛片| 九九九国产| 成人年鲁鲁在线观看视频| 97人人做人人爽香蕉精品 | 久久久久青草大香线综合精品 | 五月婷婷中文字幕| 国产美女精品人人做人人爽| 在线观看91香蕉国产免费| 日韩在线欧美在线| 欧美黄色a| 怡红院美国分院一区二区| 亚洲天堂自拍| 国产69精品久久久久妇女| 97se亚洲综合在线韩国专区福利| 欧美视频在线不卡| swag国产精品| 2022国产无码在线| 免费看美女自慰的网站| jijzzizz老师出水喷水喷出| 中文天堂在线视频| 欧美三级日韩三级| 亚洲av中文无码乱人伦在线r| 456亚洲人成高清在线| 尤物国产在线| 精品1区2区3区| 伊人网址在线| 国产精品亚洲天堂| 激情影院内射美女| 亚洲第一色网站| 久久91精品牛牛| 久久亚洲国产最新网站| 亚洲视频色图| 国产97色在线| 青青国产视频| 亚洲视频a| 国产a网站| 熟妇无码人妻| 国产欧美精品午夜在线播放| 国产成人永久免费视频| 亚洲乱码在线视频| 超级碰免费视频91| 国产成人综合日韩精品无码首页| 欧美激情综合一区二区| 精品国产一区91在线| 亚洲an第二区国产精品| 精品一区二区三区水蜜桃| 青青网在线国产| 亚洲天堂视频网站| 一级黄色欧美| 成人av专区精品无码国产| 久久无码高潮喷水| 国产网站免费| 欧美不卡在线视频| 亚洲乱码在线播放| 四虎AV麻豆| 欧美激情视频一区| 天天摸夜夜操| swag国产精品| 女人18毛片一级毛片在线| 亚洲AV无码一二区三区在线播放| 日本五区在线不卡精品| 99热这里只有精品在线播放| 午夜少妇精品视频小电影| yjizz视频最新网站在线| 欧美人在线一区二区三区| 一级黄色片网| 亚洲三级a| 最新日韩AV网址在线观看| 亚洲h视频在线| 91香蕉国产亚洲一二三区| 国产打屁股免费区网站| 美女亚洲一区| 亚洲黄网视频| 国产69囗曝护士吞精在线视频| 午夜精品久久久久久久无码软件 | 97视频在线观看免费视频|