面向Web應用的發佈訂閱中間件的研究與實現

本篇論文出處:許喆. 面向Web應用的發佈訂閱中間件的研究與實現[D].東南大學,2017.

       這篇論文主要講述由於目前大多采用的數據分發服務DDS大多部署在局域網中,對於Web應用缺乏相應的支持,所以該篇論文基於OMG組織發佈的Web-enabled DDS規範,提出了REST風格的Web DDS服務模型,並在此基礎上實現了一個面向Web應用的發佈訂閱中間件原型。Web環境中的發佈者或訂閱者可通過該原型系統參與到本地DDS數據空間域中發佈訂閱數據

        數據分發服務DDS是對象管理組織於2004年提出的發佈訂閱通信中間件規範。DDS採用以數據爲中心的發佈訂閱模型,具有高吞吐量、低時延、高性能、易擴展的特點。此外,DDS還具有較好的QoS控制策略,從而滿足了實時分佈式系統的資源可控與性能可預測需求。目前DDS面臨着新的發展需求,從傳統的對DDS應用系統的訪問方式發展到以Web爲基礎的應用程序訪問DDS本地全局數據空間的方式,但DDS應用拓展到Web環境中面臨着一些挑戰。首先,DDS應用在執行某些操作時,用戶需要依據特定的編程語言來編寫應用的操作代碼;其次傳統的DDS應用系統通常都部署在局域網環境中,通信的各方處於同一網段,將其拓展到廣域網中則需要考慮DDS應用間的通訊安全以及DDS系統本身的安全性問題。

        DDS規範標準化了實時分佈式系統中數據傳遞、發佈與接收的行爲與接口。DDS規範中使用UML語言來描述服務,定義了一個平臺無關的DDS對象模型,該模型可以有各類別的語言實現,也可以映射到具體的平臺。其目的是爲了使分佈式系統中的數據可以可靠、高效地發佈。DDS規範定義了兩個層次的接口,

                                                             

        數據重組層DLPL:作用是將服務集成至應用層。該層是可選的,不做介紹。

        然後再介紹下發佈訂閱模式DCPS:類似於一個郵局,信息發佈者不再需要親手將數據交送到訂閱者的手中,而是將消息交給郵局,訂閱者直接從郵局取回自己的消息。同時郵局可以接收多方的消息,並進行分類,等待不同的訂閱者來取。郵局是這個模式的核心,相當於一個共享的數據空間,發佈者和訂閱者通過簡單的讀寫即可訪問這些數據。實際上,這些數據也只有對它感興趣的對象纔會提取。發佈者會公開自己提供的數據的類型和數據屬性,訂閱者會公開自己希望接受的數據類型和數據屬性。郵局會將數據信息傳遞給所有對此感興趣的訂閱者們。在本篇論文裏面郵局就是DDS中間件。此外DDS還提供了豐富的服務質量Qos,來滿足不同場景下的各類需求,使用Qos策略列表來描述Qos依賴。這個Qos策略控制不同的服務行爲,使得每個服務呈現不同的特性。在DDS中,發佈者和訂閱者的Qos策略必須一致方可匹配,實際中DDS服務也會判斷兩者是否一致。Qos參數控制了DDS的底層通信機制與行爲。用戶依據實際應用場景需要配置相應的Qos策略,DDS中間件依據用戶配置的Qos參數來執行底層通信的行爲,從而實現對不同用戶的需要響應出不同的行爲,最終提供不一樣的服務。正是Qos這一特性的出現使得DDS服務呈現多樣性,可以滿足不同場景不同用戶的需求。

                     

        接下來介紹Rest。Web Service作爲發展迅速的Web服務技術,採用了面向服務的架構。這個架構的特點及時對於任何系統都有兩個重要的元素:角色和操作。角色指的是不同類型的實體,操作指的是這些實體所需要的完成的功能。在Web Service發展史中,近些年出現了受人們追捧的Rest概念。對於Rest的概念很難用語言或實例描述清楚,Rest既不是一種具體的規範,也不是技術,是一種豐富的架構風格。新的Web應用設計都應遵守REST風格,對於REST架構風格有6個重要的架構約束:客戶-服務器;無狀態;緩存;統一接口;分層系統;按需代碼。在REST設計架構中,整個Web Service將被當做一組資源集合,資源可以有很多種表述方式,資源與其表述可以爲一對多的關係。每個資源都對應一個統一的資源標識符。REST風格的架構所具有的6個主要特徵:面向資源、可尋址、連通性、無狀態、統一接口、超文本驅動。

                                             

                        

        Web DDS主要介紹服務的功能、服務的組成和Web DDS服務模型的REST風格化。其中Web DDS服務包含兩個功能,服務與用戶交互功能以及操作本地化功能。服務的組成主要爲Web DDS對象與對象的操作。REST風格化的Web DDS服務實現將服務中的對象及對象操作等映射成REST風格的對象及操作,以簡潔明瞭的方式爲Web用戶提供發佈訂閱服務。Web用戶定義的發佈訂閱操作可以通過Web DDS服務參與到本地DDS數據空間域中發佈訂閱數據,與本地發佈訂閱程序相互通信。Web DDS服務使得WEB用戶定義的發佈訂閱操作可以像本地DDS發佈訂閱程序一樣參與到本地DDS數據空間域中進行數據的發佈訂閱。按功能劃分WEB DDS服務可以分爲兩個部分。第一部分,服務爲WEB用戶提供操作API,實現與WEB用戶的數據交互以及管理服務中的對象,實現每個對象的業務邏輯操作處理;第二部分,將WEB用戶的發佈訂閱操作本地化,實現在本地DDS數據空間中發佈訂閱數據。其功能圖如圖3-1所示。Web DDS服務爲Web用戶提供了操作請求接口,Web用戶通過標準的HTTP協議對服務發起操作請求。Web DDS服務在接收到操作請求後依據請求對Web DDS服務中的對象進行相關業務邏輯操作處理,處理完成後將Web用戶所請求的數據或操作執行完成的狀態碼返回至Web用戶,完成Web用戶的操作請求處理。Web用戶發佈訂閱操作本地化功能部分體現在圖3-1中Web DDS對象模型與標準的DDS對象模型間的映射。通過在兩者間建立映射關係即可實現Web用戶發佈訂閱操作的本地化。

                                           

         Web DDS服務主要由Web DDS對象模型中的對象以及對象的操作構成。Web DDS有別於標準的DDS對象模型,因爲DDS對象模型使用本地編程接口,因此它包含了許多強類型的對象與方法及應用程序在中間件中註冊的監聽對象的直接回調接口,這樣的應用程序接口並不適合傾向於面對資源的接口的Web應用。其次在Web環境下Web應用的連接性是間斷的,使用DDS對象模型無法保證應用的連續性,因此WebDDS對象模型中引入session來保證Web應用狀態的連續性。最後由於Web用戶可以再不同場景下對Web DDS服務進行訪問,服務需要一定的安全保障,標準的DDS對象模型無法保證安全性,在Web DDS對象模型中引入了訪問控制以及操作權限認證來保證服務安全性。Web DDS對象模型在標準的DDS對象模型上主要做了些簡化與拓展。AccessController的引入是爲了保證Web DDS服務的安全性,爲服務提供安全訪問機制。SessionId的引入是爲了維持Web用戶狀態,確保Web用戶在連接服務過程中一直保持狀態。

                           

                            

                          

         Web DDS服務的主要的操作是處理用戶的發佈訂閱請求操作,而處理髮布訂閱操作會涉及到每個具體類的操作。服務的入口類Root,該類爲用戶提供了訪問Web DDS服務的接口,以及對應用程序、QoS以及Type進行相關操作。Web DDS服務中的QoS依賴於本地DDS支持的QoS,因此服務對QoS的操作範圍不超過己有DDS所支持的QoS種類。同樣,Web DDS服務中對Type的支持範圍也依賴於DDS所支持的數據類型。

        訪問控制類AccessController,該類對服務使用者發起的所有操作進行權限認證,判定該用戶是否有權進行該操作。在Web DDS服務中,訪問控制的權限認證主要包括以下幾個方面:哪些用戶能夠訪問服務、每個用戶能加入哪些域、每個用戶能發佈或訂閱哪些主題。在Web-Enabled DDS規範中,對於訪問控制類的描述是定義一個權限檢驗方法,在用戶每次發起操作後調用來認證用戶是否有權限執行該操作。執行一次操作後,該用戶的信息將會保存在服務的Session中,在Session的有效時間內用戶執行某操作時,服務不需要重複對用戶的認證,從而減少了服務的重複工作。這也是Session在Web DDS服務中存在的必要性

        應用程序Application類的定義是爲了解決以服務爲基礎的實體可能存在短暫地與服務失去連接的問題。在DDS中,實體的生命週期包含在其對應的應用程序中,而在以Web爲基礎的分佈式環境中,Web用戶請求在服務端建立應用程序實體,並保存在服務端,而在Web環境中Web用戶可能會與服務失去連接,因此服務端的實體生命週期會超出Web用戶建立的應用程序的生命週期。應用程序類在服務端模擬了Web用戶創建的應用程序這一概念來避免上述情況。

                                                 

                                

        Web DDS服務中的Publisher對應於DDS中的Publisher,它是DataWriter類的工廠類,其主要的操作爲:創建數據寫者、刪除數據寫者、更新數據寫者、獲取數據寫者列表。

        Web DDS服務中的Subscriber對應於DDS中的Subscriber,它是DataReader類的工廠類,其主要的操作爲:創建數據讀者、刪除數據讀者、更新數據讀者、獲取數據讀者列表。

        對象的操作基本上圍繞着數據庫的四項操作進行。REST風格的Web服務爲請求應答類型,它提供四種操作POST、PUT、GET、DELETE可與Web DDS對象的操作——對應。此外,REST風格的請求格式也較爲簡潔,通過對資源的URI訪問即可完成。因此,本文將Web DDS服務模型與REST概念相結合,將Web DDS服務中的對象模型映射成REST風格的特定對象模型,從而實現REST風格的Web DDS服務.在REST風格的Web DDS服務中將服務中的對象描述爲資源,Web用戶通過HTTP協議對服務發起的操作方法分別映射成GET、PUT、DELETE、POST。服務返回給用戶的返回碼使用HTTP協議的響應碼。

                    

     具體的實現看論文吧,內容太多了。創新點就是Web DDS是的DDS的使用不在侷限於局域網。如果不方便下載閱讀的,留言“論文”,我給你發百度雲盤鏈接,我回復挺快的。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章