服务器推技术在实验演示系统中的应用 薛宁静牛永洁 (延安大学计算中心716000) 摘要:分析了实验演示系统中使用服务器推技术的必要性,在此基础上,首先比较了服务器推送信息 与传统拉取信息技术,然后介绍了服务器推技术的发展现状以及实现的不同方案,接着论述了服务器推 术实现过程中的难点与关键点,给出了服务器推技术使用的数据结构和程序流程。最后,经过系统测试 表明实验演示系统采用服务器推技术,工作性能良好,能够达到功能与性能要求 关键字:服务器推,实验演示,实现,异步,线程池 0引言 能够通过某些特定的技术标准或者协议,把用户感兴趣的信息,按照每个不同用户个性 化的要求及时、主动地推送到用户面前的技术称为服务器推技术( Push Technology)。在 基于BS架构的实验演示系统中,实验的演示首先需要客户输入实验的一些参数,然后系统 根据实验参数按照一定的规律自动运行,在客户端显示出实验的过程与结果。在此过程中, 服务器根据实验规律不停的产生一些新数据,这些数据要能够自动的推送到客户面前,以满 足客户界面的更新。在实验演示系统中的这种需求服务器推技术恰恰能够满足。因此,在 个交互良好,能够实时演示实验过程的系统中,为了将数据实时、持续的发送给用户,而不 需要用户多次请求,使用服务器推技术是必须的 1服务器推技术 自从互联网诞生以来,人们一直习惯于在网页上点击某个链接或者按钮等网页元素获得 网站提供的信息。这种由用户主动提出信息请求,服务器响应请求给出相应的信息的方式称 为拉取(pul)技术。通常情况下,人们都是采用这种方式从 Internet网上“拉取”自己所需的 信息,随着网络资源的日益增多与资源类型的多样化,拉取信息的技术在获得信息过程中的 搜索速度、搜索精度、传输速率,还是搜索信息的质量上都越来越难以令人满意凹 1.1服务器推技术与拉取技术的比较 使用拉取方式获取信息时,所花费的时间长,而且费用高;信息传输效率低,网络资源 浪费严重;服务器只能被动的等待用户主动的请求,不同用户因为可能请求时间的不同而获 得不同的信息资源。服务器推技术克服了拉取方式只能以请求应答方式传送数据,而服务 器不能主动推送数据到客户端浏览器的不足 Push技术与Pul技术比较起来,一共具有4个方面的特征 (1)主动性。主动性是Push技术在网络信息服务方面最基本的特征之一,当有新的数据 在服务器端产生时,Push技术会在用户没有发出请求的情况下,通过各种不同方式及时、 主动地通知用户,提高了用户获取信息的及时性。 (2)个性化。Push技术不会漫无目的地向用户推送所有的信息,而是根据用户不同的信 息需要对不同的用户提供个性化的服务,个性化服务是动态且主动的,只要用户设定好规则 之后,系统就能够自动追踪用户的使用模式,用户不需要请求,Push技术就会主动地将信 息传送给用户 (3)智能化。Push技术服务系统中的信息是高速流动的,是有目标地主动寻找合适的信 息用户 (4)高效性。信息推送技术降低重复的、无关的信息在网上传输,避免了垃圾信息对网 络带宽的占用
服务器推技术在实验演示系统中的应用 薛宁静 牛永洁 (延安大学计算中心 716000) 摘要:分析了实验演示系统中使用服务器推技术的必要性,在此基础上,首先比较了服务器推送信息 与传统拉取信息技术,然后介绍了服务器推技术的发展现状以及实现的不同方案,接着论述了服务器推技 术实现过程中的难点与关键点,给出了服务器推技术使用的数据结构和程序流程。最后,经过系统测试, 表明实验演示系统采用服务器推技术,工作性能良好,能够达到功能与性能要求。 关键字:服务器推,实验演示,实现,异步,线程池 0 引言 能够通过某些特定的技术标准或者协议, 把用户感兴趣的信息,按照每个不同用户个性 化的要求及时、主动地推送到用户面前的技术称为服务器推技术[1](Push Technology)。在 基于 B/S 架构的实验演示系统中,实验的演示首先需要客户输入实验的一些参数,然后系统 根据实验参数按照一定的规律自动运行,在客户端显示出实验的过程与结果。在此过程中, 服务器根据实验规律不停的产生一些新数据,这些数据要能够自动的推送到客户面前,以满 足客户界面的更新。在实验演示系统中的这种需求服务器推技术恰恰能够满足。因此,在一 个交互良好,能够实时演示实验过程的系统中,为了将数据实时、持续的发送给用户,而不 需要用户多次请求,使用服务器推技术是必须的。 1 服务器推技术 自从互联网诞生以来,人们一直习惯于在网页上点击某个链接或者按钮等网页元素获得 网站提供的信息。这种由用户主动提出信息请求,服务器响应请求给出相应的信息的方式称 为拉取(pull)技术。通常情况下,人们都是采用这种方式从 internet 网上“拉取”自己所需的 信息,随着网络资源的日益增多与资源类型的多样化,拉取信息的技术在获得信息过程中的 搜索速度、搜索精度、传输速率, 还是搜索信息的质量上都越来越难以令人满意[2] 1.1 服务器推技术与拉取技术的比较 使用拉取方式获取信息时,所花费的时间长, 而且费用高;信息传输效率低, 网络资源 浪费严重;服务器只能被动的等待用户主动的请求,不同用户因为可能请求时间的不同而获 得不同的信息资源。服务器推技术克服了拉取方式只能以请求/应答方式传送数据 , 而服务 器不能主动推送数据到客户端浏览器的不足。 Push 技术与 Pull 技术比较起来,一共具有 4 个方面的特征。 (1)主动性。主动性是 Push 技术在网络信息服务方面最基本的特征之一,当有新的数据 在服务器端产生时,Push 技术会在用户没有发出请求的情况下,通过各种不同方式及时、 主动地通知用户,提高了用户获取信息的及时性。 (2) 个性化。Push 技术不会漫无目的地向用户推送所有的信息,而是根据用户不同的信 息需要对不同的用户提供个性化的服务,个性化服务是动态且主动的,只要用户设定好规则 之后,系统就能够自动追踪用户的使用模式,用户不需要请求,Push 技术就会主动地将信 息传送给用户。 (3) 智能化。Push 技术服务系统中的信息是高速流动的,是有目标地主动寻找合适的信 息用户。 (4)高效性。信息推送技术降低重复的、无关的信息在网上传输,避免了垃圾信息对网 络带宽的占用
1.2Push技术的研究现状 Push技术于1996年首先由 Pointcast公司提出。因为它从根本上改变了因特网上信息 的获取方式。所以各大网络、软件公司如 Microsoft、 Netscape、 Google等纷纷对它进行研究 希望自己在技术上处于领先地位。因此,在20世纪90年代中后期,Push技术是最热门的 研究技术之一。我国对Push技术的研究与国外比较起来稍晚一些。1997年,北京世纪集 团推出了我国首套的Push产品一—天唐2000之资讯天使,标志着我国对其研究的开始 从1997年到现在,我国有关Push技术的相关文献有30多篇。从检索到的资料文献看,多 是对这一技术的介绍。关于理论研究的文献还不多。有关理论研究的文献如:武汉大学软件 工程国家重点实验室的李克清教授等的论文:双向多目文件推送系统。浙江大学李晓明的基 于 Server push技术的机器人远程控制方法研究,吉林大学的金玉善的 Pushlet网络推技术研 究及应用等等。与国外同行相比,我国无论是理论上,还是应用上研究都较少 1.3Push技术的实现方案 服务器推技术的实现方案6从用户使用的方式来看,主要分为两个大的类别,一种是 基于插件的服务器推技术,另一种是无插件的服务器推技术。本文中采用的是无插件的服务 器推技术,在无插件技术的实现方案中,最简单的技术应该是网页刷新( HTML Refresh), 这种技术为了得到服务器端的最新数据,客户端不得不连续向服务端发送请求,不过这种请 求不是客户自己发出的,而是由浏览器自己主动发出,得到新的数据以后,再刷新整个页面。 HTML Refresh方式是实现无插件服务器推技术的最原始的方式,同时也揭示了实现服务器 推技术的最基本的原理。该技术的关键是要保持原有HTTP链接不断。一旦拥有持久的链接 服务器就可以根据自己的数据更新,随时地向客户端发送最新的信息。 Alex russell于2006 年3月在他的一篇技术文章(Comet:LowLatencyDatafortheBrowser)称这种基于HTTP长 链接、无须在浏览器安装插件、事件驱动的服务器推送技术为“ Comet”。 2服务器推技术实现的关键点与难点 Comet技术在实现过程中着重考虑下面的因素。 (1)可扩展性:具体的实现能够在一个负载平衡的环境下工作,不会消耗大量的服务器 资源 (2)兼容性:它能够在大多流行的浏览器(IE、 Firefox等)中运行,而不需要安装任何插 件 (3)实时性:希望该实现尽可能快的得到服务器的响应,因此应该能控制长链接的时 间,希望能提供一个好的用户体验 (4)简单性:希望实现通讯层时,不需要安装任何第三方的任何应用软件或者插件。 综合上述因素,该实现的关键点在于如何提高服务器的响应速度,即在大量客户端链接 服务器的时候,如何尽量减少服务器端的资源消耗。为此在该实现中使用了线程池( Thread Po)技术,同时为了减少服务器端的压力,使用了服务器端的异步响应机制 3程序流程与数据结构 服务器推技术的程序流程如图1所示
1.2 Push 技术的研究现状 Push 技术于 1996 年首先由 PointCast 公司提出。因为它从根本上改变了因特网上信息 的获取方式。所以各大网络、软件公司如 Microsoft、Netscape、Google 等纷纷对它进行研究, 希望自己在技术上处于领先地位。因此,在 20 世纪 90 年代中后期,Push 技术是最热门的 研究技术之一。我国对 Push 技术的研究与国外比较起来稍晚一些。1997 年,北京世纪集 团推出了我国首套的 Push 产品—— 天唐 2000 之资讯天使,标志着我国对其研究的开始。 从 1997 年到现在,我国有关 Push 技术的相关文献有 30 多篇。从检索到的资料文献看,多 是对这一技术的介绍。关于理论研究的文献还不多。有关理论研究的文献如:武汉大学软件 工程国家重点实验室的李克清教授等的论文:双向多目文件推送系统。浙江大学李晓明的基 于 Server Push 技术的机器人远程控制方法研究,吉林大学的金玉善的 Pushlet 网络推技术研 究及应用等等[3,4]。与国外同行相比, 我国无论是理论上, 还是应用上研究都较少。 1.3 Push 技术的实现方案 服务器推技术的实现方案[5,6]从用户使用的方式来看,主要分为两个大的类别,一种是 基于插件的服务器推技术,另一种是无插件的服务器推技术。本文中采用的是无插件的服务 器推技术,在无插件技术的实现方案中[7],最简单的技术应该是网页刷新(HTML Refresh), 这种技术为了得到服务器端的最新数据,客户端不得不连续向服务端发送请求,不过这种请 求不是客户自己发出的,而是由浏览器自己主动发出,得到新的数据以后,再刷新整个页面。 HTML Refresh 方式是实现无插件服务器推技术的最原始的方式,同时也揭示了实现服务器 推技术的最基本的原理。该技术的关键是要保持原有 HTTP 链接不断。一旦拥有持久的链接, 服务器就可以根据自己的数据更新, 随时地向客户端发送最新的信息。Alex Russell 于 2006 年 3 月在他的一篇技术文章(Comet:Low Latency Data for the Browser)称这种基于 HTTP 长 链接、无须在浏览器安装插件、事件驱动的服务器推送技术为“Comet”。 2 服务器推技术实现的关键点与难点 Comet 技术在实现过程中着重考虑下面的因素[8]。 (1) 可扩展性:具体的实现能够在一个负载平衡的环境下工作,不会消耗大量的服务器 资源。 (2) 兼容性:它能够在大多流行的浏览器(IE、Firefox 等)中运行,而不需要安装任何插 件。 (3) 实时性:希望该实现尽可能快的得到服务器的响应,因此应该能控制长链接的时 间,希望能提供一个好的用户体验。 (4) 简单性:希望实现通讯层时,不需要安装任何第三方的任何应用软件或者插件。 综合上述因素,该实现的关键点在于如何提高服务器的响应速度,即在大量客户端链接 服务器的时候,如何尽量减少服务器端的资源消耗。为此在该实现中使用了线程池(Thread Pool)技术,同时为了减少服务器端的压力,使用了服务器端的异步响应机制。 3 程序流程与数据结构 服务器推技术的程序流程如图 1 所示
开始 客户端请求 在服务器注册 服务器阻塞该请求 是否有存储信息 否 是否有新数据 是 否 是否超时 是否超时 是 是 发送到客户端 存储信息 结束 图1服务器推技术的程序流程 为了进一步提高服务器的性能,系统中共使用了两个线程池,线程池1的主要任务 是接受客户端的请求,并将该请求加入到线程池2中,由于对每个客户请求的处理采用异步 处理,一旦将客户请求加入到线程池2后,线程池1中的线程就变为空闲,可以接受更多的 客户请求。线程池2是一个自定义的线程池,在该线程池中,有5个线程,每个线程维护 个列表,每个列表中存放着客户端请求。客户端的请求包含客户名,客户的编号,客户请求 的消息。线程池2中的每个线程不停的从自己的列表中取出客户端的请求进行处理,然后将 处理的结果返回给客户端。所以自定义线程池的功能是用来专门处理请求的具体任务。线程 池之间的关系如图2所示
在服务器注册 服务器阻塞该请求 是否有新数据 是 否 是 否 是否超时 是否超时 否 否 发送到客户端 存储信息 是 是否有存储信息 是 开始 客户端请求 是 结束 图 1 服务器推技术的程序流程 为了进一步提高服务器的性能[9,10],系统中共使用了两个线程池,线程池 1 的主要任务 是接受客户端的请求,并将该请求加入到线程池 2 中,由于对每个客户请求的处理采用异步 处理,一旦将客户请求加入到线程池 2 后,线程池 1 中的线程就变为空闲,可以接受更多的 客户请求。线程池 2 是一个自定义的线程池,在该线程池中,有 5 个线程,每个线程维护一 个列表,每个列表中存放着客户端请求。客户端的请求包含客户名,客户的编号,客户请求 的消息。线程池 2 中的每个线程不停的从自己的列表中取出客户端的请求进行处理,然后将 处理的结果返回给客户端。所以自定义线程池的功能是用来专门处理请求的具体任务。线程 池之间的关系如图 2 所示
线程池2 线程池1 得到一个 获耳 获取 请求对象列表 请求对象列表 添加到某个列表中 图2两个线程池之间的关系 4系统测试及结论 系统开发完成后,针对学校大学物理实验课程中的布朗运动实验进行了压力测试,测试 结果如表1所示。 表1系统测试结果 测试项 测试内容 测试方法 测试结果 页面响应最大时间 通过 Load Runner模拟用户小于5秒 时间特性 页面响应平均时间 访问页面,执行在线交流与1-2秒 400个用户的负载 系统稳定 400个用户的负载下,连续 系统稳定 通过 Loadrunner模拟多用 运行72小时 负载 户的访问,持续72个小时不 200个用户、100个并发用户 系统稳定 间断访问系统 操作的负载下,连续运行72 小时 经过系统测试可以看出,在实验演示系统中采用服务器推技术是可行的,并且由于在服 务器推技术的实现过程中采用了异步处理请求和线程池技术,使得系统的性能良好并运行稳 参考文献 [!焦玉英索传军基于“推”模式的网络信息服务及其相关技术研究[情报学报,2001.2)193-199 [2]张健,袁春风 Internet push技术的分析与展望[门计算机应用研究2000124-7 [3]索传军Push技术开发应用研究述评现代图书情报技术2003,3.48-50 [4]金玉善,黄永平,付庆兴. Push let网络推技术研究及应用吉林大学学报(信息科学
请求对象列表 请求对象列表 1..5 线程池2 线程1 线程5 获取 获取 线程池1 线程 得到一个请求 添加到某个列表中 图 2 两个线程池之间的关系 4 系统测试及结论 系统开发完成后,针对学校大学物理实验课程中的布朗运动实验进行了压力测试,测试 结果如表 1 所示。 表 1 系统测试结果 步骤 测试项 测试内容 测试方法 测试结果 1 时间特性 页面响应最大时间 通过 LoadRunner 模拟用户 访问页面,执行在线交流与 实验演示。 小于 5 秒 2 页面响应平均时间 1~2 秒 3 实验演示执行时间 2~3 秒 4 负载 400 个用户的负载 通过 LoadRunner 模拟多用 户的访问,持续 72 个小时不 间断访问系统。 系统稳定 5 400 个用户的负载下,连续 运行 72 小时 系统稳定 6 200 个用户、100 个并发用户 操作的负载下,连续运行 72 小时 系统稳定 经过系统测试可以看出,在实验演示系统中采用服务器推技术是可行的,并且由于在服 务器推技术的实现过程中采用了异步处理请求和线程池技术,使得系统的性能良好并运行稳 定。 参考文献 [1] 焦玉英,索传军.基于“推”模式的网络信息服务及其相关技术研究[J].情报学报, 2001,(2):193-199. [2] 张健,袁春风. Internet Push 技术的分析与展望[J]. 计算机应用研究.2000,12.4-7. [3] 索传军.Push 技术开发应用研究述评[J].现代图书情报技术.2003,3.48-50. [4] 金玉善 , 黄 永平 , 付 庆兴 . Push let 网 络 推 技术 研 究 及应 用 [J]. 吉 林 大 学学 报 ( 信息 科 学
版)2009,527(3)248-252 S]孙清国朱玮刘华军等web应用中的服务器推送技术研究综述卩计算机系统应 用2008,11.116-119 6]曾维宏陈铁军孟丽等.基于Push技术的主动信息服务系统设计与实现[计算机工程与设 计2005,1126(11.2893-2894 7薛真真基于服务器推送和事件流处理技术的实时Web系统研究浙江大学计算机与软件学院硕士 位论文浙江:浙江大学2008.13-19 [8]万长林,鄢志辉,李晓飞等.对基于HITP推技术聊天室的研究[.南昌大学学报·工科 版2005,3,27(1),94-98 9]胡萍,陈志鹏.基于线程池的高性能服务器软件的设计与实现.计算机技术与发 展2006,16(8):49-54. [10]王华,马亮顾明,线程池技术研究与应用[,计算机应用研究.2005,(11)141-145
版).2009,5,27(3).248-252. [5] 孙清国 朱 玮 刘华军等 .Web 应 用 中 的 服 务 器 推 送 技 术 研 究 综 述 [J]. 计 算 机 系 统 应 用.2008,11.116-119. [6] 曾维宏 陈铁军 孟丽等.基于 Push 技术的主动信息服务系统设计与实现[J].计算机工程与设 计.2005,11,26(11).2893-2894 [7] 薛真真.基于服务器推送和事件流处理技术的实时 Web 系统研究.浙江大学计算机与软件学院硕士 学位论文.浙江:浙江大学.2008.13-19. [8] 万长林,鄢 志辉, 李晓飞 等. 对基于 HTTP 推技术聊 天 室的研究 [J].南昌大学学 报 •工科 版.2005,3,27(1).94-98. [9] 胡 萍 , 陈志鹏.基于线程池的高性能服务器软件的设计与实现 [J] . 计 算 机 技 术 与 发 展.2006,16(8):49-54. [10] 王华,马亮,顾明.线程池技术研究与应用[J].计算机应用研究.2005,(11).141-145