快速业务通道

Java EE:迎合Web 2.0 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
限(以抽象单位表示持续时间)

阶段 持续时间 操作
1 2 个单位 解析 servlet 请求信息
2 8 个单位 处理本地数据库事务
3 2 个单位 处理数据库请求结果并准备远程调用
4 16 个单位 使用一个 Web 服务调用远程服务器
5 4 个单位 创建响应
总用时: 32 个单位

图 1 展示了执行期间业务逻辑、数据库和 Web 服务之间的时间分布:

图 1. 执行步骤的时间分布

Java EE:迎合Web 2.0(5)

时间:2011-01-26 IBM Constantine Plotniko

这些选择的时限提供了一个可读的图表。在实际中,大多数 Web 服务进行处理使用的时间远远超过图表显示的时间。可以这样讲,Web 服务的处理时间要比业务逻辑 Java 代码的处理时间高出 100 到 300 倍。但是,为了演示同步调用模型,我们挑选了一些不太符合现实的参数,比如,Web 服务性能极其快,或者应用服务器速度很慢,或两者兼有。

让我们假设连接池的容量为 2。因此,同一时间内只能处理两个数据库事务。(对于真实的应用服务器,实际的线程数和连接数要比这个数大)。

我们还假设 Web 服务调用使用的时间相同并且全部可以并行处理。这一假设比较符合实际,因为 Web 服务交互过程包括来回发送数据。执行实际的处理只是 Web 服务调用的一小部分。

对于这种场景,同步和异步用例在低负载下表现相同。如果数据库查询和 Web 服务调用并行进行,异步用例表现更加良好。在发生超载时,比如访问量忽然达到峰值,将看到一个有趣的结果。我们假设同一时刻有 9 个请求。对于同步用例,servlet 引擎线程池有三个线程。而对于异步用例,我们只使用一个线程。

注意,在这两个用例中,所有 9 个连接在到达时全部被接受(大多数 servlet 引擎都会这样做)。然而,在处理前三个连接时,同步用例没有对接受的其他六个连接进行处理。

图 2 和图 3 是使用一个简单的模拟程序创建的,它分别模拟同步和异步 API 用例:

图 2. 同步用例

图 2 中的每个矩形表示流程的一个步骤。矩形中的第一个数字是流程编号(1 到 9),第二个数字是流程内的阶段编号。每个流程使用惟一的颜色标记。注意,数据库和 Web 服务操作位于单独的行中,因为它们分别由数据库引擎和 Web 服务实现执行。servlet 引擎在等待结果期间不执行任何操作。浅灰色区域表示空闲(等待)状态。

图表底部的菱形标记表示在该点完成了一个或多个请求。标记的第一个数字表示以抽象单位计算的时间;第二个使用圆括号括起的可选数字表示在该点终止的请求数。在图 2 中可以看到,前两个请求在点 32 处完成,最后一个请求在点 104 处完成。

现在假设数据库和 Web 服务客户机运行时支持异步接口。并且假设所有异步 servlets 只使用一个线程(但是,如果提供了额外线程的话,异步接口非常适合使用额外线程)。图 3 显示了结果:

图 3. 异步用例

Java EE:迎合Web 2.0(6)

时间:2011-01-26 IBM Constantine Plotniko

图 3 中有几处需要注意。第一个请求要比同步用例中晚结束 23%。但是,最后一个请求则快了 26%。并且所使用的线程只是同步用例的三分之一。请求执行时间的分布更加有规律,因此用户可以以更加有规律的速度接收页面。第一个请求和最后一个请求的处理时间相差了 80%。在同步接口用例中,这个值达到了 225%。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号