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

以數據為中心的實時分發技術研究與應用

2021-05-25 08:07:24胡佳貝呂睿娟
通信電源技術 2021年24期
關鍵詞:模型系統

胡佳貝,邢 浩,呂睿娟

(中國航空工業集團公司西安航空計算技術研究所,陜西 西安 710068)

0 引 言

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

本文首先研究了兩種數據分發模型,其次在DDS開源實現OpenDDS的基礎上,實現了一個以數據為中心的實時分發系統。該系統可以作為分布式復雜實時分發系統的雛形,在此基礎上進行擴展所形成的復雜實時分發系統可以被廣泛應用到多個領域。

1 數據分發模型

一般情況下,常用的數據分發模型可以分為傳統的C/S和DCPS兩種,具體內容如下[3]。

1.1 傳統的C/S模型

傳統的C/S通信模型如圖1所示,可以看到,該模型以處理對象為中心,通常情況下,由客戶端和服務器端建立鏈接,客戶端主動發起請求,服務器端處理請求并作出響應[4]。一個客戶端可以與多個服務器端進行交互,同時一個服務端可以為多個客戶端提供服務。常用的Web服務采用的就是C/S通信模型。

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

1.2 DCPS模型

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

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

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

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

2 實時分發系統的設計與實現

以DDS的開源實現OpenDDS為例,在不同操作系統之間設計并實現了一個簡單的實時發布系統,設計思路如圖4所示。

2.1 發布端程序實現過程

2.1.1 創建域參與者Participant對象

發布端應用程序首先需要創建一個域參與者工廠對象dpf,由域參與者工廠對象dpf調用create_participant()方法創建域參與者對象participant。在本示例中,設置的域ID值為10,所有的DDS實體對象均采用默認的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 注冊發布的數據類型

接著采用register_type()方法注冊要發布的數據類型。此類型是事先定義好的數據結構,具體代碼為:

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

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

2.1.3 創建主題Topic對象

利用域參與者對象participant調用create_topic()方法來創建要發布的主題對象topic,主題對象topic需要與主題名稱、數據類型進行關聯,具體代碼為:

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

0, OpenDDS::DCPS::DEFAULT_STATUS_MASK);

2.1.4 創建發布者Publisher對象和數據寫者Writer對象

利用域參與者對象participant調用create_publisher()方法創建發布者對象publisher,由發布者對象publisher調用create_datawriter()方法創建相關的寫者對象writer,該對象和之前創建的topic對象進行關聯,具體代碼為:

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 訂閱端程序實現過程

2.2.1 創建域參與者Participant對象

訂閱端應用程序首先也需要創建一個域參與者工程對象dpf,由域參與者工廠對象dpf調用create_participant()方法創建域參與者對象participant。在本示例中,設置的域ID值為10,所有的DDS實體對象均采用默認的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 注冊訂閱的數據類型

接著采用register_type()方法注冊要訂閱的數據類型。此類型是事先定義好的數據結構,具體代碼為:

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

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

2.2.3 創建主題Topic對象

利用域參與者對象participant調用create_topic()方法來創建要發布的主題對象topic,主題對象topic需要與主題名稱、數據類型進行關聯,具體代碼為:

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 創建訂閱者Subscriber對象

利用域參與者對象participant調用create_subscriber ()方法創建訂閱者對象subscriber,具體代碼為:

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

2.2.5 創建監聽器Listener對象和數據讀者DataReader對象

由訂閱者對象subscriber調用create_datareader()方法創建相關的寫者對象reader,該對象和之前創建的topic對象進行關聯,同時,在創建寫者對象reader對象的需要綁定一個監聽器對象listener,以便于對發布端發布的數據進行異步監聽和檢測,具體代碼如下:

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 結 論

本文首先將傳統C/S模型和DCPS模型進行對比,前者具有較高的耦合度與擴展性低等缺點,而DDS規范中的DCPS模型具有耦合度低和靈活性高等優勢,可以很好地滿足目前分布式系統對實時性與可靠性的需求。其次基于DDS的開源實現OpenDDS,設計并實現了一個簡單的實時分發系統,介紹了應用程序的開發過程。后續可以在此基礎上進一步擴展,將其應用到更多的領域及更復雜的場景。

猜你喜歡
模型系統
一半模型
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
3D打印中的模型分割與打包
主站蜘蛛池模板: 久久99久久无码毛片一区二区| 国产在线八区| 丝袜亚洲综合| 成年片色大黄全免费网站久久| 色综合中文| www亚洲天堂| 亚洲欧美激情小说另类| 国内99精品激情视频精品| 成人中文字幕在线| 国产成人高清精品免费软件| 欧美精品成人| 亚洲精品无码不卡在线播放| 欧美国产综合色视频| 欧美另类图片视频无弹跳第一页| 久久综合丝袜日本网| 亚洲人成在线精品| 人妻精品久久久无码区色视| 国产黄网永久免费| 久久精品国产在热久久2019| 亚洲成年人片| 国产成人你懂的在线观看| 日本91在线| 欧美不卡二区| 日韩一区二区在线电影| 日韩欧美中文字幕在线精品| 国产三级毛片| 欧美一区二区三区欧美日韩亚洲| 亚洲AⅤ综合在线欧美一区| 国产精品嫩草影院av| 伊人久热这里只有精品视频99| 99草精品视频| 人妻一区二区三区无码精品一区| 99热这里只有精品5| 国产天天色| 无码内射在线| 久久婷婷国产综合尤物精品| 国产亚洲精品va在线| 亚洲第一网站男人都懂| 国产成本人片免费a∨短片| 在线观看国产黄色| yjizz视频最新网站在线| 老司机精品一区在线视频| 亚洲色图另类| 成人在线观看一区| 亚洲日韩精品伊甸| 91香蕉视频下载网站| 日本午夜影院| 欧美日韩动态图| 成·人免费午夜无码视频在线观看 | 国产va在线观看免费| 欧美成人精品高清在线下载| 精品视频一区二区三区在线播| 亚洲中文在线看视频一区| 亚洲欧美激情小说另类| 欧美日韩另类国产| 老司机久久99久久精品播放| 福利在线不卡| 国内丰满少妇猛烈精品播| 国产99视频在线| 日韩国产高清无码| 久久这里只有精品国产99| 久久精品亚洲中文字幕乱码| 午夜啪啪福利| 美美女高清毛片视频免费观看| 99在线视频免费| 任我操在线视频| 国产成人精品男人的天堂| 无码'专区第一页| 性色生活片在线观看| 精品伊人久久久香线蕉| 国产成人av一区二区三区| 久久久久青草大香线综合精品 | 亚洲综合久久成人AV| 亚洲系列无码专区偷窥无码| 97免费在线观看视频| 毛片在线看网站| 国产av剧情无码精品色午夜| 麻豆精品视频在线原创| 色婷婷综合在线| 制服丝袜无码每日更新| 国产不卡一级毛片视频| 99ri精品视频在线观看播放|