基于push技术的web实时网络管理框架研究

1 引言
  
  基于 web 的网络管理是web 功能和网管技术的结合。对用户来说,因为只要能上网就可以通过浏览器接入网络管理软件,同时网页的界面组件和网页的基本操作都为用户所熟悉所以深受用户欢迎。对开发和部署人员来说因为只需要维护部署服务器端,这样就可以集中开发维护和升级。所以基于web 的网络管理成为一大发展趋势。但是由于web 网络管理系统中,浏览器客户端与服务器之间的采用http 协议这样同步的请求/应答通信方式,一次请求应答之后浏览器与服务之间就失去的连接,浏览器只能取得请求时刻服务器的数据状态,不能满足实时告警、实时性能数据监控这样的需求。
  针对这个问题最简单的解决方式就是设置页面的refresh 属性,设定刷性周期之后自动的由浏览器自定重新请求整个页面,这种方式虽然每次都重新请求整个页面而大部分情况实时更改了很小的一个界面元素,效率低下。而且真实的网络情况不确定,这个刷新周期也不好确定,设置的太短浪费带宽,设置的太长又缺乏实时性。在网页中嵌入applet 方式[1]中applet不能与网页中其他的元素有效的互动同时需要在客户机中安装JAVA 运行环境,Flex[2]方式具有丰富的界面元素但是需要在浏览器安装插件,有可能存在安全隐患。而且上述两种方式都采用了http 以外的协议收到防火墙的限制。
  本文采用 AJAX 与Servlet 设计的push 模式,运用浏览器内置支持的异步请求对象和脚本处理引擎来处理与服务器的通信,不需要安装任何插件,采用纯http 协议能顺利穿越防火墙。只在服务采集到数据时才向浏览器发送数据,并且只针对需要更新的网页组件发送少量的数据具有很高的效率。
  
  
  2 Web push 技术介绍
  
  Web Push 技术又称comet 技术是为了解决浏览器与服务器的一次请求应答结束后,浏览器与服务器失去了的联系不能保持连接的问题而发展起来的一种技术。是对浏览器端JavaScript、文档模型DOM、CSS、内置异步请求对象XmlHttpRequest 对象或者隐藏帧IFrame的综合应用,并且需要相应的服务器技术的配合。因为服务器只需要把用户感兴趣的事件发送到浏览器端,所以采用的是订阅/发布的通信方式。采用这种技术之后在浏览器与服务器之间建立了一条数据传输通道,服务器可以及时的将信息推送到浏览器端,并通过JavaScript函数操作浏览器文档模型,更改文档CSS 显示属性动态更改界面,及时反映服务器数据的变化。
  
  2.1 两种push 机制
  Push 机制有两种具体的实现方式,一种是基于AJAX 的长轮询,一种是基于IFrame 的长连接[3].
  2.1.1 基于AJAX 的长轮询
  AJAX 即“Asynchronous JavaScript and XML”(异步JavaScript 和XML)是指一种创建交互式网页应用的技术。基于AJAX 的push 本质上是通过XMLHttpRequest 对象将信息从服务器端拉回来因为不需要人的参与所以表现为服务器主动推送的效果。
  XMLHttpRequest 发出异步请求后,服务器会阻塞请求直到有数据传递或超时才返回。
  客户端 JavaScript 响应处理函数处理信息更改显示界面,再次发出请求形成一个数据循环来建立通道。
  2.1.2 基于IFrame 的长连接
  IFrame 是很早就存在的一种 HTML 标记, 通过在 HTML 页面里嵌入一个隐蔵帧,然后将这个隐蔵帧的 SRC 属性设为对一个长连接的请求,服务器就能源源不断地往客户端输入数据。
  隐藏帧作为发出请求的控制器和捕获数据的接收器,通过JavaScript 处理这些数据进而更改主页面,只有在浏览器关闭或者网络连接异常情况下长连接才关闭。
  2.1.3 Push 在网络管理中的应用
  基于 IFrame 的数据流方式建立连接之后就可以连续发送数据,不需要多次建立连接的过程因为数据传输的利用率比较高。但是在服务器一直占据着资源,浏览器因为收不到就结束标记,在状态栏一直显示数据加载的状态,造成不好的用户体验。并且很多服务器并不支持这种长时间的连接。AJAX 的缺点就是每次收到数据之后需要重新发送连接,如果传输的数据量比较少,那么建立连接的时间就会成为主要开销,有效利用率低,当然它的好处就是不会长期占用服务器的资源。
  Web 网络管理中要做到比较好的实时性,就需要将告警数据和性能数据及时的发送到浏览器端。告警数据具有突发性的特定,如果采用IFrame 长连接的方式那么大部分的时候只是占据通道却没有数据传输,所以应该采用AJAX 方式。性能数据采集也具有一定的周期性,也不需要采用IFrame 的长连接方式。针对push 的订阅/发布通信模式,需要对告警数据、性能数据按照告警级别、某一方面的数据等一些分类规则,将数据分成不同的种类编码成不同的事件,供用户选择订阅。
  
  
  3 PUSH 引擎
  
  3.1 push 通道模型
  虽然 http 协议是一种无状态协议[4],服务器还是可以采用一定措施进行会话跟踪找到用户上次请求的场景,跟踪方式之一就是cookie 机制。服务器在应答浏览器时除了给出正常html 数据之外还附带了一些名/值对写入用户磁盘,这些名/值对就称为cookie.其中一个很重要是的名/值对就是会话的标识信息。在用户后续的请求中将这些cookie 信息带回服务器,这样服务器就可以通过cookie 里的标识属性找到用户上次请求的相关信息,进而进行下一步的处理。借鉴上述原理会话跟踪原理,并将用户的后续请求自动化形成数据流循环通道,可以得到这样的用于web 网络管理的push 通道模型。
  在用户发送初始请求之后,服务器建立新的会话对象来保存用户的场景及为这次会生成唯一的会话标识,将会话标识通过应答写入到浏览器内存数据中,浏览器在收到信息数据以后运行脚本函数处理事件更新界面并从新发出请求,于是形成了一个从浏览器道服务器再从服务器到浏览器期的数据流循环,形成了一个数据传输通道。
  
  3.2 PUSH 数据流过程
  网络管理中数据有两个流向,一个是从浏览器到服务器,传送的是用户对事件的预订选择和用户对被管网络的操作。这些数据以http 请求附带参数的形式发送的服务器,由浏览器解码得到。这些信息,信息量少,只要用户提交就可以马上发送出去,主要时延就是建立连接需要所需要的少量时间。用户的操作可以及时的得到服务器的处理。另外一个就是服务器到浏览器的告警数据和性能数据,发送的是用户命令的处理结果和用户预订的事件。其中主要传输的还是告警数据和性能数据事件。
  首先用户输入网址发出初始请求,服务器返回包含脚本函数的html 主页面,然后用户选择感兴趣的告警数据和性能数据并开启监听,服务器给这次连接生成会话对象,并将对象的唯一标识作为开启成功的应答消息返回给浏览器端,并在服务对会话中建立消息队列,通知事件发布器按照订单要求将事件发送到会话的消息队列中,于是就开启了浏览器与服务器之间的连接通道。
  
  
  4 实时网络管理框架
  
  4.1 总体框架
  本框架将web push 功能和具体的网络管理业务逻辑相分离,分成Push 引擎模块和TMN[5]网络管理模块,并且TMN 模块作为web 功能模块的逻辑业务处理而存在。
  TMN 网络管理模块服务具体的我网络管理操作获取被管网络数据、通过适配器对被管网元进行配置,主要集中在服务器端。push 引擎负责将事件数据及时推送到浏览器端,分散在服务器端和浏览器端。其中浏览器负责将用户的操作转化为http 请求参数发送到服务器端,服务器端的功能是负责管理每个浏览器的会话、订单,接收TMN 模块发来的数据。由于TMN 网络管理的各个模块已有成熟的功能定义,因为下面主要讨论Push 引擎域的设计,并分为服务器端和浏览器端。
  
  4.2 服务器端
  服务器采用java 语言并以JavaServlet 接受用户http 请求进行业务处理这样的逻辑主线进行设计。事件以xml 语言进行编码发送到浏览器端。分为处理中心、会话管理、命令管理、订单管理、事件发布中心等模块。
  处理中心主要由一个Servlet 实现。负责抽取请求中的附带的参数数据,如果属参数中有会话标识就通过标识让会话管理器找到已有会话,如果没有标识就让会话管理器建立新会话。同时还从参数抽取操作命令交给命令管理器去处理相应的命令。
  会话管理,负责创建会话,查找以后会话并管理会话的生命周期。其中采用map 结构来存储会话对象,以会话标识作为key.每个会话对象中有一个队列,浏览器在收到服务器的事件在处理到再发起请求之间,事件发布器就将时间发到事件队列中存储,浏览器再次发送数据请求事一次将所有事件发送过去。
  命令管理请求处理中心从请求抽取用户的操作参数,并将请求参数,请求对象,应答对象包装成命令,交给命令管理中心。如果命令是订单更改之类就直接通知订单管理中心更新订单,如果是对被管网元的配置就需要将命令翻译、转发给TMN 域的配置管理模块,由配置管理模块来完成具体的配置操作。
  订单管理中心负责会每个会话的订单登记和订单查询。事件发布中心是接受到TMN 管理域的事件时,查阅各个会话的订单,如果属于会话的订阅范围就将事件放到会话的事件队列事件发布中心是push 引擎中与TMN 网络管理的重要接口,TMN 管理域的消息就是从事件发布中心进入push 引擎,进而发送到浏览器的。事件发布中心新提供接口让TMN 管理域中的故障管理和性能管理调用,以向push 引擎注入事件。
  
  4.3 浏览器端
  浏览器端由 html 语言构造的界面和由JavaScript 编程的处理函数组成,并且处理函数进行与服务器的通信,完成界面的动态更改达到实时管理的目的。界面显示模块,负责各种显示组件构成,是展示给用户的直接界面。展示组件将将信息直观的现实,按钮等命令组件可以接受用户的操作,触发动态函数的处理。Push 技术的关键除了服务器端的支持外,就是浏览器端的script 脚本函数了。脚本函数处理用户的操作,操作浏览器端html 文档树动态更改显示,并借助httprequest 对象异步的自动发出连接请求。正是由于脚本函数在浏览器内存中的这样自动请求,免去的用户的手动操作,才表现为信息是由服务器主动推送到浏览器端。
  脚本函数模块中有三种重要的处理。事件处理函数,负责解码xml 编码的事件信息,根据信息的种类调用其他专门的函数来处理,完成界面的动态更改。动作处理模块由各由鼠标动作处理、按钮动作处理等处理函数,并负责将用户对被管网元界面的操作通过请求函数发送到服务器端。请求函数负责发出异步请求、获取请求结果交给事件处理函数去处理。请求函数的请求功能由异步请求对象完成。
  
  
  5 框架测试
  
  为了测试本框架理论,基于JavaServlet 开发了一个测试系统。在测试中,采取平均反应时间(ART, Average response time)衡量告警实时显示系统性能的标准。反应时间是指一个事件被push 引擎收到的时间与在用户界面显示的时间之间的间隔。平均反应时间是指一段时间内所有事件的反应时间的平均值。为了测试事件在服务器端的时间延迟,需要记录两个时间点。一个是事件到push 引擎的时间,一个是事件到达浏览器开始处理的时间。二者的时间差就是时间延迟。
  测试结果显示,事件的平均反应时间是2076.4ms,命令的平均反应时间是13.7 毫秒。其中因为服务器收到命令就立刻处理并返回并不经过事件队列,所以平均命令延迟反应是一次服务器请求和应答的过程所需的时间,并可以看出平均时间反应时间主要是在服务器事件队列中停留的时间。
  
  
  6 结论
  
  基于 web 的网络管理已经成为一大发展趋势,但传统的b/s 结构的网络管理软件不具备实时性,针对这个问题,本文通过对push 技术的研究设计了一个用于web 网络管理的push引擎,并与TMN 管理模型结合得到了一个基于push 的实时web 网络管理系统,编程试验结果表明,平均时间延迟为两秒左右,有很少的时间延迟,能够一定程度的满足实时需求,同时由于这种方案采用浏览器端内置支持的请求对象与脚本函数来与服务器通信,避免了applet、flex 方式需要在浏览器安装插件的问题,是一个比较好的解决方案。
  中国毕业论文网提供大量论文范文,如有业务需求请咨询网站客服人员。
  参考文献
  [1] LI Li, WANG Zhong, REN Xiu-li, LUAN Gui-xing. Design and Implement of PUSH-Based Web NetworkManagement Module[J]. MINI-MICRO SYSTEM, 2002 2002(7)。
  [2] 钟朝亮,陈兴渝。基于WEB 的告警实时显示系统的设计与实现[J].北京邮电大学学报,2009,32(1)。
  [3]周婷。Comet:基于HTTP 长连接的“服务器推”技术[EB/OL].IBM developerWorks 中国, 2007-08-31.
  [4] IETF RFC2616, “Hypertext Transfer Protocol -- HTTP/1.1”, 1999.
  [5] 孟洛明, 亓峰。 现代网络管理技术[M]. 北京: 北京邮电大学出版社, 2001. 69-71.
  [6] 游丽贞, 郭宇春, 李纯喜。 Ajax 引擎的原理和应用[J]. 微计算机信息, 2006, 2006(6): 205-207.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值