当前位置:首页 期刊杂志

面向数据的实时网络中间件的设计与实现

时间:2024-09-03

◆汤学达 张媛 孙文俊

(中国电子科技集团公司第二十八研究所 江苏 210007)

随着我军信息化建设的蓬勃发展,实时信息系统的体系结构呈现出以网络为中心的趋势,对信息交互能力的要求日益提高。因此,实时传输技术研究的目标是建立实时性强、可靠性高、安全性好的信息交换平台,提高系统互联能力,满足系统内各种信息交换和共享需求,并解决应用软件之间的数据共享和集成问题。

目前,我军的信息化系统中仍然大量采用端到端的面向连接的通信模式,当系统比较复杂时,该模式的维护性和扩展性都比较差。而在信息化系统中,除了发送的数据外,根据传输信道和使用场景的不同,用户可能对于传输的要求以及关注点也不尽相同。例如对于延时较长的传输信道,用户可能更关注于怎样才能保证收到的数据不过期。未来的信息化系统正在向着网络化和服务化的方向发展,而类似于CORBA 或者RPC 等传统的服务化通信模式可能无法满足我军实时信息系统的网络传输要求。针对上面的问题,参考DDS 规范,设计并实现了面向数据的实时网络中间件,可以实现通信节点和传输构件的即插即用;通过设计实时网络中间件的服务质量策略(Quality of ServicePolicies,QoS),优化我军实时信息系统的数据传输能力,大幅提高系统设计和功能拓展的灵活性;通过对于全局数据空间的设计,使用“主题”来标识信息流,实现类似于“服务总线”的“数据总线”,为上层应用提供透明的应用接口。

1 DDS 规范

DDS 规范是OMG 的有关分布式实时系统中数据发布的一个较新的规范[1-2](2004 年12 月发布1.0 版,2007 年1 月发布1.2 版)。DDS 规范采用了发布/订阅体系结构,但对实时性要求提供更好的支持。DDS 是以数据为中心的发布/订阅通信模型[3-5],并针对强实时系统进行了优化,提供低延迟、高吞吐量、对实时性能的控制级别、从而使DDS 能够广泛地应用于军事、航空、通信、交通运输、工业自动化、金融等领域。DDS 规范了实时分布式系统中数据发布、传递和接收的接口和行为,定义了以数据为中心的发布/订阅机制。DDS规范使用UML 语言描述服务,提供了一个与平台无关的数据模型。DDS 规范简化了实时分布式系统中数据高效、可靠地发布,它主要应用在要求高性能、可预见性和对资源有效使用的关键任务领域[6-7]。

图1 DDS 协议基本过程

如图1 所示,DDS 中以数据为中心的发布/订阅模型建立了一个逻辑上统一的“全局数据空间”的概念[8],通过全局数据空间来管理数据对象。“主题”提供了一个标志符,在全局数据空间中唯一地标识某些数据项,“数据发布者”和“数据订阅者”通过“主题”进行关联。“数据发布者”为向数据空间发布主题信息的应用程序,“数据订阅者”为从数据空间中获取主题信息的应用程序。通过这种方式可以实现在“数据发布者”和“数据订阅者”之间的松耦合。DDS 规范列举并正式定义了一整套的QoS,能利用QoS 进行系统控制。每一个实体都有自身QoS 策略,而且在每一对发布者和订阅者之间又都可以建立独立的QoS 协定。这使得DDS 可以很好地配置和利用系统资源、协调可预言性与执行效率间的平衡,以及能够支持复杂多变的数据流需求。目前,DDS 规范已被广泛应用于军事系统中,包括作战系统、船舶导航和控制系统、船舶防御系统、无人机驾驶系统和地面控制系统、装甲车辆控制系统、仿真和培训系统等,其典型应用系统包括美国海上作战中心(NSWS)高性能分布式计算系统(HiPer-D)、美国海军LPD-17 舰内广域网络、洛马美国海军宙斯盾(Aegis)武器系统、Ⅰnsitu无人机等。

2 软件设计

2.1 军事信息化系统对实时网络中间件的要求

由于在未来的军事信息化系统中,大量实时信息存在于提供信息的各个成员系统中,它们以信息流和数据存储的方式提供给信息用户使用。这些信息的传输既需要实时网络中间件实现网络化与服务化系统中的即插即用与松耦合,又要求实时网络中间件可以在极短的时间将消息传输给用户实现强实时性。不仅要保证消息可以快速正确的传递给用户,而且需要对信息的可靠性、持久性、丢报率、传送优先级等属性进行保证。

2.2 实时网络中间件理论建模

参考DDS 规范,将实时网络中间件划分为平台无关模型和平台相关模型。模平台无关模型是对平台无关部分进行的抽象,可以划分为结构模型,消息模型,行为模型和发现型等四个模型。其中,结构模型定义了实时网络中间件中的实体信息;消息模型定义了实时网络中间件中的消息格式;行为模型定义了实体间的动态行为;而发现模型则定义了实体间的发现方法,而平台相关模型则体现了每个平台的差异性,例如传输模型和安全模型等。平台无关模型和平台相关模型共同构成了实时网络中间件的理论模型,如图2 所示。

(1)结构模型

结构模型定义了DDS 规范中规定的一些核心实体,如图3 所示。在实时网络中间件模型中,实体之间在域内进行通信,每个实体又代表了一个参与者的集合,参与者包含本地通信端点,其中,通信端点又包括两种类型:数据发布者和数据订阅者,数据发布者和数据订阅者通过消息进行通信。其中,数据发布者在域内发布数据而参与者可以根据自己的需求获得数据。

图2 实时网络中间件理论模型图

图3 结构模型的核心实体

除了核心实体以外,为了通信的方便,结构模型还定义了一种数据对象——历史缓存。历史缓存主要用于缓存数据发布者发布以及数据订阅者接收的历史数据。历史缓存并不包括全部数据,其缓存的具体内容取决于QoS 的设置以及数据发布者与数据订阅者的实体状态。

(2)消息模型

消息模型定义了数据发布者和数据订阅者交互的消息格式,按照不同类型,可以将消息分为控制消息,数据消息,心跳消息等。其中,每个消息都包括消息头和消息体两部分,消息头中定义了协议号,验证报头等通用信息。消息格式按照标准的DDS 规范进行设计,可以很方便地支持标准协议以及进行相应扩展。

(3)行为模型

行为模型定义了实体间的动态行为。其中,数据发布者的行为包括创建主题,发布主题,发布数据,更改历史缓存等,数据订阅者的行为包括创建主题,订阅主题,接收数据,从历史缓存获取数据等。

(4)发现模型

发现模型定义了实体间的发现方法,其目的是使每个参与者自动地发现相关的参与者以及其通信端点信息。发现之后,实体间就可以根据数据的发布订阅规则进行通信。

而对于平台相关模型,每个平台的定义方式不同,在此不再进行介绍。

2.3 实时网络中间件框架设计

基于上文需求,参照实时网络中间件的理论模型,设计实时网络中间件的框架如图4 所示。其中,实时网络中间件采用分布式网络结构,每个主机的地位对等,保存与自身相关的发布/订阅信息,“全局数据空间”作为逻辑概念存在于整个系统中。

如图4 所示,参与的实体有数据发布者和数据订阅者。数据发布者通过发布订阅接口向发布订阅代理发布主题,数据订阅者则通过发布订阅接口向发布订阅代理订阅主题。而发布订阅代理则通过数据总线进行主题管理,消息匹配等功能,共同维护了一个逻辑上的全局数据空间。该设计方式有效避免了集中式网络结构中的信息交换瓶颈问题,简化了信息发布/订阅流程,任何网络节点出现故障都不会影响其他节点的正常通信,因此具有相对更好的便捷性和可靠性。

图4 实时网络中间件框架图

2.4 功能模块划分与实现

实时网络中间件平台处于应用系统和操作系统之间,分为发布订阅代理和应用程序接口两大部分,体系结构如图5 所示。

图5 中间件体系结构

中间件的主要功能模块可以划分为Socket 传输层,网络通信接口,QoS 配置模块,发布订阅接口以及发布订阅代理。

其中Socket 传输层对应于上文的平台相关模型,实现了对于操作系统的传输接口封装,为上层提供了统一的传输接口。通信接口通过调用Socket 传输层的接口,针对不同QoS,对于传输方式以及传输信道进行了自适应的匹配。QoS 配置模块通过发布订阅代理实现了对于QoS 的管理以及QoS 的自动匹配。而发布订阅接口则对下层接口进行了封装,提供了统一的接口,使得用户更加易用。发布订阅代理则维护了逻辑上的全局数据空间,实现了主题数据以及QoS 数据的全局共享。网络通信接口,QoS 配置模块,发布订阅接口以及发布订阅代理则参考上文的平台无关模型进行设计。

3 关键技术研究

3.1 全局数据空间

在实时网络中间件中,全局数据空间是整个中间件实现的核心。全局数据空间是一个虚拟的空间,实现了公共数据总线的管理和驱动,所有实时信息交换平台应用主机的地址空间均看作该空间的一部分;发布/订阅模型中消息主题的管理与匹配、发布者和订阅者连接事件通知、基于主题的消息交换等功能都基于全局数据空间完成[8]。其核心数据结构主要由参与者结构,主题管理表,历史缓存结构以及主题同步结构构成。

(1)参与者结构

定义参与者数据结构,该数据结构用来保存参与者的状态信息。其中,包括参与者标识,用来唯一的标识某一个参与者,参与者的端点信息,以及参与者的QoS 信息。

(2)主题管理表

定义主题数据结构用来保存主题的状态信息。其中,包括主题标识,用来标识某一个主题,主题名称,主题的QoS 信息,以及该主题的本地发布者集合,本地订阅者集合,远程发布者集合,远程订阅者集合,这些集合的数据都为参与者类型。而主题管理表是用来管理主题的,其数据结构为主题数据结构的聚合,包括当前注册的主题数目以及主题集合。

(3)主题同步结构

定义主题同步结构表示在一个主题需要同步时对外广播的数据结构。包括主题标识,用来标识某一个主题,主题名称,主题的QoS信息,以及本地的发布者与订阅者的集合。全局数据空间的主题管理表主要通过每个主机的发布订阅代理进行同步,如图6 所示,每个应用程序主要向本地的发布订阅代理进行数据的订阅与发布,本地节点的发布订阅代理通过网络和其他节点的发布订阅代理进行数据同步,最终可实现每个发布订阅代理都保存有整个网络所有节点的数据发布者与数据订阅者信息。

图6 数据同步方法

在整个过程中,有两个时机需要进行数据同步,一个时机是在数据发布者和数据订阅者发布或者订阅数据的同时,发布订阅代理立刻和其他代理进行同步,这样可以保证每个订阅发布代理的数据都能保持最新。另外一个时机是发布订阅代理周期性的进行数据同步,这样可以防止数据发布者和数据订阅者的异常情况。在发布订阅代理内部存有主题信息表,包括这个网络中所有发布和订阅的主题列表。每个主题内又有该主题对应的四个列表:本地发布者列表,本地订阅者列表,发现的发布者列表和发现的订阅者列表。主要的发布订阅过程如图7 所示。

图7 实体发现流程

(1)数据发布者发布主题时将自身信息添加到发布订阅代理对应主题的本地发布者列表中;

(2)数据订阅者订阅主题时将自身信息添加到发布订阅代理对应主题的本地订阅者列表中;

(3)发布订阅代理同步主题时,将该主题对应的本地发布者和本地订阅者列表通过广播的方式发给其他网络节点的发布订阅代理;

(4)其他网络节点的发布订阅代理收到同步的主题数据时将收到的发布者和订阅者列表添加到对应主题的发现列表中。

通过以上方法进行数据同步既可以实现每个发布订阅代理都保存有完整的数据发布者与数据订阅者信息,又保证了网络中需要同步的数据量较少,最大限度地避免了同步数据的重复发送。

3.2 QoS 保障

QoS 为数据发布者和数据订阅者提供了灵活的传输配置策略,发布者和订阅者通过配置这些QoS 参数可以实现灵活的数据分发策略,优化数据传输过程,而网络中间件负责对这些QoS 参数进行匹配,这样可以增加通信灵活性,减轻开发者的开发工作。DDS 规范中总共包括22 类QoS。针对实际需求,实时网络中间件中将平常比较少用的QoS 进行精简和修改,总共实现了15 类QoS 策略。其典型QoS 介绍如下:

(1)可靠性策略

在实时网络中间件中,可靠性是可选的,并且是可配置的。使用者可以根据自身的需求选择是最有效的还是最可靠的传输策略。可靠性策略维护在数据传输过程中的数据丢失问题,对于高数据丢失率(超过20%)的实际应用是非常有效的。

(2)保鲜策略

接收方在收到数据但一直没有处理的情况下,有新数据到来,设置缓冲区中是保留最新的,还是全部保留;如果只保留最新的,设置可最多保留多少条。保鲜策略主要用于高延时的应用中,可以避免在高延时的情况下由于缓冲区满而导致接收方收到“过时”的数据。

(3)持久化策略

表示如果数据订阅者在中途订阅一个主题时,是否会收到之前已经发出的数据,即数据生产者会缓存发出的数据多久,如不缓存,直到进程退出,一直保留(持久化)。通过持久化策略,使用者可以根据自己的需要对于之前发送的数据进行持久化,对于某些经常“宕机”的应用,该策略可以避免数据丢失,极大地增强应用的鲁棒性。

4 结论

本文引入了DDS 规范,研究了其关键技术,设计并实现了实时网络中间件。该中间件以数据为中心,有松耦合,高可用等特点,同时又可以通过对QoS 的设置优化传输过程,增强传输的灵活性。该中间件可以为应用软件系统提供了一个有组织的数据总线,使得应用软件在开发、集成、维护、扩展等各个阶段更加方便,使得应用软件系统在需求变更、功能扩展等各方面的反应更加敏捷,提升指挥信息系统整体集成能力;并通过实时网络中间件提供的信息传输QoS 策略保障实现应用对传输过程的最优控制,从而更好地支撑多种业务的信息传输需求。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!