基于AJAX和WebSockets的实时监控外文翻译资料

 2022-11-24 11:29:46

英语原文共 9 页,剩余内容已隐藏,支付完成后下载完整资料


基于AJAX和WebSockets的实时监控

Darshan G. Puranik

Dept. of Computer and Info. Science Indiana U.-Purdue U. Indianapolis Indianapolis, IN USA

Email: dpuranik@cs.iupui.edu

Dennis C. Feiock

Dept. of Computer and Info. Science Indiana U.-Purdue U. Indianapolis Indianapolis, IN USA

Email: dfeiock@iupui.edu

James H. Hill

Dept. of Computer and Info. Science Indiana U.-Purdue U. Indianapolis Indianapolis, IN USA

Email: hillj@cs.iupui.edu

摘要:异步JavaScript和XML(AJAX)是通过Web实现异步通信的主要方法。尽管AJAX为Web提供了有保证的实时功能,但它需要非常规的编程方法,而且要牺牲广泛的资源使用。作为新兴协议的WebSocket有可能解决在Web上实现异步通信所面临的诸多挑战。但是,还没有一个独立的研究可以定量比较AJAX和WebSockets。
因此,本文为实时系统中集成Web技术做出了两项贡献。首先,它提供了一份关于通过Web向开放源码系统软件体系结构(OASIS)添加实时监控支持的经验报告,该体系结构是用于分布式实时系统的开源实时测试中间件时间和嵌入式(DRE)系统。其次,它使用AJAX和WebSockets在Web上流式传输收集的工具数据。我们的研究结果表明,WebSockets服务器比AJAX服务器消耗50%的网络带宽;一个WebSockets客户端以恒定的速度消耗内存,而不是以一定的速度增长;并且在消费与AJAX相同数量的网络带宽时,WebSockets可以发送多达215.44%的数据样本。

1介绍

Web 2.0 [1]技术(如异步JavaScript和XML(AJAX)[2])正在彻底改变最终用户与网站和Web应用程序的交互方式。 Web 2.0技术不是使用许多不同的页面和服务器回调来提供内容,而是使Web站点能够实时向Web客户端提供内容,而最终用户仍保持在同一网页上。例如,可以在现有网页中嵌入实时即时消息小部件,其不要求最终用户刷新页面,或访问不同页面来发送和/或接收消息。
由于像AJAX这样的技术,Web开发人员在Web客户端中内置了基于开放标准的协议,该协议通过Web支持实时监控功能。这与依赖嵌入式小应用程序的传统方法相反,并且需要开发人员手动设计,实施和集成专有网络协议。
在AJAX领域,有三种主要的异步通信模式:轮询[3],Web客户端定期发送请求,Web服务器立即发送响应,然后关闭连接; long-polling [4],Web客户端发送请求并且Web服务器将连接保持打开很长一段时间;和流媒体[5],其中的Web服务器保持连接无限期打开,并将响应流式传输到Web客户端,直到Web客户端终止连接。
尽管AJAX解决了传统Web开发的许多缺点,例如静态网页和语言依赖性,但AJAX在内存使用和网络带宽方面都可能占用大量资源 - 尤其是在实时流式传输内容时。这是因为AJAX Web服务器使用无限循环来实时流式传输内容。同样,内容流式传输的语义会导致新内容附加到现有内容,直到现有连接关闭并重新打开。
WebSockets [6]是一种将类似于套接字的通信机制集成到Web中的新兴技术,它有可能解决由AJAX引入的许多挑战。例如,WebSockets不会像AJAX那样通过内在地将新内容附加到现有内容。同样,WebSockets为Web提供原始套接字功能。因此,可以使用最适合目标应用程序域的WebSocket构建从头开始的自定义协议。这与强制现有协议在不适当的应用程序域中操作相反。
然而,WebSocket是一种相对较新的技术,并且不被许多浏览器支持[7]。因此,WebSockets如何与AJAX进行比较并不是众所周知的,AJAX是通过Web进行实时通信的最突出的技术[8],尤其适用于通过Web实时监控DRE系统。基于这样的理解,本文的主要贡献如下:
bull;它提供了一份体验报告,通过使用AJAX和WebSockets通过Web实现DRE系统的实时监控支持;
bull;通过测量客户端和服务器端性能指标(如网络带宽,吞吐量和内存使用情况),使用AJAX和WebSockets进行定量比较,以实现实时监控;和
bull;它提供了通过Web使用AJAX和Web-Sockets实现实时监控支持的经验教训。
我们在系统软件仪表开源架构(OASIS)[9]中进行了定量研究,该架构是分布式实时和嵌入式(DRE)系统的开源实时仪器中间件。 OASIS能够实现对DRE系统的实时检测,而无需事先了解度量结构和复杂。同样,仪器行为可以在运行时修改,以确保对软件系统性能的影响最小。最后,我们的研究结果表明,WebSockets服务器的网络带宽比AJAX服务器少50%;一个WebSockets客户端以恒定的速度消耗内存,而不是以一定的速度增长;与AJAX相比,WebSockets可以发送多达215.44%的数据样本,同时消耗相同数量的网络带宽。纸张组织。本白皮书的其余部分组织如下:第II部分简要介绍了OASIS;第三节解释了如何将AJAX和WebSockets集成到OASIS中;第四节讨论我们比较研究的结果;第五部分将我们的工作与Web套接字和OASIS与其他相关作品;第六节提供结论性意见和经验教训。

2 OASIS概述

OASIS是DRE系统的实时仪器中间件,它使用与宽松耦合的数据收集设施集成的元数据驱动设计。 图1展示了OASIS架构的高级概览。如此所示:

图1 OASIS体系结构和中间件的高级概述

图中,OASIS的架构有以下关键实体:
bull;软件探测。 软件探针是负责在软件工具下从DRE系统收集指标的实体。 开发人员使用探针定义语言(PDL)定义软件探针。 PDL随后用于生成用于打包收集的仪器数据的基本实现,以及用于解包收集的仪器数据的存根。 然后系统开发人员可以选择继承基本实现来定义更多领域特定的行为来收集检测数据,例如使用系统API来读取数据点。

清单1.说明存储器软件探测器的PDL规范的源代码片段。
清单1显示了从主机系统收集内存使用情况数据的软件探测的PDL。 LinuxMemoryProbe或WindowsMemoryProbe的基本实现被继承以分别从/ proc或Linux和Windows主机上的Windows性能计数器中提取数据。最后,软件探测器可以是客户端驱动的或活动对象。
bull; 嵌入式仪表节点。嵌入式设备(EI)节点通过网络抽象桥接了局部受限的抽象。当EI节点将收集的仪表数据作为数据包接收时,它将其信息(例如,UUID,包号,时间戳和主机名)预先加入到数据包中,并通过网络发送。
EI节点没有绑定到特定的网络通信协议或技术。例如,EI节点可以使用CORBA [10](例如,ACE ORB(TAO)[11])或数据分发服务(DDS)[12](例如RTI-DDS(www.rti.com) )和OpenSplice(www.prismtech.com/opensplice))发送完整打包的EI节点检测数据。这种设计方法允许DRE系统开发人员为他们的域选择最合适的网络中间件,而不会影响OASIS如何封装仪器数据。最后,每个应用程序上下文(即,一个执行块,例如循环或条件,对象/类,组件或单个应用程序)有一个EI节点。
bull; 数据采集和控制器。数据采集​​和控制器(DAC)负责从EI节点接收打包数据并控制对其的访问。 DAC还管理数据处理程序,这些处理程序是对从EI节点接收到的仪表数据执行操作的对象。例如,档案数据处理程序将收集的指标存储在关系数据库中,实时发布者数据处理程序允许客户端注册检测数据并实时接收数据。这种设计方法允许OASIS从其数据处理设施中提取数据收集设施,并将数据处理设施放置在DRE系统的执行领域之外。
bull; 测试和执行管理器。测试和执行(TnE)管理器是DAC的命名服务。因此,它是希望访问收集的仪器数据的客户的OASIS主要入口点。
bull; 性能分析工具。性能分析工具是使用OASIS收集的仪器数据的客户端。性能分析工具的例子包括,
但不限于:实时事件处理引擎和仪表板。最后,性能分析工具可以向软件探测器发送信号/命令,以在运行时改变其行为。这种设计使系统开发人员,系统测试人员和性能分析工具能够在运行时控制软件工具的影响,并将OASIS的开销降至最低。
随着Web技术(如AJAX和WebSockets)的最新发展,现在可以利用Web实时监控DRE系统。但是,它不知道这种技术对这个领域有什么影响。而且,与AJAX相比,WebSockets是一项相当新的技术。因此,不知道哪种技术对这个领域更好。因此,本文的其余部分将讨论如何将AJAX和WebSockets集成到OASIS中,并比较两种技术的性能。

3将网站和AJAX集成到OASIS中

前一节提供了OASIS的概述。正如在该节中讨论的那样,数据处理程序是OASIS的一个组成部分。这是因为数据处理程序会处理DRE系统外接受软件检测的仪器数据。因为我们希望将AJAX和WebSocket集成到OASIS中(如第II部分所述),并比较其性能,因此数据处理程序是执行此集成的最佳位置,因为它确保对DRE系统性能的影响最小。本节的其余部分因此讨论了我们如何在OASIS中集成AJAX和WebSockets数据处理程序,目的是比较它们在实时仪器和DRE系统监控中的性能和适用性。
A.将AJAX集成到OASIS中
图2概述了AJAX如何集成到OASIS中。第一部分介绍了支持AJAX的Web应用程序的各种设计和实现方法。我们为AJAX实现了流模式[5],因为它最符合我们的设计需求。如图所示,AJAX被集成为DAC数据处理程序。当DAC接收仪表数据时,它将被转发到AJAX数据处理程序。然后,AJAX数据处理程序解压缩插装数据,并以JavaScript Object Notation(JSON)[13]格式将其写入磁盘上的本地文件。这与将检测数据写入数据库相似
然后,我们实现了一个简单的PHP(www.php.net)脚本,该脚本从由AJAX数据处理程序更新的文本文件中读取值。该脚本以这样的方式编写,即在检查文本文件的更新时执行无限循环。如果检测到更新,那么脚本会从本地文件读取值并将其传输到Web客户端。由于流模式,Web服务器保持HTTP连接
1我们意识到这种设计方法会产生不偏向AJAX的偏见结果。但是,根据我们的调查,我们了解到这是现实世界中用于创建支持AJAX的Web应用程序的最常用方法。更优化的方法包括创建一个替代平面文件(或数据库)的内存缓冲区。

图2 将AJAX集成到OASIS中的高级概述。

无限期地开放。最后,该脚本托管在Apache Web服务器中。对于这个集成版本,我们设计了一个简单的Web应用程序,该应用程序使用XMLHttpRequest对象打开与AJAX数据处理程序的连接并实时接收仪表数据。 当Web应用程序收到新的JSON消息时,它会查找收到的最后一个数据样本,并用它更新HTML表格。
B.将WebSockets集成到OASIS中
图3概述了WebSockets如何集成到OASIS中。 如此图所示,WebSocker作为数据处理程序集成到OASIS中。 与AJAX集成不同,WebSockets数据处理程序和Web应用程序之间没有中间步骤。 相反,由于WebSockets数据处理程序是由DAC转发的检测数据,它将检测数据以相同的二进制格式发送到Web应用程序

图3 将WebSocket集成到OASIS中的高级概述

与AJAX数据处理程序(在第III-A节中解释)相比,WebSockets数据处理程序的设计和实现更加复杂,如图4所示。我们使用自适应通信环境(ACE)实现了WebSockets数据处理程序[14 ],这是一个广泛使用的C 框架,用于编写便携式网络应用程序,并在DRE系统中使用[15]。 我们还使用ACE来实现WebSockets数据处理程序,因为它的Acceptor / Connector框架简化了许多网络挑战,例如按正确的字节顺序读取/写入数据; 读/写帧,这是WebSockets协议的组成部分; 并管理多个Web应用程序之间的连接。
如图4所示,WebSockets数据处理程序由以下设计的关键抽象组成。

图4 使用ACE实现的WebSockets数据处理程序的架构图

被任何WebSockets客户端/服务器使用:
bull; WebsockAcceptorTask。 WebsocketAcceptorTask是一个在ACE中扩展ACE Task类的活动对象。该对象执行N个运行ACE Reactor对象事件循环的线程。 ACE Reactor对象是一个将事件(如

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[22653],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。