实时数据分发服务的自动发现技术
2017-02-22刘云飞
邹 歌,刘云飞
(1.香港城市大学,香港 999077;2.江苏自动化研究所,江苏 连云港 222006)
实时数据分发服务的自动发现技术
邹 歌1,刘云飞2
(1.香港城市大学,香港 999077;2.江苏自动化研究所,江苏 连云港 222006)
DDS是OMG专门针对实时分布式系统颁布的数据分发国际规范,其核心在于提出了“全局数据空间”的思想,从而实现了系统松耦合、强实时、高可靠和高吞吐量等特性。介绍了DDS基本通信模型,总结归纳了核心实体角色间的逻辑关系,分析了“全局数据空间”概念模型,重点研究了构建该模型的关键技术——实体远程自动发现技术,包括域参与者层和发布-订阅端点层的双层自动发现机制,以及实体自动发现的协议过程、控制逻辑和加入/退出的更新机制。利用该技术可以设计和开发系统监控软件,实时监听和分析系统发布和订阅状态信息,记录历史数据,提供完整且直观的系统通信拓扑结构,使开发者更好的理解分布式系统、校正系统设计、调配性能参数、优化系统集成和扩展。
数据分发服务;发布-订阅;自动发现;全局数据空间
0 引 言
实时数据分发系统是指采用数据分发服务(Data Distribution Service,DDS)消息总线技术的实时分布式系统[1]。数据分发服务是国际对象管理组织(OMG)为了解决“在正确的时间、正确的位置获取正确的数据”的需求而制定的国际规范。该规范标准化了分布式实时系统中数据发布、传递和接收的接口和行为,定义了以数据为中心的发布-订阅(Data-Centric Publish-Subscribe)机制,支持丰富的服务质量控制策略QoS,具有强实时、高性能、高可靠和松耦合等特点。它主要应用在要求高性能、可预见性和对资源有效使用的关键任务领域[2],如舰船控制、武器控制、工业控制和实时金融交易系统等。
1 DDS介绍
DDS规范最突出的特点在于其提出并定义的以数据为中心的发布-订阅模型,并列举和正式定义了一整套完整的服务质量控制策略QoS[3]。
1.1 发布-订阅模型
以数据为中心的发布-订阅模型为所有分布式节点之间建立了一个虚拟共享的“全局数据空间(Global Data Space,GDS)”[4]。在该模型下,数据发布者只需用一个简单的主题(Topic)向“全局数据空间”声明自己要发布的数据,并通过配置QoS说明自身提供的服务质量级别,然后就可以向该空间发布数据;同样,数据订阅者也只需用一个主题向该空间声明自己感兴趣的数据,并配置QoS策略说明自己需要的服务质量级别,便可从该空间订阅数据。发布者和订阅者之间都不需要关心对方是谁、有没有在线、网络IP或者端口信息等信息,全局数据空间模型如图1所示。
图1 全局数据空间模型
图中的2个发布者Pub-A、Pub-B分别向GDS发布主题为A、B的数据,4个订阅者Sub-A、Sub-B1、Sub-B2、Sub-C分别从GDS订阅主题A、B、B、C,由于Pub-A和Sub-A主题相同,两者之间根据匹配规则建立发布-订阅关系,数据自动由Pub-A推送到Sub-A,同样Pub-B与Sub-B1、Sub-B2也实现了主题B的发布和订阅。由于GDS中还没有主题C的发布者,Sub-C暂时订阅不到任何数据。
分布式节点上的应用程序只需要调用DDS标准API即可完成数据的发布和订阅,DDS中间件“自动发现”远程通信节点,并根据主题数据类型(TopicType)、主题名称(TopicName)相同且QoS策略匹配的规则自动建立发布-订阅关系,发布者和订阅者两者之间就像建立了虚拟连接,订阅者可以直接从发布者订阅数据。DDS完全自动地将数据从发布者传送到数据订阅者,这些对上层开发者或者App是完全透明的。
该模型主要有如下优点:
(1)系统中所有分布式通信节点间都是对等关系,由于不存在中心节点,也就不存在服务器瓶颈和单点失效问题,某个通信节点的崩溃或瘫痪不会影响其他节点,因此系统可靠性明显增强。
(2)实际数据的传输是直接由发布者“推”向订阅者,中间不经过任何服务节点,也无需发送“请求”信息,因此系统具有很强的实时性和高效性。
(3)没有传统Socket客户端/服务器的IP或端口号概念,还没有服务器必须先启动、双方必须同时在线的紧耦合苛刻约束,数据发布者和订阅者可以随时随地加入或退出“全局数据空间”,在时间和空间两个方面保证了系统的松耦合性,大大提高了系统的灵活性和扩展性。
1.2 服务质量控制策略QoS
DDS规范正式定义了一整套完整的服务质量控制策略QoS。通过配置合适的QoS,应用程序能在通信效率、通信质量和系统资源占有率三者间找到最优或极优的平衡点,不仅能满足系统对复杂多变数据流的需求,还可以很好地配置和利用系统资源,提高通信效率。服务质量控制策略QoS将资源的可用情况、提供方对资源的占有程度及请求方对资源的期待程度分别程序化为主题QoS、发布者QoS和订阅者QoS,QoS参数虚拟了底层的整个通信机制[5-6]。
2 各实体角色之间的逻辑关系
发布-订阅通信模型将系统划分为逻辑独立的若干域(Domain),每个域内包含若干实体角色(Entity),由这些实体角色完成数据的发布、订阅及其他交互任务,其核心的实体角色包括:域参与者(DomainParticipant)、发布者(Publisher)、订阅者(Subscriber)、主题(Topic)、数据作者(DataWriter)和数据读者(DataReader)。这些实体角色都有与其对应的若干服务质量控制策略QoS,每对连接的发布端点和订阅端点之间也可以建立独立的QoS协定。下面简要地说明发布-订阅模型以及各实体间的逻辑关系,如图2所示[7-8]。
(1)Domain是一个范围概念,由域号(DomainID)唯一标示,只有在同一个域内的通信实体才能通信,不同域内的实体间无任何逻辑关系,因此域构建了一个虚拟通信网络,将同一物理网络上的不同应用系统从逻辑上相互隔离。
(2)DomainParticipant作为数据分发服务的入口点,包含若干发布者、订阅者和注册主题,负责创建、删除和管理这些实体。
(3)Publisher作为发布者角色,至少包含一个DataWriter,并负责创建、删除和管理DataWriter。同样,Subscriber作为订阅角色,至少与一个DataReader关联,并负责创建、删除和管理DataReader。
(4)DataWriter具体负责发布数据,数据发布者通过调用DataWriter的write()函数发布数据,但数据不会立刻被送出,实际的消息产生是通过Publisher和QoS综合控制的[7]。
(5)DataReader负责订阅数据,订阅方式可采用异步方式(Listener)、同步方式(WaitSet)和非阻塞三种。对于DataWriter与DataReader共有的QoS策略,DataWriter提供的服务质量级别都应该等于或者超过DataReader请求的服务质量级别,只有两者QoS兼容时才建立通信过程,否则QoS匹配失败。
图2 DDS各要素组成模型
(6)Topic是DataWriter和DataReader相互通信时约定的主题,每个DataWriter/DataReader必须与一个主题绑定,相互通信的DataWriter与DataReader之间的主题数据类型必须相同、QoS必须匹配。另外,Topic必须有确定的数据类型,数据类型通过基本类型char、byte、int等进行定义。
(7)Sample:即更新数据,是DataWriter和DataReader之间传送的数据,也是Topic的一个具体值。
另外,所有DDS实体都有与其对应的监听类(Listener),用以监听其状态的改变,比如当DataReader有新数据到达或QoS改变等状态变化时,会触发与其关联的Listener类的回调函数,即时通知应用程序,应用程序再读取数据或采取其他动作处理该事件[3,6]。由以上分析可以看出,DomainParticipant与DataReader、DataWriter之间具有明显的层次和所属关系。一个DomainParticipant可包含若干DataReader和Data Writer。
3 自动发现技术原理
实际上,表面展现的智能化越高,底层实现的机制就越复杂。DDS中间件自动地将数据从发布者推送到订阅者这一“智能”过程需要复杂的内部数据结构、高效的发布-订阅关系匹配算法和自动发现技术做支撑,其关键技术就是数据分发服务的远程自动发现技术。“全局数据空间”模型的关键点在于,每个分布式节点的数据空间内并没有存放该空间内的全部数据,而只存放了其感兴趣的一部分数据,DDS通过双层自动发现技术建立了一个虚拟“全局数据空间”[9-10]。
所谓实体自动发现是指不同分布式节点上相互通信的DDS内部实体角色DomainParticipant、DataWriter、DataReader之间能够自动地相互发现对方、自动建立发布订阅关系,进而自动完成数据由发布者到订阅者的过程,这些后台处理对上层DDS应用(App)开发者是完全透明的。自动发现技术在后台为每个域参与者构建了一个全局的发布-订阅关系拓扑图,域参与者能够与远程通信的其他域参与者构建虚拟连接,准确地将上层传递的相关主题数据由发布者“推送”到订阅者[11]。
基于以上分析的DDS内部核心实体角色的功能定位和逻辑关系,将自动发现技术划分为两个逻辑层:域参与者层和发布-订阅端点层。域参与者层主要完成本地域内参与者与远程参与者之间的自动发现,为每个域参与者构建可能与其具有通信关系的其他远程域参与者的拓扑结构;发布-订阅端点层是在前一层已经构建的参与者之间通信拓扑关系的基础上,具体构建发布端点和远程订阅端点之间的发布-订阅关系,建立分布式节点之间的虚拟连接。这两层之间具有严格的先后顺序关系,只有第一层的域参与者自动发现完成后,才能进入第二层发布-订阅端点自动发现。
3.1 域参与者自动发现
域参与者层自动发现技术主要是通过各个分布式节点内部的DDS交换域参与者描述信息(participantDATA),并实时动态维护该信息组成的数据库来实现[3,12]。participantDATA内部包含了参与者的全局唯一标识符(GUID)、网络地址IP、采取的QoS策略等信息,其传输通过DDS内置的专门订阅和发布此主题数据的p-DataReader和p-DataWriter完成。这两个实体与普通DataReader和DataWriter的主要区别在于,其对用户是隐身的,完全由DDS内部来管理。以A和B两个分布式节点为例(NodeA和NodeB),具体说明其中的协议过程和控制原理,如图3所示[11]。
(1)NodeA内部DDS创建域参与者时,以best-effort方式通过p-DataWriter向外广播发布participant-A-DATA数据,发布过程以周期(periodtime)形式进行,并且在第一个周期内,随机发送N次重复数据包,periodtime和N通过QoS策略预先配置。
图3 域参与者层自动发现协议控制过程
(2)当NodeB内部DDS创建域参与者时,与步骤(1)过程相同,也以广播方式向其他域参与者发布participant-B-DATA数据。
(3)当NodeA节点p-DataReader收到该participant-B-DATA主题数据后,将根据预先配置的QoS策略判断是否需要响应,若不需要与NodeB通信,就忽略该信息;若需要,则将该participant-B-DATA数据添加到本地信息库,并在预先配置的响应时间内向NodeB发送其已经创建的参与者信息participant-A-DATA。
(4)与过程(3)原理相同,NodeB收到participant-A-DATA后,将此域参与者信息记录到本地信息库。
至此,NodeA与NodeB交换了彼此的DDS参与者信息,并记录在本地信息库中,参与者自动发现过程结束。图中①和②分别表示NodeA和NodeB的服务质量控制策略QoS配置的随机发送的合理时间。
DDS在三种事件触发下,需要发送participantDATA通知其他DDS节点,分别是:(a)创建域参与者;(b)删除域参与者;(c)该域参与者的服务质量控制策略QoS改变时。(b)与(c)的过程与上面说明(a)的协议过程相同。在远程DDS收到participantDATA后,应实时更新本地信息库,以保证发布-订阅关系的实时更新。这个信息库就跟路由表一样,准确描述了参与者之间的通信关系,从而建立了域参与者的系统通信拓扑关系图。
3.2 发布-订阅端点自动发现
发布-订阅端点层的自动发现技术目的在于,通过构建系统发布-订阅关系,从而构建“全局数据空间”的虚拟连接。该部分通过DDS域参与者之间自动交换其所属的发布端点描述信息(publicationDATA)和订阅端点描述信息(subscribeDATA)来实现。publicationDATA和subscribeDATA的交换通过DDS中间件内置的两对数据作者和数据读者发布和订阅完成,分别是pb-DataReader、pb-DataWriter和sb-DataReader、sb-DataWriter。域参与者层自动发现结束后,会触发域参与者之间的匹配事件,即将域参与者与远程域参与者之间的pb-DataReader/sb-DataReader和pb-DataWriter/sb-DataWriter分别进行匹配,匹配成功以后,通过reliable方式进行发布和订阅。
在创建DataReader/DataWriter时,域参与者基于已构建的域参与者通信关系信息库,向与其通信的其他域参与者广播新创建的Reader/Writer的描述信息publicationDATA和subscribeDATA,以声明该域参与者创建了新的发布或订阅端点,其他远程域参与者收到后,将这些信息与本地订阅端点或发布端点匹配,若成功,则建立新的发布-订阅关系,并将这些信息添加到本地发布端点和订阅端点信息库。另外,当域参与者所属的DataReader/DataWriter的QoS策略发生变化或被删除时,也会触发publicationDATA/subscribeDATA的发布事件。这些内部实体的发布-订阅过程也对上层用户完全透明,使DDS系统开发者将精力更多地放在业务逻辑处理方面。以NodeA内部创建数据作者DataWriter C为例具体说明协议过程和控制原理,如图4所示。
图4 发布-订阅端点层自动发现协议控制过程
(1)NodeA的域参与者创建数据作者DataWriter C时,本地的pb-DataWriter会向NodeB发布该DataWriter C的端点描述信息publication C DATA,并向NodeB发送HB(F=0),请求NodeB发回确认ACKNACK。
(2)NodeB订阅到publication C DATA后,将其与本地的DataReader相匹配,若匹配成功,则建立发布-订阅关系,并更新本地发布-订阅端点信息库,否则,忽略该信息,最后向NodeA返回确认ACKNACK,表明已收到该信息。
当DataWriter C的QoS策略改变和被删除时的过程与创建的协议过程和控制原理相同。图中①和②分别表示NodeA的pb-DataWriter和NodeB的pb-DataReader服务质量控制策略QoS配置的随机发送的最小确认时间和合理确认时间[8,13]。
4 应用测试
基于双层自动发现技术开发DDS系统监听分析软件,可以直观显示系统发布-订阅状态和通信拓扑关系,并实时监听关键实体角色的QoS变化,帮助DDS开发者调试和快速定位系统问题。在DomainID为0的域内创建2个主题,分别为Square、Circle,针对Square主题创建DataReader和DataWriter,Circle主题仅创建DataWriter。由图5的测试结果表明,DDS监听分析软件能够正确监听系统内的发布和订阅匹配状态,直观显示系统的发布-订阅关系拓扑结构。
图5 发布-订阅关系匹配结果
5 结束语
数据分发服务适用于大规模分布式系统,以解决大量周期数据的实时通信问题[10,14],在未来大数据时
代将有更广阔的应用空间。利用文中介绍的自动发现技术设计和开发系统监控软件,实时监听和分析系统发布和订阅状态信息,记录所有历史数据,提供完整且直观的系统通信拓扑结构,使开发者更好地理解分布式系统、调配性能参数、优化系统集成和扩展。
[1] 杨传顺,王学万.实时数据分发系统的服务质量控制的研究[J].计算机技术与发展,2011,21(5):231-234.
[2] 张大海,赖兰剑,陈鼎才.DDS在分布式系统仿真中的应用[J].计算机技术与发展,2011,21(3):250-252.
[3] Connext DDS core libraries users manual version 5.2.0[M].[s.l.]:RTI,2015.
[4] 李 军.数据分发服务中的全局数据空间(GDS)的研究与设计[J].舰船电子工程,2010,30(4):62-64.
[5] 王 珩,聂 敏,黄四牛,等.一种基于DDS的战术信息栅格信息分发方法[J].现代防御技术,2011,39(2):89-94.
[6] Data Distribution Service (DDS)version 1.4[S].[s.l.]:[s.n.],2015.
[7] 王 斌,林怀清,林海涛.战场态势数据分发技术研究[J].舰船电子工程,2011,31(5):9-11.
[8] 任昊利.数据分发服务:以数据为中心的发布/订阅式通信[M].北京:清华大学出版社,2014:89-102.
[9] 杜涛涛,张庆杰.朱华勇.面向实时数据分发服务的DDS性能研究[J].微计算机信息,2010,26(8-3):155-158.
[10] Data distribution service getting started guide version 4.5c[M].[s.l.]:RTI,2010.
[11] The Real-time Publish-Subscribe Protocol (RTPS) DDS interoperability wire protocol specification version 2.2[S].[s.l.]:[s.n.],2014.
[12] 杨传顺.以数据为中心的舰载分布式系统[J].舰船科学技术,2011,33(7):75-78.
[13] Twin Oaks Computing.What can DDS do for Android[EB/OL].2012.http://www.omg.org/hot-topics/documents/dds/Android_and_DDS1.pdf.
[14] Interface Definition Language (IDL) version 3.5[S].[s.l.]:OMG,2014.
Automatic Discovery Technology of Real-time Data Distribution Service
ZOU Ge1,LIU Yun-fei2
(1.City University of Hong Kong,Hong Kong 999077,China; 2.Jiangsu Automation Research Institute,Lianyungang 222006,China)
DDS,a international specification promulgated by Object-Manage-Group (OMG),focuses on real-time distribution system communication and puts forward the key Global Data Space (GDS) thought,which is decoupling,real-time,high reliability and throughput.The communication model of the DDS is introduced,the logical relationship between the key roles is summed up,and the GDS idea analyzed.Then the Automatic Discovery Technology for remote entities,as the key technology of GDS,is researched,which includes two layer automatic discovery mechanism (participant layer and pub-sub endpoint layer),protocol process of key entities,control logic,and refresh mechanism when joining or leaving.The technology can be used to design and develop system monitoring software,real-time monitoring and analysis of system status information published and subscribed,recording historical data,providing a complete communication topology,which enables developers to better understand the distributed system,calibrate system design,deploy performance parameters and optimize system integration and extension.
data distribution service;publish-subscribe;automatic discovery;global data space
2015-12-06
2016-03-24
时间:2017-01-04
邹 歌(1993-),女,硕士研究生,研究方向为电子信息系统。
http://www.cnki.net/kcms/detail/61.1450.TP.20170104.1023.032.html
TP311
A
1673-629X(2017)01-0025-05
10.3969/j.issn.1673-629X.2017.01.006