面向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的使用不在局限于局域网。如果不方便下载阅读的,留言“论文”,我给你发百度云盘链接,我回复挺快的。

 

 

 

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