数据通信中间件的比较与仿真测试①
来源:用户上传
作者:
摘 要:本文主要针对DDS、Socket和Redis数据通信中间件来进行研究,对这三种常用的数据通信中间件进行分析,并应用在待设计的通用仿真系统上进行比较,最后选取出更合适本系统的数据通信中间件,并进行仿真测试。
关键词:DDS Socket Redis
中图分类号:TN919 文献标识码:A 文章编号:1674-098X(2019)09(b)-0142-02
数据通信中间件是用来解决分布式计算机系统中数据之间的通信问题的技术。本文对三种数据通信中间件进行分析、比较,从而选取出适合本通用仿真系统的通信方式,并进行仿真结果测试。
1 数据分发服务DDS
标准DDS,提供了基于多样化数据的发布订阅模型[1],可以进行实时发布,也可以针对自身需要进行及时订阅。DDS标准可以切实保障数据传输过程中的可靠性,并切实解决相关冗余性问题。故此,其广泛应用于多样化高端领域。
2 Socket数据通信中间件
Socket可以支持TCP/IP网络通信[2],也提供多样化服务。
Socket主要提供数据报式Socket和流式Socket两种通信机制。(1)数据报式Socket主要通过UDP协议实现通信。UDP协议因可靠性低,面向无连接,不具备差错恢复等多样化功能,只能针对相对较少的数据进行日常传输工作;(2)流式Socke主要通过TCP协议实现通信。TCP协议具备相对较高的可靠性,可以实现面向连接,具备差错恢复等多样化功能,比较适用于传输相对较多的数据。
3 Redis数据通信中间件
Redis基于内存实现,能够切实提高用户的实际访问速率[3],提供两种通信方式,即:(1)Redis数据库通信方式,以键值对的形式存储所有的仿真执行参数、仿真模型以及一些仿真控制参数等实现通信。(2)Redis频道功能提供了基于订阅发布的通信模式。
4 待设计数据通信中间件的某通用仿真系统介绍
待设计通用仿真系统提供仿真分布式部署与管理功能,以及仿真执行、暂停、步进、停止、与修改参量等功能。该系统由仿真总控程序、仿真执行程序、和各仿真模型组成,如图1所示,分布式仿真的实现通过部署在不同仿真计算机上的仿真执行程序及运行在其上的仿真模型共同完成,仿真执行程序之间通过标准数据通信中间件通信,仿真流程由仿真总控程序协同控制。
5 三种数据通信中间件的比较
分别将DDS、Socket和Redis三种数据通信中间件运用到待设计的通用仿真系统当中,对三种数据通信中间件进行比较:
(1)使用DDS通信时,由于DDS的源代码是非开源的,并且DDS的环境配置较为复杂,相比之下不易于系统的研发工作。
(2)Socket方式可以保证高效的、顺序的数据传输。如果数据没有传送到,则TCP套接口返回一个出错状态条件。但是TCP在发送数据时必须创建并保持一个TCP服务,这个服务给TCP通信进程增加了开销,降低了TCP的通信速度。
(3)Redis可以长时间的保存数据在磁盘中,并且支持数据备份,Redis具有快速和持久化的特征,因为数据存在内存之中,因而传输速度较快,重启的时候可以再次加载进行使用,支持丰富的数据类型,并且它作为消息中间件可以实现订阅/发布消息的功能。
綜上所述,本文设计的通用仿真系统更适合采用Redis作为数据通信中间件来实现各分布式模块之间的数据通信功能。
6 仿真测试
将本文设计的通用仿真系统利用Redis作为底层通信网络来实现分布式各系统的数据传输与交互,操作过程如下:
使用Redis作为数据通信中间件,测试程序启动方式为分别启动仿真总控程序、仿真执行程序、tmpDB程序以及tmpZK程序。各个程序的运行过程如图所示。其中,图2所示为启动tmpZK程序,启动仿真;图3为启动仿真执行程序,解析分布式部署信息和仿真模型信息,启动成功后向总控程序发送反馈信息。图4所示为总控程序在仿真执行过程中的状态信息。图5所示为tmpDB程序在仿真的过程中,存储仿真结果数据。图6所示为仿真测试结果。
通过对仿真过程以及仿真结果图的分析,可以得出,通过Redis作为数据通信中间件,在待设计的通用仿真系统上进行仿真数据的传输,是可行且有效的,能够实现仿真数据在各分布式模块的数据交互。
7 结语
数据通信中间件逐渐丰富与完善,从而能够解决计算机中的数据传输与交互的问题。本文分析比较了DDS、Socket以及Redis三种数据通信中间件,并选择Redis作为数据通信中间件来实现在待设计的通用仿真系统中各分布式模块间的通信。通过仿真测试,验证了Redis作为数据通信中间件在本文设计的通用仿真系统中的有效性。
参考文献
[1] 谢阳杰,吴家铸.数据分发服务DDS的研究[A].全国第19届计算机技术与应用学术会议[C].合肥,2008:38-43.
[2] 王晓鹏.TCP/IP下的Socket及Winsock通信机制[J].航空计算技术,2004(2):12-16.
[3] 郎泓钰,任永功.基于Redis内存数据库的快速查找算法[J].计算机应用与软件,2016(5):40-43,52.
转载注明来源:https://www.xzbu.com/1/view-15106572.htm