• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于DDS中間件的性能測(cè)試*

      2011-08-10 09:22:42歐陽(yáng)軍蔡志明王希敏
      艦船電子工程 2011年11期
      關(guān)鍵詞:發(fā)布者中間件吞吐量

      歐陽(yáng)軍 蔡志明 王希敏

      (海軍工程大學(xué)電子工程學(xué)院 武漢 430033)

      1 引言

      隨著Internet技術(shù)的廣泛應(yīng)用和計(jì)算機(jī)技術(shù)的飛速發(fā)展,各種應(yīng)用系統(tǒng)的體系結(jié)構(gòu)呈現(xiàn)出以網(wǎng)絡(luò)為中心的趨勢(shì),這對(duì)通信的實(shí)時(shí)性、動(dòng)態(tài)靈活性提出了更高要求,同時(shí)要求分布式系統(tǒng)各參與者間采用一種具有松散耦合特性和QoS(Quality of Service)支持的靈活通信模型和交互機(jī)制。因此需一種能為實(shí)時(shí)系統(tǒng)應(yīng)用開(kāi)發(fā)者提供高級(jí)抽象接口的同時(shí)還能有效合理地控制部署實(shí)時(shí)系統(tǒng)所需的QoS策略的系統(tǒng)要來(lái)滿足分布式實(shí)時(shí)應(yīng)用需求。

      在 CORBA[1]基礎(chǔ)上制定的 DDS[2](Data Distribution Service)數(shù)據(jù)分發(fā)服務(wù)規(guī)范解決了分布式實(shí)時(shí)系統(tǒng)“在正確的時(shí)間、正確的位置獲取正確的數(shù)據(jù)”的需求,該規(guī)范描述了分布式系統(tǒng)中數(shù)據(jù)發(fā)布、傳遞和接收的接口和行為,定義了以數(shù)據(jù)為中心的發(fā)布-訂閱(Data Centric Publish Subscriber,DCPS)機(jī)制,提供了一個(gè)與平臺(tái)無(wú)關(guān)的數(shù)據(jù)模型。而DDS信息分發(fā)中間件是一種輕便的、能夠提供實(shí)時(shí)信息傳送的中間件技術(shù)。目前,成熟的DDS中間件產(chǎn)品有多種,其中由PrismTech公司開(kāi)發(fā)實(shí)現(xiàn)的OpenSplice DDS,實(shí)現(xiàn)了完整的DDS規(guī)范(包括DCPS和DLRL)。針對(duì)分布式系統(tǒng)的需求,本文將著重對(duì)OpenSplice DDS中間件的實(shí)時(shí)和吞吐性能進(jìn)行第三方測(cè)試。

      2 OpenSplice DDS簡(jiǎn)介

      OpenSplice DDS獨(dú)立于操作系統(tǒng)和編程語(yǔ)言,極大地方便了不同系統(tǒng)之間的通訊。系統(tǒng)設(shè)計(jì)者通過(guò)可擴(kuò)展的傳輸框架結(jié)構(gòu)連接多個(gè)物理端點(diǎn)。傳輸方式包括以太網(wǎng)絡(luò)、共享內(nèi)存或其他連接方式。具有多種服務(wù)質(zhì)量策略(QoS)參數(shù)可供調(diào)整,方便設(shè)計(jì)者調(diào)整其應(yīng)用程序達(dá)到性能和資源使用的最佳組合。OpenSplice DDS是位于網(wǎng)絡(luò)協(xié)議棧最上層的軟件,它屏蔽底層網(wǎng)絡(luò)代碼,代之以通用的、基于標(biāo)準(zhǔn)的應(yīng)用程序接口(API)。通過(guò)API提供易于理解的基于發(fā)布/訂閱的通訊模式。這種模式定義了兩種基本的角色:

      ·發(fā)布者:創(chuàng)建數(shù)據(jù),給數(shù)據(jù)命名(稱為主題Topic),并將數(shù)據(jù)分發(fā)給感興趣的訂閱者;

      ·訂閱者:注冊(cè)感興趣的主題,并在主題數(shù)據(jù)有變化時(shí)接收數(shù)據(jù)。

      任意一個(gè)節(jié)點(diǎn)可以成為發(fā)布者、訂閱者或兩者皆是,并可擁有多個(gè)主題。DDS處理所有的網(wǎng)絡(luò)輸入輸出,管理可靠和透明的傳輸:消息尋址、數(shù)據(jù)組合和分散、流控制、重試等等。所有這些都不需要應(yīng)用程序干預(yù),大大降低了用戶的工作量,用戶可以把精力花在應(yīng)用程序的設(shè)計(jì)等。

      OpenSplice DDS為設(shè)計(jì)者提供了運(yùn)行平臺(tái)和DDS開(kāi)發(fā)調(diào)試工具[3],前者用于設(shè)計(jì)者編程實(shí)現(xiàn)分布式系統(tǒng)的通訊,后者用于調(diào)試分布式通訊中出現(xiàn)的問(wèn)題,這些工具及其所具有的功能分別如下:

      ·IDL Preprocessor[4]:產(chǎn)生類型指定的主題,類型指定的數(shù)據(jù)寫入者和讀取者。

      ·OpenSplice Tuner[5]:用于檢測(cè)和控制 DDS域。

      ·OpenSplice Configurator:可簡(jiǎn)化服務(wù)配置過(guò)程。

      ·OpenSplice DDS Power Tools[6]:為設(shè)計(jì)者提供了操作簡(jiǎn)便的、可動(dòng)態(tài)圖形化建模的環(huán)境。

      3 OpenSplice DDS通信過(guò)程

      OpenSplice DDS實(shí)現(xiàn)了DDS規(guī)范的兩層,分別是數(shù)據(jù)本地重構(gòu)層DLRL[7]和以數(shù)據(jù)為中心的發(fā)布-訂閱層 DCPS[8]。DLRL層將 DCPS層提供的服務(wù)進(jìn)行了抽象,在DLRL層建立了與底層服務(wù)的映射關(guān)系,DCPS層則是DDS的核心和基礎(chǔ),提供了通信的基本服務(wù)。

      DCPS層建立了一個(gè)全局?jǐn)?shù)據(jù)空間的概念,發(fā)布者和訂閱者在該全局空間中分別發(fā)布和訂閱自己需要的數(shù)據(jù)類型,通過(guò)中間件處理后,再進(jìn)行數(shù)據(jù)傳送。DCPS層將用戶對(duì)資源的需求情況和資源的可用情況都轉(zhuǎn)化為服務(wù)質(zhì)量QoS參數(shù)。

      每個(gè)發(fā)布者都有一個(gè)與之關(guān)聯(lián)的數(shù)據(jù)寫入者。當(dāng)數(shù)據(jù)通過(guò)適當(dāng)?shù)臄?shù)據(jù)寫入者與發(fā)布者通信時(shí),發(fā)布者負(fù)責(zé)發(fā)布數(shù)據(jù)寫入者描述的數(shù)據(jù)類型的數(shù)據(jù)(發(fā)布者將根據(jù)它自己的QoS來(lái)完成,或根據(jù)相應(yīng)數(shù)據(jù)寫入者的QoS)。當(dāng)發(fā)布者與數(shù)據(jù)寫入者關(guān)聯(lián)時(shí)就形成了一個(gè)發(fā)布。

      訂閱者負(fù)責(zé)對(duì)發(fā)布的數(shù)據(jù)進(jìn)行接收并使數(shù)據(jù)能被接收應(yīng)用程序(根據(jù)訂閱者的QoS)所使用。它能接收并分發(fā)不同類型的數(shù)據(jù)。為了訪問(wèn)被接收到的數(shù)據(jù),應(yīng)用程序必須使用和訂閱者相關(guān)聯(lián)的數(shù)據(jù)閱讀者。當(dāng)訂閱者與數(shù)據(jù)閱讀者關(guān)聯(lián)后就形成了訂閱。

      訂閱獲取信息有兩種模式:異步方式和同步方式。異步模式下,DDS提供監(jiān)聽(tīng)(Listener)接口,當(dāng)數(shù)據(jù)發(fā)布或狀態(tài)改變時(shí),中間件通知Listener接口,Listener通過(guò)相應(yīng)的回調(diào)(callback)獲取信息。同步模式下,應(yīng)用調(diào)用 WaitSet阻塞調(diào)用線程,一旦與WaitSet關(guān)聯(lián)的條件(如readcondition、querycondition、statuscondition、guardcondition)之一被滿足時(shí)停止阻塞,應(yīng)用程序就可通過(guò)數(shù)據(jù)讀取者獲取最新的數(shù)據(jù)信息。

      主題用于聯(lián)系發(fā)布和訂閱。發(fā)布方在中間件上發(fā)布一個(gè)主題后,訂閱方根據(jù)主題來(lái)查閱發(fā)布方發(fā)布的信息。中間件負(fù)責(zé)檢查發(fā)布方發(fā)布的主題是否滿足訂閱方的要求,并檢查其QoS策略是否兼容。訂閱方對(duì)相關(guān)服務(wù)質(zhì)量策略指定一個(gè)申請(qǐng)值,而發(fā)布方則對(duì)該服務(wù)質(zhì)量策略指定一個(gè)供應(yīng)值,系統(tǒng)確定發(fā)布方的供應(yīng)值和訂閱方的申請(qǐng)值是否一致,如果雙方QoS策略一致,則通信正常建立;如果不一致,則系統(tǒng)服務(wù)不會(huì)在這兩個(gè)實(shí)體對(duì)象之間建立通信,并會(huì)通知發(fā)送方和接收方。

      4 基于OpenSplice DDS的應(yīng)用

      開(kāi)發(fā)OpenSplice DDS應(yīng)用有幾個(gè)主要步驟:從Prismtech公司下載評(píng)估版的相關(guān)軟件;安裝OpenSplice DDS和Power Tools;運(yùn)行守護(hù)程序,通過(guò)Power Tools設(shè)計(jì)發(fā)布/訂閱應(yīng)用程序。

      Power Tools為設(shè)計(jì)者提供了便于操作、可圖形化建模的環(huán)境,該工具具有開(kāi)發(fā)指導(dǎo)、集成簡(jiǎn)單、實(shí)時(shí)檢查錯(cuò)誤、自動(dòng)連接生成代碼的功能。

      利用Power Tools進(jìn)行應(yīng)用開(kāi)發(fā)的具體步驟如下:

      s1:打開(kāi)Create an OpenSplice Project向?qū)В?/p>

      s2:在Project Name文本框內(nèi)輸入工程名,可用默認(rèn)路徑也可自定義路徑,再點(diǎn)擊Finish;

      s3:添加DDS應(yīng)用所需的DDS實(shí)體,Power Tools組件和資源;

      s4:設(shè)置DDS實(shí)體的屬性和所需的QoS策略值;

      s5:創(chuàng)建Diagram組件,通過(guò)Diagram Editor可創(chuàng)建新的DDS實(shí)體并可將相應(yīng)的DDS實(shí)體連接起來(lái),進(jìn)行圖形化建模;

      s6:對(duì)建立好的OpenSplice工程產(chǎn)生DDS源代碼;

      s7:使用相應(yīng)的編譯器對(duì)應(yīng)用進(jìn)行編譯,如VS2005、VS2008等。

      Power Tools為初學(xué)者提供教學(xué)用開(kāi)發(fā)示例:聊天室應(yīng)用[9],并介紹了具體的操作步驟和源代碼,如圖1所示。

      圖1 聊天室應(yīng)用示例

      對(duì)源代碼進(jìn)行編譯后,運(yùn)行效果如圖2所示。

      圖2 聊天室運(yùn)行效果圖

      5 性能測(cè)試

      基于OpenSplice DDS的發(fā)布/訂閱系統(tǒng)性能無(wú)法通過(guò)理論計(jì)算得到,因此需實(shí)驗(yàn)測(cè)量,才能驗(yàn)證系統(tǒng)性能是否滿足應(yīng)用需求。

      選取端到端時(shí)延和吞吐量這兩個(gè)性能指標(biāo)進(jìn)行測(cè)試[10],時(shí)延構(gòu)成通常為處理時(shí)延、傳輸時(shí)延、傳播時(shí)延和排隊(duì)時(shí)延等,實(shí)際為應(yīng)用層時(shí)延;吞吐量亦為應(yīng)用層的吞吐量。

      5.1 測(cè)試環(huán)境

      DDS的點(diǎn)到點(diǎn)傳播特性決定了網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的簡(jiǎn)單性,只需在網(wǎng)絡(luò)上的兩臺(tái)計(jì)算機(jī)就可建立發(fā)布訂閱系統(tǒng),因此實(shí)驗(yàn)可在兩臺(tái)計(jì)算機(jī)上完成,計(jì)算機(jī)配置如表1所示。

      表1 測(cè)試環(huán)境軟硬件配置

      5.2 時(shí)延測(cè)試方案

      本文采用單端計(jì)時(shí)的方法測(cè)試往返時(shí)延,取往返時(shí)延值的一半為端到端時(shí)延值。采用的測(cè)試模型如圖3,每一端既是發(fā)布者又是訂閱者,訂閱者端采用WaitSet阻塞方式獲取發(fā)布的數(shù)據(jù)信息,假設(shè)兩端分別為A和B,測(cè)試的過(guò)程如下:

      圖3 端到端往返時(shí)延測(cè)試模型

      B端先作為訂閱者被阻塞,等待接收事件,A端作為發(fā)布者發(fā)布事件,B先于A運(yùn)行,即事件接收在事件發(fā)送之前。當(dāng)A發(fā)送完畢一個(gè)信息,立即轉(zhuǎn)換為訂閱者并阻塞;同時(shí)B接收完畢一個(gè)事件,立即轉(zhuǎn)換為發(fā)布者,并發(fā)送事件。在B發(fā)送事件前,A已經(jīng)被阻塞并準(zhǔn)備接收事件,因此同樣B發(fā)送事件后,A將接收到事件。這樣,相當(dāng)于同樣的發(fā)布/訂閱事件發(fā)生兩次,端到端的時(shí)延計(jì)算公式為:

      吞吐量采用訂閱者端計(jì)時(shí)的方式,測(cè)試模型如圖4所示。一端為發(fā)布者端,另一端為訂閱者端,訂閱者端采用WaitSet阻塞方式獲取事件,發(fā)布者端不斷發(fā)布事件,訂閱者端從接收事件時(shí)開(kāi)始計(jì)時(shí),直到接收10000次事件后停止計(jì)時(shí)。這樣,吞吐量計(jì)算公式為:

      Buffer為事件大小,count為計(jì)數(shù)次數(shù)。

      圖4 吞吐量測(cè)試模型

      5.3 測(cè)試結(jié)果

      圖5 端到端時(shí)延

      圖6 不同事件大小下的吞吐量

      時(shí)延測(cè)試時(shí)事件大小固定為16384B,共進(jìn)行10個(gè)批次,每批次事件被往返發(fā)送10000次,測(cè)試結(jié)果包括平均值、最大值和最小值。如圖5所示,平均值在4000μs附近擺動(dòng),最大值為18924.5μs,最小值為1840μs。

      吞吐量測(cè)試時(shí)按照事件大小分別進(jìn)行測(cè)量:128B,256B,512B,1024B,4096B,8192B,16384B,測(cè)試結(jié)果如圖6所示,可見(jiàn)吞吐量隨著事件的增大呈近似線性增加趨勢(shì)。

      6 結(jié)語(yǔ)

      OpenSplice DDS是DDS規(guī)范的一個(gè)實(shí)現(xiàn),采用發(fā)布/訂閱通信機(jī)制,建立全局?jǐn)?shù)據(jù)空間,根據(jù)主題進(jìn)行點(diǎn)對(duì)點(diǎn)數(shù)據(jù)傳送,有效地減少了不必要的網(wǎng)絡(luò)流量,通過(guò)提供應(yīng)用級(jí)QoS,使用戶對(duì)發(fā)布/訂閱行為可控、可見(jiàn),并且具有應(yīng)用規(guī)定語(yǔ)義下的可靠性。本文通過(guò)實(shí)例對(duì)實(shí)時(shí)和吞吐性能進(jìn)行了測(cè)試,今后的工作是深入研究其提供的QoS策略及DLRL層,并逐步應(yīng)用到分布式實(shí)時(shí)嵌入式系統(tǒng)(DRE)中。

      [1]OMG.Real-time CORBA Specification[R].Version1.2,Jan.2005

      [2]OMG.Data Distribution Service for Real-time Systems Specification[R].Version1.1,Nov.2005

      [3]Prismtech.OpenSplice DDS Version 5.x Getting Started Guide[R].Doc Issue 39,8October 2010:5~6

      [4]Prismtech.OpenSplice DDS Version 5.x IDL Pre-processor Guide[R].Doc Issue 22,25October 2010

      [5]Prismtech.OpenSplice DDS Version 5.x Tuner Guide[R].Doc Issue 21,11May 2010

      [6]Prismtech.OpenSplice DDS Version 2.2DDS Power Tools[R].Doc Issue 38,22September 2009:71~94

      [7]Prismtech.OpenSplice DDS Version 5.x DLRL Code Generator Guide[R].Doc Issue 14,11May 2010

      [8]Prismtech.OpenSplice DDS Version 5.x C Reference Guide[R].Doc Issue 30,6January 2011

      [9]Prismtech.OpenSplice DDS Version 5.x C Tutorial Guide[R].Doc Issue 23,11May 2010

      [10]胡鈺銑,王希敏.基于實(shí)時(shí)CORBA與DDS的發(fā)布/訂閱系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:海軍工程大學(xué)碩士學(xué)位論文,2007:78~87

      猜你喜歡
      發(fā)布者中間件吞吐量
      新加坡新法規(guī)引爭(zhēng)議
      RFID中間件技術(shù)及其應(yīng)用研究
      電子制作(2018年14期)2018-08-21 01:38:10
      基于VanConnect中間件的設(shè)計(jì)與開(kāi)發(fā)
      基于NDN的高效發(fā)布/訂閱系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
      2016年10月長(zhǎng)三角地區(qū)主要港口吞吐量
      集裝箱化(2016年11期)2017-03-29 16:15:48
      2016年11月長(zhǎng)三角地區(qū)主要港口吞吐量
      集裝箱化(2016年12期)2017-03-20 08:32:27
      廣告發(fā)布者的著作權(quán)審查義務(wù)問(wèn)題研究
      加權(quán)映射匹配方法的站內(nèi)搜索引擎設(shè)計(jì)
      中間件在高速公路領(lǐng)域的應(yīng)用
      2014年1月長(zhǎng)三角地區(qū)主要港口吞吐量
      集裝箱化(2014年2期)2014-03-15 19:00:33
      镇原县| 清苑县| 溧阳市| 墨竹工卡县| 密山市| 大宁县| 嘉义县| 民县| 哈巴河县| 沐川县| 额尔古纳市| 蕉岭县| 平江县| 保靖县| 澎湖县| 东山县| 东丽区| 四子王旗| 永德县| 建平县| 四子王旗| 白朗县| 二连浩特市| 日喀则市| 张掖市| 林周县| 繁峙县| 维西| 阳朔县| 麟游县| 五大连池市| 萨嘎县| 三亚市| 军事| 景宁| 满洲里市| 喜德县| 右玉县| 遵义县| 神木县| 汉寿县|