曹建平+于辉+周秀芝
摘 要:针对分布式系统集成中存在的紧耦合问题,提出一种以数据为中心的分布式系统自适应集成方法。首先分析了分布式系统集成业务紧耦合性问题的原因并给出解决的一般通用方法;然后在借鉴OMG数据分发服务(DDS)规范的DCPS模型和基于中心信息节点的发现机制的基础上,进一步提出在网络中间件中添加协商模块,实现通信合约的自适应缔结,进而给出了分布式系统集成的总体架构和相应的集成信息模型及其转换流程;最后,基于该方法开发的软件模块将独立设计的3个应用集成为一个温度推送分布式系统,集成时仅需约定共用的元数据信息即可达到通信质量要求。结果表明,基于以数据为中心的分布式集成方法既可以达到系统耦合松散化要求,又能保证系统通信服务质量,适用于完成分布式系统快速灵活有效的集成。
关键词关键词:分布式系统;系统集成;紧耦合;自适应;DDS规范
DOIDOI:10.11907/rjdk.161916
中图分类号:TP301
文献标识码:A 文章编号文章编号:16727800(2016)011000405
基金项目基金项目:国家自然科学基金重大研究计划项目(91538201);泰山学者工程专项(ts201511020)
作者简介作者简介:曹建平(1984-),男,内蒙古通辽人,硕士,海军航空工程学院青岛校区军用虚拟仿真研究与训练中心助理工程师,研究方向为分布式仿真、计算机生成兵力;于辉(1971-),男,山东诸城人,海军航空工程学院青岛校区军用虚拟仿真研究与训练中心博士研究生,研究方向为分布式仿真;周秀芝(1977-),女,山东青岛人,博士,海军航空工程学院青岛校区军用虚拟仿真研究与训练中心讲师,研究方向为视景仿真。
0 引言
自上世纪90年代Sun公司提出“网络就是计算机”以来,分布式计算、云服务、大数据等分布式技术得到了越来越广泛的应用。实现分布式的一个方式是将原来独立设计和运行的异构系统集成起来,但由于异构系统间固有的多维度差异性,随着集成复杂度增加,系统紧耦合问题愈发严重,从而导致系统集成的难度和风险大幅提高,美国“福吉谷”号事件就是一个典型案例[1]。
为破除这种紧耦合特性,最新研究采用中间件来屏蔽各子系统差异,并通过添加中心信息节点实现自动发现和匿名通信机制,从而达到系统集成的耦合松散化和接口动态化[2]。相关研究中,以数据为中心的分布式系统集成方法是实现实时分布式系统集成较好的解决方案[34]。为此,OMG组织制定了数据分发服务(DDS)标准,并涌现了OpenDDS、RTI DDS及OpenSplice DDS[5]等软件实现。DDS利用以数据为中心的发布—订购通信模型(DCPS)实现集成系统间数据耦合的松散化和多对多通信,利用集中信息库模型实现自动发现和匿名通信机制,并通过QoS策略保证通信服务质量[1]。基于以上机制,DDS一定程度上实现了系统间的耦合松散化,但由于采用静态QoS机制,数据生产者和消费者需事先指定QoS策略,否则会导致失配从而无法完成通信。这种策略信息的事先指定仍然是信息冗余的,无法实现动态、自适应配置,不利于系统的快速集成[6]。
针对上述问题,提出一种以数据为中心的分布式系统自适应集成方法,该方法在采用发布—订购通信模型和中心信息节点的基础上,将数据生产者角色定位为通信质量约束方,将数据消费者角色定位为通信质量需求方,通过在网络中间层添加协商模块实现通信质量策略的自动配置;将系统集成元数据进一步限定为业务交互数据,从而降低了耦合性。基于该方法开发了相应的软件模块,并用一个温度推送系统进行了验证。试验结果表明,基于该方法进行系统集成既能使耦合松散化,同时保证了通信质量。
1 分布式系统内在紧耦合性成因分析
一般而言,分布式系统指组件分布在网络计算机上且通过消息传递进行通信和动作协调的系统[7]。分布式系统实际上是由多个独立设计、异构的、分散控制且动态改变的系统组成的大系统,可称为“系统组成的系统”(System of Systems)[1]。为构建这样的体系,需要采用合适的系统集成技术才能达到分享分布式资源的目的。
分布式系统中各子系统设计相互独立,一般不存在统一的系统架构(尤其对于大规模分布式系统),相互的耦合关系是自然形成的动态复杂网络,耦合复杂度由业务联系的复杂性决定。因此,分布式系统具有内在的紧耦合特性。这种紧耦合特性体现在两方面:①由于各子系统是独立设计的异构系统,天然存在的差异性形成集成壁垒;②分布式系统网络构成复杂,集成复杂度大大增加,如图1所示。
针对上述问题,有两种研究趋势使耦合松散化[78]:一是通过屏蔽子系统差异性来降低耦合;二是通过添加中心节点来降低集成复杂度,下面分别予以概述。
1.1 通过屏蔽子系统差异性降低耦合
图1所示分布式系统中的多个子系统是异构的,存在语言差异、平台差异、协议差异和数据差异,这种差异性给分布式系统集成带来了极大困难。因此,一个自然的技术路径是通过标准化来屏蔽差异性,进而降低系统接口间的耦合性。该方面的工作比较普遍,在基础设施方面,TCP/IP协议实现了异构跨平台通信,各个操作系统都实现了跨硬件平台,Java等编程语言实现了可移植跨平台等;在集成技术方面,采用中间件技术屏蔽差异性,如先后出现的远程过程调用技术、分布式对象技术以及实时CORBA对象技术等[9]。如图2所示,在每个子系统上添加一个标准化的中间件“外壳”,从而降低了子系统间的集成难度。
上述技术虽然不同程度上使系统间的耦合松散化,但由于其以对象为中心,采用的是点对点(PeertoPeer)通信,子系统间除了业务上的联系,还要事先获取通信对方的网络地址,因此系统集成的网络复杂度仍然为O(n2),系统集成难度在复杂程度上未得到降低。
1.2 添加中心节点降低网络复杂度
降低集成复杂度的一个做法是加入一个中心节点[6],如图3所示,采用C/S通信模式将各子系统共享资源发放到中心节点,再由中心节点分发到各子系统。该模式使系统集成复杂度由O(n2)降低到O(n),但最大的问题是中心节点负载过大,容易带来通信瓶颈和单点失效等问题。
1.3 基于发布—订阅通信模型的系统集成方法
针对以上不足,出现了一种发布—订阅通信模型,该模型从分布式系统共享资源的目的出发,将各子系统的角色分为资源生产者和资源消费者两种。生产者发布资源,消费者订阅资源。以资源为中心,通过某种自动发现机制使资源生产者能够将合适的资源以适当方式匿名送到资源消费者处,从而完成无缝、透明的集成[9]。如图4所示,在该模式下的中心节点不是数据集散地,而是作为信息交换中心,数据生产者和消费者在该中心进行注册,并完成信息的交换与匹配。数据通信在子系统之间直接进行,不用通过中心信息节点,因此不存在负载过大的问题,从而解决了中心节点的通信瓶颈问题。
从发布—订阅基本思想出发,出现了两种分布式集成方式[10]:一种是以服务为中心,从共享功能的目的出发实现分布式系统互操作,该方式以Web服务技术为代表;第二种是以数据为中心,以共享实时数据为目的,该方式以OMG的DDS标准和相关技术为代表。两种技术各有其应用和优势,其中,在实时分布式系统中,DDS得到了广泛应用。
DDS是通过QoS策略协调数据发布者和数据订阅者之间信息模型的匹配,自动建立各子系统之间的“通信合约”,从而提供了保证通信质量的机制。在该模式下,需要数据发布者和数据订阅者事先指定QoS策略,如果不匹配,通信将无法继续进行。因此,应用DDS技术进行集成的各子系统除了约定交互的元数据外,还要约定QoS策略,这对降低系统耦合是不利的。本文提出的分布式集成方法针对这一问题进行了改进,通过引入协商机制以自适应缔结通信合约,从而取消了QoS策略的事先约定过程,进一步降低了系统集成的耦合性。
2 以数据为中心的分布式系统自适应集成方法
从数据共享的角度看,系统集成的目的是按照某种事先制定的协议进行信息交互,减小系统耦合性实际上是避免协议信息的冗余。一般把协议信息称为元数据,在互联网框架下的通信过程不但要约定通信内容,还要指定好通信双方的网络地址,对于复杂应用还要针对通信的可靠性、实时性制定相应的服务质量策略,从而对分布式系统集成带来障碍。
在多对多通信模式下,数据发送方不需要也不可能获取所有数据接收方的地址信息和通信要求。因此,元数据信息应当只包括通信内容信息,其它通信节点和通信策略应当通过特定机制自动获取。按照以上思路,参考数据分发服务(DDS)的实现,在已有的基于话题的发布-订阅模型和基于中心信息节点的发现机制基础上,通过在网络中间件中添加协商模块实现通信服务质量的自适应配置,不但能完成通信地址的自动获取,并且实现了通信服务质量的自适应缔结。下面给出以数据为中心的分布式系统集成的总体架构和信息模型及其传递过程。
2.1 总体架构
为使系统集成耦合松散化,将应用程序之间约定的接口限定在元数据层面,通信合约通过发布方与订阅方协商自适应获取。图5为以数据为中心的分布式系统集成总体架构。在该架构中,将分布式系统分为3个层面,分别是应用层、中间层和传输层。
应用层是待集成的多个独立的应用程序,共用数据结构信息(元数据)的约定是应用程序之间进行交互的必要前提。应用程序应约定且仅约定元数据信息,这是以数据为中心的分布式系统集成所追求的目标。
传输层功能比较单一,仅完成样本数据的传输任务,不涉及业务逻辑与协议。完成传输任务的前提是完备的通信信息,这些信息内容至少包括:向哪里发送信息(从哪里接受信息)、通信协议、采取的通信策略等,这里将上述通信所需的完备信息称为通信合约信息。传输层中的传输件实现可以采用TCP/IP协议原生的Socket接口,也可以利用一些现成的网络库,是可插入、替换的软件模块。
中间层起承上启下作用,负责将约定共享的元数据以及应用程序本身的一些通信相关信息转化为传输件所需的通信合约信息,同时还负责在应用程序与传输件之间传递样本数据。中间层包括两部分,分别是中间件和中心节点,中间件由写模块、读模块、发布模块、订阅模块和协商模块组成。中间件的写模块和读模块负责传递样本数据;发布模块、订阅模块和协商模块与中间节点(以守护服务或单独进程形式存在)一起负责约定元数据信息向通信合约信息转换。
按照总体架构,完成系统集成需要以下工作:元数据约定、通信前握手和样本数据传输,如图6所示。从用户角度看,元数据约定是用户进行系统集成唯一要做的,从而最大化地弱化了接口,减轻了集成耦合性。
由于应用程序约定信息的不完备性,系统在进行通信之前要通过中间层的中间件和中心节点进行握手,以取得样本数据交互的完备信息。下面给出握手阶段各信息模型及其传递转换过程。
2.2 握手阶段的信息模型及其传递
握手阶段是通信的准备阶段,需将作为源信息的元数据约定转化为能为传输件通信提供支持的完备的通信合约信息,图7给出了握手阶段的信息传递过程。
注意信息模型中的发布方关键字是可选的,需要指定明确只订阅该关键字代表的发布源,否则可任选相同元数据标识符下的发布源。
发布模块和订阅模块分别将发布方注册信息和订阅方注册信息发送到中心节点进行注册。中心节点作为一个记录器和监听器,当有新信息进行注册时,首先记录相关信息并遍历已有的注册信息,如果具有相同话题则进行匹配,给出通信匹配信息。通信匹配信息是具有相同话题的发布方注册信息和订阅方注册信息的集合,进一步将通信匹配信息发送到数据生产者所在的中间件,通过协商模块的处理形成通信合约信息,并分别通知数据生成者和数据消费者的传输件,从而完成生产者应用与消费者应用的握手。
由此可知,建立通信过程中应用程序之间唯一纽带的是元数据,细节都封装在中间件中完成,从而做到了以数据为中心的无缝、透明集成。
2.3 基于协商机制的通信合约自适应缔结
数据生产者作为数据源向多个数据消费者提供数据,而数据消费者对数据服务的需求不同,因此数据生产者应能就同一数据按照不同的消费者需求提供个性化的数据服务,这是以数据为中心的分布式系统集成的核心所在。在传统方法中,通信服务质量(QoS)策略的对接作为集成接口放在系统集成之前完成,该方法实际上加大了系统集成的耦合性。本文认为应将这一过程延迟到通信过程中由中间件自适应完成,具体由图6所示的协商模块完成。
数据生产者本身具有一个数据生产能力的属性,这是数据生产者的固有属性,可表现为数据生产速率、最大负载量等,生产能力信息在通信合约的缔结过程中表现为通信约束信息;数据消费者根据应用需求可提出一些通信需求,比如可靠性、截止期限要求等,将通信需求建模为通信需求信息。在本文提出的框架中,通信约束信息和通信需求信息根据话题信息由中心节点匹配后传到数据生产者处,由数据生产者中的协商模块根据特定的协商算法给出两者的通信合约,这就是基于协商机制的通信合约自适应缔结过程。图8给出该架构下通信合约缔结交互序列图。
通信协议信息定义了采用的网络通信协议,包括TCP、UDP、组播等,而通信策略信息主要定义了保证通信服务质量的必要信息。由通信合约信息模型可知,话题信息、发布方和订阅方节点信息可通过中心节点平台匹配直接获得,而通信协议信息和通信策略信息则是通过协商模块的协商算法取得。协商算法可根据系统需求进行定制,是可插入的软件实现模块。
3 验证
根据以数据为中心的分布式系统自适应集成方法设计了原型软件,包括:中间件软件模块、中心节点服务程序、可插入的传输软件模块和协商算法库。为实现跨平台,数据通信采用TCP/IP协议,软件开发采用标准C++库,同时约定元数据采取OMG IDL语言进行定义,以屏蔽应用程序开发语言的差异性。下面以一个温度推送分布式应用说明该方法的有效性。
现有3种应用程序需要进行集成。应用一是连接了温度传感器的嵌入式系统,其提供某记录点以1 000次/秒频率更新的温度数据;应用二是一种气温实时记录系统,要求记录间隔不大于10ms,且温度变化0.5度以上时能及时通知;应用三是手机移动端的温度报告应用程序,其要求更新频率为100ms。分别对3种应用进行独立开发,根据本文提供的以数据为中心的分布式集成方法进行了系统集成,并按照如图9所示进行了部署。
从该案例可看到,以数据为中心的分布式系统自适应集成方法只需约定好应用之间的元数据接口,即可自适应地完成通信合约的缔结,从而最大化地降低了系统集成耦合度,为分布式系统集成提供了一种新方法。
4 结语
分布式系统集成具有内在的紧耦合特性,因此集成难点在于如何将系统间的接口信息最小化、动态化以支持增量开发和独立开发。本文在以数据为中心的系统集成方法基础上,进一步提出系统集成接口信息应将通信服务信息排除在外,仅局限于元数据信息,通信服务质量信息由中间件动态自适应获取以使耦合松散化。基于该思想给出了以数据为中心的分布式系统自适应集成总体架构,并结合一个分布式温度推送实例,说明该方法在保证耦合松散化的前提下能快速进行系统集成,为构建以数据为中心的大规模分布式系统提供了一个较好思路。
参考文献:
[1] 任昊利,李旺龙,张少扬,等.数据分发服务——以数据为中心的发布/订阅式通信[M].北京:清华大学出版社, 2014:15.