APP下载

基于Vert.x的实时Web监控系统

2015-10-18吕海东大连理工大学城市学院辽宁大连116600

网络安全与数据管理 2015年12期
关键词:服务器端实时性总线

吕海东(大连理工大学 城市学院,辽宁 大连 116600)

基于Vert.x的实时Web监控系统

吕海东(大连理工大学城市学院,辽宁大连116600)

创新性地使用最新的Vert.x框架,利用其异步、非阻塞、实时性、高并发的工作模式,对现有的工业过程监控系统进行全面改造,极大提升了系统的响应速度,实时性得到显著提高,完全满足大量客户端并发的实时请求。

Vert.x;过程监控;PLC;数据推送

0 引言

工业生产监控系统的Web化[1]已成为标准,客户端只使用浏览器即可实现对监控数据的实时显示,不需要安装各种监控组件,简化了监控系统维护。实现监控数据的实时传输和显示技术也在不断地出现,从传统HTTP请求/响应模式,到AJAX的Comet及HTML5的WebSocket,采用数据推送技术,使得Web监控系统的实时性得到极大提高。然而监控服务器在面对大量客户连接的并发请求时,实时性难以满足。无论JavaEE,还是NET都如此,它们的多线程工作模式是根源所在。为解决此问题,Vert.x框架[2-3]应运而生,它采用全新工作模式,特别适合开发实时性要求极高的系统。

Vert.x是用于下一代异步、可伸缩、并发应用的框架,轻量级的高性能JVM应用平台,适合开发各种移动及企业应用。它彻底解决了业界遭遇C10K问题,即当并发连接超过一万以上时,传统技术会引发暂停。以Tomcat为例,它在超过100个并发长请求就堵塞,而Vert.x可支持超10万个并发请求。

本文采用Vert.x对现有的供热监控系统进行改造,对监控服务器端和客户端进行重构。在服务器端使用Vert.x的Web服务器取代现有Tomcat7,采用Vert.xTCP读取西门子PLC300的监控数据。用户端采用Vert.x的Event Bus Bridge技术,实时接收服务器端监控数据,改造后的监控系统的性能和响应速度比原有系统有显著的提高。

1 Vert.x框架概述

Vert.x核心采用与Node.js相同的事件驱动的异步工作模式,使用单线程的事件循环机制实现高并发的请求处理,而不像传统的服务器采用多线程的模式。

Vert.x的核心组件是Verticle,运行在Vert.x实例中。Vert.x启动后,根据服务器CPU的内核数,自动创建对应的Vert.x实例,并发运行Verticle。

Vert.x采用事件驱动的异步编程模式,通过触发事件以及注册事件处理器完成所有编程任务。Verticle之间不能直接调用,只能发送和接收事件实现协作。

Vert.x的核心是事件总线,Verticle在事件总线发送和接收事件。事件总线是分布式的,能连接服务器和客户端。事件总线支持点对点和发布-订阅模式的事件传输,监控系统中服务器向所有连接的客户端发送监控数据就使用发布订阅模式,使得所有客户端浏览器都能实时接收到监控数据。

2 实时监控系统设计与实现

大连柳树供热公司监控系统现场采用西门子PLCS7-300[4],通过屏蔽双绞线连接到中心机房的核心交换机上,中心监控主机CPU采用志强8核服务器,可并发运行8个Vert.x实例,能支持十几万个并发请求。页面采用最新的Bootstrap模版技术[5],自动适应不同尺寸的屏幕显示,包括手机、平板等。

2.1读取PLC监控数据TCP编程

西门子S7-300采用TCP FETCH WRITE通信方式[6],该模式下通过TCP协议的Socket,主机可与PLC进行数据交换。

Vert.x内置TCP Client方法,如下是 TCP客户端读取PLC数据的代码:

客户端定时发送数据指令,PLC数据到达后,Socket上的事件监听器工作,从回调函数中取得监控数据,并转换为JSON格式,使用总线方法publish发布事件。总线上监听的Web客户端都能同步接收监控数据。Vert.x采用推模式实现数据传输,由Vert.x服务器主动发送数据,不需客户端请求,节省了网络带宽,提高了传输速度,满足了监控系统实时性。监控系统的总体架构如图1所示。

图1 供热监控系统总体架构图

在 Vert.x服务器中,可启动多个TCP客户端Verticle,实现多路监测数据的并发读取,如下代码展示主服务器依次启动 Http Web Server和TCP Client监控Verticle等实例。

2.2监控Web服务器的编程

系统采用Vert.x的服务器模块web-server~2.0,实现功能强大的Web服务器,并使用异步模式接收客户端浏览器的HTTP请求,支持客户高并发的HTTP连接请求,示意代码如下。

Vert.x通过deployModule载入Web模块,Web模块自动将目录/web作为站点发布目录,在/web目录中存储站点的页面文件。

代码中bridge:true表示将服务器端的事件总线延伸到Web客户端,实现服务器和客户端的数据传输。每个Verticle都可以在Event Bus注册事件处理器,以此实现数据的接收和发送。

2.3监控客户端编程

客户端使用普通的HTML即可,不需要动态页面。为实现与Vert.x服务器的Event Bus通信,客户端页面需要引入Vert.x的 Event Bus Bridge的库文件 vertxbus-2.1.js。

监控数据显示使用<div>,使用Bootstrap框架布局,将<div>悬浮在图片指定位置。监控客户端页面的数据接收和显示代码如下:

代码中关键是取得Vert.x的Event Bus对象,通过事件总线提供的vertx.EventBus,使用Javascript创建一个实例即可。如果与服务端的Event Bus连接成功,则eb.onopen回调函数工作。在此方法内,通过Event Bus的registerHandler对指定的地址进行监听,当有此地址的事件event到达时,定义的回调函数function(args)开始运行,参数args为事件中包含的JSON数据,解析出JSON数据,使用jQuery的函数html()将数据显示在指定的<div>元素内,实现监控数据的实时显示。实时监控系统监控界面如图2所示。

Real-time Web based monitoring system based on Vert.x

Lv Haidong
(City Institute,Dalian University of Technology,Dalian 116600,China)

This paper uses the innovative new Vert.x framework,which has the characters such as asynchronous,non blocking,real-time and highly concurrent,to improve the existing industrial process monitoring and control system.The response speed of the system is greatly enhanced,the real-time is greatly improved,and the real time request of a large number of clieats concurrency is completely satisfied.

Vert.x;SCADA;PLC;data pushing

TP274

A

1674-7720(2015)12-0080-02

猜你喜欢

服务器端实时性总线
Linux环境下基于Socket的数据传输软件设计
一种基于CAN总线的误码测试方法
航空电子AFDX与AVB传输实时性抗干扰对比
基于Qt的安全即时通讯软件服务器端设计
计算机控制系统实时性的提高策略
基于Qt的网络聊天软件服务器端设计
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用
CAN总线并发通信时下位机应用软件设计
基于CAN总线的水下通信系统设计
一种车载Profibus总线系统的实时性分析