APP下载

CBTC综合维护管理系统中基于Web的实时通信方法

2018-08-07孔令发徐纪康贾森

科技资讯 2018年4期

孔令发 徐纪康 贾森

摘 要:本文提出了一种CBTC综合维护管理系统(MMS)中前端页面模块与后端服务模块的实时信息交换方法,该方法应用层采用stomp协议,基于websocket通信。在基于B/S架构的轨道交通综合维护管理系统中,服务器系统分为两部分:后端服务模块和前端页面显示模块。后端服务模块实时向前端页面模块发送消息,前端页面显示模块收到消息之后,解析并实时显示状态更新。本方法,通过在CBTC综合维护管理系统中增加消息代理服务器,对服务器的后端服务模块和前端页面展示模块进行了解耦,并提供了后端服务模块和前端页面显示模块的通用应用层协议封装,提供了客户端消息定义的管理和自动发布功能。增强了后端服务模块的扩展能力,简化了后端服务模块开发,通过向客户端广播实时消息,节省了带宽,减少了后端服务模块的负载。

关键词:CBTC 综合维护管理系统 Websocket Stomp Active MQ 消息代理

中图分类号:TP27 文献标识码:A 文章编号:1672-3791(2018)02(a)-0042-05

城市轨道交通控制系统包含CBI、ZC、ATS、OBCU,他们共同协作,完成轨道交通的运营。在轨道交通信号系统建设完成之后,对这些控制子系统的和信号设备、机房设备的运行维护成为工作的重点。保障和提供运维的水平和效率,对轨道交通系统的正常运营具有重要意义。因此,需要有一个系统,能够接收、整合所有控制子系统的维护信息,能够及时监测信号设备和机房设备的运行状态,并能够对实时报警和趋势性预警信息及时提供报警提示。

在此背景下,采用B/S架构的CBTC综合维护管理系统(MMS,Maintenance Management System)应运而生。

1 背景分析

目前的web应用中,后端服务器系统与前端页面的数据交互,通常采用方法有Ajax、轮询、websocket以及其他技术。

采用Ajax,解决了页面部分刷新、服务器负载分担的问题,客户端和服务器异步通信,使得服务器可以更快的响应页面操作;采用轮询方式,服务器和页面实现逻辑简单,易于操作;采用websocket,可以保证应用的实时性;采用其他方式,也都具有各自的特点。

在以上这些方法中,有一个共同的特点:由前端页面发起请求到服务器,由服务器处理所有页面的请求和客户端的管理。由此也带来了一些问题,主要表现为:

(1)服务器不能及时把数据变化推送到客户端,实时性差。主要表现在采用Ajax和轮询方式。采用轮询方式,还占用了比较多的带宽和服务器资源,重复请求等,浪费比较多的资源。

(2)后端服务模块和前端页面展示模块耦合度较高,导致服务器的扩展性较差。

(3)后端服务模块要管理所有客户端的信息订阅,及信息发布,导致服务器开发复杂,且服务器负载较高。

MQ全称为Message Queue,消息隊列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。

在事件驱动架构的异步系统中,经常采用MQ作为事件驱动架构的主干,从而解耦不同的模块应用,提高服务器负载、高可用性以及更好的系统扩展性。

本文方法采用的消息服务器是消息中间件MQ,采用开源ActiveMQ实现。ActiveMQ是Apache出品,最流行的、能力强劲的开源消息总线,也是一个中间件产品。它是JMS的一个实现。AcitveMQ提供了两种消息传递模型,PTP(即点对点模型)和Pub/Sub(即发布/订阅模型),分别称作:PTP Domain和Pub/Sub Domain。

(1)PTP(使用Queue,即队列目标)消息从一个生产者传送至一个消费者。在此传送模型中,目标是一个队列。消息首先被传送至队列目标,然后根据队列传送策略,从该队列将消息传送至向此队列进行注册的某一个消费者,一次只传送一条消息。可以向队列目标发送消息的生产者的数量没有限制,但每条消息只能发送至、并由一个消费者成功使用。如果没有已经向队列目标注册的消费者,队列将保留它收到的消息,并在某个消费者向该队列进行注册时将消息传送给该消费者。

(2)Pub/Sub(使用Topic,即主题目标)消息从一个生产者传送至任意数量的消费者。在此传送模型中,目标是一个主题。消息首先被传送至主题目标,然后传送至所有已订阅此主题的活动消费者。可以向主题目标发送消息的生产者的数量没有限制,并且每个消息可以发送至任意数量的订阅消费者。主题目标也支持持久订阅的概念。持久订阅表示消费者已向主题目标进行注册,但在消息传送时此消费者可以处于非活动状态。当此消费者再次处于活动状态时,它将接收此信息。如果没有已经向主题目标注册的消费者,主题不保留其接收到的消息,除非有非活动消费者注册了持久订阅。

2 系统设计

基于以上考虑,本文提出一种事件驱动的异步实时信息发布方法。

(1)在服务器增加一个消息代理服务器,作为事件驱动的主干,负责Topic管理,订阅管理,消息接收和广播等。

(2)MMS服务器后端模块作为消息的生产者,负责把实时信息以消息的形式,发送到消息代理服务器的Topic。

(3)MMS服务器前端模块作为消息的消费者,在页面打开时,向消息代理服务器订阅相关的Topic,并在页面关闭时,取消订阅。

(4)当MMS服务器后端模块接收到从控制子系统发送的实时信息之后,转换为json的形式,发送到消息代理服务器的具体Topic;消息代理服务器把消息广播至所有订阅了该Topic的所有页面;页面接收到广播之后,对页面的相关状态进行更新显示。

(5)系统软件架构采用JavaEE架构。该方法具体包括:后端服务模块,消息代理服务器,前端页面显示模块。系统框图如图1所示。