马骕
【摘要】 本文介绍了一个面向磁浮仿真平台的高效通信状态分布式维护技术,主要应用于分布式通信领域,可用于磁浮交通仿真条件下分布式系统通信状态的维护。为提升系统稳定性和容错性,这里通过ACE的使用,定义一种子系统之间交互连接信息协议来实时交换连接状态,从而高效的完成整个通信层中状态维护。
【关键词】 磁浮仿真 分布式通信 状态维护 ACE
一、 引言
随着计算机通信技术日新月异的发展,工业监控系统对操作系统和开发环境的要求也越来越高。为跨平台的工业监控系统如磁悬浮仿真平台提供稳定高效的通信功能也显得越来越重要。本文详细介绍了磁悬浮项目中的一种通信状态分布式维护技术,在磁浮交通仿真这种跨平台交互环境中,利用ACE满足多种传输方式需求,保证了子系统之间的变更透明性与故障透明性,提升通信服务质量。
二、磁浮仿真平台分析
磁浮仿真平台是一个比较典型的小型分布式协同系统,包含多个交互的板块,包括:PC机、嵌入式设备、工作站以及服务器等。运行在其上的软件系统更是种类繁多,如win7、winxp和Linux等。应用软件更有如oracle 10g、NI Labview、Visual Studio 2010 及Eclipse 3.3等。平台由牵引供电子系统、运行控制子系统、列车仿真子系统等构成,每个子系统自成体系。这些系统内的主机之间实时传递着大量数据,每个节点的状态都会对别的节点产生影响。
三、通信状态分布式获取和处理
在了解磁悬浮仿真平台通信的主要难点后,我们先利用中间件技术将整个平台抽象成三层,利用ACE(自适应通信环境)这种适合于多系统通信的框架提升编码效率。在信息传输阶段,利用IP地址初始化列表来记载每个网络节点状态,通过分布式处理来保证故障透明性。
3.1软件结构分层
首先在多系统中部署统一的通信中间件。通信中间件软件将被进一步划分成网络通信层、可靠性保障层和IPC层,其中的网络通信层和可靠性保障层均使用自适应通信环境ACE实现,可靠性保障层中的类和方法的设计都会通过ACE框架来实现,方便调用。
3.2 节点IP列表初始化
完成分层后,先写一个配置文档,用于设置参数。同时在可靠性保障层里面定义一个NetServe类,写进读取配置文件的方法。接着初始化一个工作线程ThreadNetServe用于把配置文件中的IP地址插入到IP地址列表。
3.3 心跳报文处理
IP地址列表初始化完成N秒后(0 < N <=10),工作线程向网络中所有主机依次发送心跳报文,当工作线程ThreadNetServe接收到对应序列号的心跳响应报文后,将IP地址列表的条目时间戳更新为接收心跳响应报文的时间点。
3.4 分布式维护
某一时刻,工作线程ThreadNetServe发送心跳报文时发现IP Table中某条目时间戳与当前时间点差值>2N,则说明最近两个发往该主机的心跳报文都未收到响应报文,认定网络连接中断,将有效性字段改为无效。随后不再向其发送心跳报文,同时通知NetServe类删除与故障主机相关的资源。此时应用程序将被通知主机不可达。除更新本地的IP地址列表外,工作线程ThreadNetServe还会向IP地址列表中除故障主机外的其余主机广播发送一个主机网络故障广播。当其所在网络中其他主机接收到故障广播信息时,有以下几种情况:
1) 已转发该广播。核对转发标识,发现已经转过,直接丢弃。
2) 未转发过该故障广播,且本地IP Table中没有故障的主机。核对转发标识,发现未转发,此时若接受的故障广播报文跳数为1,不转发;否则将故障广播中的跳数减1,并向IP Table中所有主机(故障广播源主机外)转发此报文,转发标识标记为已转发状态。
3)未转发过该故障广播,但是本地IP Table中有故障的主机。核对转发标识,发现未转发,此时若在本地IP Table中,故障主机的条目有效性字段依旧为真,则置为假;其他同2中情况。
主机故障修复后,通过发送心跳报文恢复网络通信。NetServe类向IP地址列表中所有主机发送消息,其他主机接受到该广播后转发到除源主机外其他主机,通过递归式广播告知网络中其他主机。
四、结语
本技术在磁悬浮仿真平台的实现提升了系统的容错性和透明性,使整个平台的功能不会受到一个子系统故障的影响。此技术不仅能进一步提升系统效率,保障信息传递的实时性,还对其他工业化监控系统通信方案的选择有借鉴意义。
参 考 文 献
[1] 谭浩强.c++程序设计[M] .北京:清华大学出版社,2004.
[2] 崔波,刘芳, 基于信息展示平台的中间件技术.北京:高校图书馆工作,2011,Vol.05
[3] 吴祥明,《磁浮列车》,中国科学技术出版社,2003.3
[4] 张云勇.中间件技术原理与应用.北京:清华大学出版社,2004