基于发布订阅机制的实时中间件的设计与实现

2018-04-18 11:07郑鹏怡张振国袁战军
计算机应用与软件 2018年2期
关键词:中间件实时性代理

郑鹏怡 张振国 袁战军

(陕西国际商贸学院信息与工程学院 陕西 西安 712046)

0 引 言

随着计算机技术的发展,现有的计算机分布式系统应用要求中间件具有实时性。实时中间件可以为大规模新型应用系统提供数据通信的平台,在满足数据交互及时性和正确性的同时,为应用开发提供统一的接口,使得开发人员不用考虑底层通信的实现,把更多的精力投入到应用逻辑方面,提高了开发效率,缩短了开发时间。

传统中间件主要侧重于解决异构和分布情况下的复杂问题,系统的实现细节通过抽象的方式隐藏了起来,形成了一个典型的黑箱结构[1]。它为分布式实时系统提供了开发简单、可互操作性、灵活性、可维护性、可重用性等优势,但却并不适用于具有严格时限的应用,缺乏对实时性的支持[2]。因此,利用基于发布订阅机制的实时中间件构筑分布式实时系统,可以降低软件开发的费用,提高应用的可互操作性、可重用性、可扩展性、可维护性以及时间可预测性[3]。它为软件的体系结构注入了新鲜的活力,简化了应用程序的开发复杂性,促使软件生产的产业化,使跨企业的分布式应用得到了推广。

与当前通用发布订阅中间件相比,本文采用RTX(Real Time eXtention)操作系统与RT-TCP/IP协议来保证数据处理和数据传输的实时性,确保提出的中间件具有较强的实时性能,可满足分布式实时应用的需求。另外,本文基于分布式对象的发布订阅机制将中间件的通信方式由消息封装成类,通过对象的访问接口实现互操作功能,结构清晰,使用方便,具有独立性、可靠性、继承性等优势,更加便于中间件的实现与应用。

1 实时中间件功能需求

在分布式系统中,实时中间件可以解决异构环境下应用交互和数据传递,也可以实现分布式应用跨平台互操作。同时,还可以保证分布式系统在限定的时间内完成对外部事件的响应和任务执行,提高数据传输的实时性、可重用性及可扩展性[4]。要想完成对以上功能的实现,需要完成以下三个方面的内容。

1.1 支持基于分布式对象的数据同步功能

支持基于分布式对象的数据同步是实时中间件的一个核心功能。该功能用例是当发布端更新一个对象时,发布端对象对本地对象进行更新,中间件自发地完成对象状态的同步到代理[5],订阅端从代理中获得更新后的状态数据[6]。

1.2 支持基于以太网的发布订阅通信机制

基于以太网的发布订阅通信机制可以提高实时中间件的可重用性和可扩展性,提高分布式应用开发的效率和性能[7]。该功能用例为发布端公布发布兴趣[8],订阅端公布订阅兴趣,中间件进行兴趣匹配,建立连接。接着发布端发布状态数据,中间件通过同步功能完成在订阅端的更新,当订阅端获取状态数据接口时,获取相应的数据[9]。

1.3 提供基于分布式对象的实时性能保障机制

发布订阅实时中间件要为分布式实时应用的时间可预测性提供使能机制及服务,还要为应用提供表达时间约束和特性的手段,并提供多种粒度的实时控制机制,使应用能够调节中间件的各个处理环节,从而为应用任务提供某种程度的时间可预测性[10]。该功能用例为发布端和订阅端分别采用QoS(Quality of Service)接口,设置实时性要求,中间件对发布端和订阅端所设置的实时性要求进行综合,生成状态数据的优先级,中间件根据优先级进行状态数据的更新,完成状态对象的实时分发。

另外,对于性能需求也有要求,如果分布式对象的大小在1 024字节以内,中间件的更新延迟应在1毫秒以下。

2 实时中间件的设计与实现

根据发布订阅实时中间件的功能需求,采用基于分布式对象的数据同步技术、基于以太网的发布订阅通信技术及基于分布式的实时性能保障技术设计实现了基于发布订阅机制的实时中间件。

整个中间件的设计采用分层的设计思想,其软件体系结构抽象为三层:模型层、通信层与支撑层,如图1所示。模型层主要实现分布式对象的数据同步功能,通信层主要实现基于以太网的发布订阅机制,支撑层主要实现基于分布式对象的实时性能保障机制。中间件的各功能模块之间达到高内聚低耦合,使得实时中间件的业务逻辑能够更清晰的体现。

图1 中间件软件体系结构图

2.1 模型层

中间件模型层通过设置订阅端代理对象与发布端伺服对象建立连接并维护两者之间的会话关系[11],为分布式应用系统中的状态对象(SO)提供状态同步调用功能。通过订阅端代理对象与发布端伺服进行状态对象信息的传递,使对象之间相互协作,如图2所示。模型层维护了本地代理对象与远端对象之间的会话关系,使得本地代理对象能够通过回调机制,感知远端伺服对象连接、远端伺服对象状态更新以及远端伺服对象撤销。同时,在模型层中还对需要传输的数据进行序列化及反序列化处理,使得中间件底层通信不需要关心数据的格式,只需按照要求的传输方式完成传输即可。

图2 模型层流程图

具体实现为:首先通过发布端的对象维护的发布者组件将伺服对象执行状态更新命令后的状态信息发送出去;然后订阅端接收到状态信息后,查看是否有对应的代理工厂,如果没有则由交互对象创建代理工厂,之后获取指定的代理工厂对象,由代理工厂查看该对象的代理是否已经创建,如果没有则根据状态所属对象创建指定的代理对象并获取。

2.2 通信层

中间件通信层为模型层提供基于主题的发布订阅通信服务,屏蔽底层传输细节,实现发布订阅通信机制,并提供QoS设置,保证状态对象处理的实时性。通信层设计为通信组件模块和传输组件模块。通信组件模块为中间件模型层提供了统一的通信接口,并完成了发布者组件和订阅者组件[12],使发布端的发布者和订阅端的订阅者能够建立连接,进行通信。传输组件模块提供了TCP传输组件和UDP传输组件,保障了数据流的可靠与尽力而为传输。

具体实现为首先要由主题信息匹配来确定通信双方,其次要根据通信双方所在节点的IP地址和端口信息来建立连接[13]。因此中间件通信层设计了主题通道服务器来为各个节点提供主题信息的分发服务[14],如图3所示。主题是通信双方建立连接的唯一标识,发布端和订阅端在启动时,都会向主题通道服务器公告带有自身位置信息(IP和端口)的主题,之后由主题通道服务器分发至其他各个节点,应用程序在本地进行主题匹配,选择是否建立连接。

图3 通信层流程图

连接建立之后,可以进行数据收发。发布者维护了与每一个订阅者之间的连接,中间件通信层提供数据广播通信机制,使发布者能够将状态数据流广播到与之连接的所有订阅者。从而达到发布订阅通信服务。

2.3 支撑层

中间件支撑层主要为实时中间件的通信对象提供节点级和节点间的实时性能保障机制。目前流行的操作系统(Windows、Linux等)在任务调度、定时精度都缺乏实时性的保障,需要进行实时性能扩展和改进[15]。中间件信息通信的实时性需要从运行管理、调度与通信等方面进行保障。

为了提供实时性通信机制,运行支撑层采用RTX操作系统和RT-TCP/IP协议完成数据传输,既避免了系统其他任务对中间件任务的干扰,又保障了中间件数据传递的及时性与准确性。

RTX操作系统实现整个实时性的关键点在于接管Windows的硬件抽象层(HAL),实现中断管理,实现更快的定时器服务,缩减中断延迟等。

如图4所示,采用RTX操作系统为中间件进行支撑,可以使实时中间件的应用程序调用专用的实时API[16],进而利用RTX系统的任务管理和通信管理,实现实时中间件的通信对象节点级和节点间的实时性保障。

图4 RTX操作系统对Windows系统的实时扩展

支撑层采用RTX实时操作系统,完成实时任务管理,从操作系统层面上克服非实时任务对中间件实时任务的干扰,断绝内外部中断对中间件实时任务的影响,并提供高精度的、供实时任务线程使用的定时与同步机制。

3 实时中间件的测试

利用构建的实验仿真场景在不同网络负载和CPU负载下与现存的TAO中间件进行对比 ,说明本文研究的中间件(RTM)的实时性。测试场景如图5所示,构建了基于发布订阅实时中间件的应用集群,模拟了虚拟实验中红蓝双方相互获取飞机位置信息的简单应用场景。其中红蓝双方雷达程序订阅对方飞机应用的信息,而主控节点负责实时获取所有飞机信息并显示,评估节点在实验结束后,完成对本次实验的评估工作。

图5 测试场景部署图

从实验场景的运行结果中可以发现,本文研究的RTM实时中间件提供了基于分布式对象的数据同步功能、基于以太网的发布订阅通信机制和基于分布式对象的实时性能保障机制,取得了预期的效果。

另外,在上述环境中,采用乒乓法测试了TAO中间件和本文研究的RTM中间件在CPU负载和网络负载情况下的更新延迟,测试结果如图6、图7所示。

图6 不同CPU负载下的测试结果

图7 空负载和网络负载测试结果

在图6中,当CPU负载为0,数据包大小为2 048字节时,本文提出的RTM中间件的延迟为820.81微秒,而此时TAO的传输延迟为1 395.49微秒,是RTM中间件的1.7倍。当CPU负载变为75%时,TAO的传输延迟为1 998.63微秒,而RTM中间件的延迟依然为820.81微秒,说明RTM中间件的延迟小,并且受CPU负载影响小。同样,在图7中,在数据包大小为2 048字节,网络负载由空变为有负载时,TAO中间件的传输延迟由1 395.49微秒变为2 198.7微秒,而RTM中间件的延迟由820.81微秒变为983.34微秒,变化范围小,显示出RTM中间件的稳定性。

从图6和图7可以看出RTM实时中间件在相同情况下,都比TAO中间件的更新延迟小,并且在状态对象在1 024字节以内时,不论当前系统内的CPU负载和网络负载,中间件的更新延迟都在1毫秒以下,达到了预期的效果。

4 结 语

本文针对分布式应用对通信的实时性需求,利用分布式对象技术和实时性能保障技术,设计并实现了一个基于发布订阅机制的实时中间件,支持了服务质量,确保了数据交互的实时性。然而,本文提出的中间件服务单一,功能不够完备,在后续工作中需要进一步完善。一方面需要逐步添加中间件的各类服务,包括时间管理、域管理服务等,使中间件在支持实时发布订阅机制的同时,满足应用程序对时间的要求,提供对中间件中消息和会话域的管理。另一方面需要对中间件的功能进行扩展,使中间件通信层支持其他实时网络协议,为用户提供更丰富的网络环境选择,更好地满足分布式应用的需求。

[1] 王旻珉.DRE系统中间件的研究与设计[D].上海:同济大学,2007.

[2] Belokosztolszki A, Eyers D M, Pietzuch P R, et al. Role-based access control for publish/subscribe middleware architectures[C]//Proceedings of the 2nd International Workshop on Distributed Event-Based Systems, DEBS 2003, Sunday, June 8th, 2003, San Diego, California, USA. 2003:1-8.

[3] 樊留群, 马玉敏. 开放式控制器的实时中间件[J]. 计算机工程, 2008, 34(3):272-273,282.

[4] 胡静, 宋雪雁, 孙济洲. 航行通告分发服务中间件的研究与设计[J]. 计算机应用与软件, 2016,33(2):7-11,41.

[5] Park J, Joe I, Kim W T. An Efficient Discovery Protocol of Large-Scale CPS Middleware for Real-Time Control System[J]. Studies in Informatics & Control, 2014, 23(1):23-30.

[6] 朱华勇.分布式系统实时发布/订阅数据分发技术[M].北京:国防工业出版社,2013.

[7] Antonic A, Roankovic K, Marjanovic M, et al. A Mobile Crowdsensing Ecosystem Enabled by a Cloud-Based Publish/Subscribe Middleware[C]//International Conference on Future Internet of Things and Cloud. IEEE, 2014:107-114.

[8] Loser K, Delic E, Schreiber M, et al. The benefits of middleware for safety-related systems-on-chip[C]//International Symposium on Fundamentals of Electrical Engineering. IEEE, 2015:1-5.

[9] Caporuscio M, Marco A D, Inverardi P. Run-time performance management of the Siena publish/subscribe middleware[C]//International Workshop on Software and PERFORMANCE. ACM, 2005:65-74.

[10] Ren H, Gao Y. A Study on the Distributed Real-time System Middleware Based on the DDS [M].Springer Berlin Heidelberg,2013:1-6.

[11] 冒佳明.基于DDS的分布式系统的性能评估模型研究与实现[D].南京:东南大学,2015.

[12] 屈志坚, 林宏平. 基于发布订阅的分布式监控主动消息交互研究[J]. 计算机测量与控制, 2015, 23(2):529-532.

[13] 邹轩.移动互联网跨平台应用中间件的研究[D].上海:复旦大学,2013.

[14] 胡文潇.东航中间件移动应用平台设计及安全性研究[D].上海:上海交通大学,2013.

[15] 于润胜.发布订阅网络中的缓存机制研究[D].上海:上海交通大学,2014.

[16] 杜旭东,蒋泽军,王丽芳.基于资源重分配的Windows实时性改造[J].微电子学与计算机,2012,29(5):95-98.

猜你喜欢
中间件实时性代理
我国自主可控中间件发展研究
RFID中间件技术及其应用研究
航空电子AFDX与AVB传输实时性抗干扰对比
计算机控制系统实时性的提高策略
可编程控制器的实时处理器的研究
复仇代理乌龟君
108名特困生有了“代理妈妈”
胜似妈妈的代理家长
云计算环境下中间件的负载均衡机制研究
一个村有二十六位代理家长