您的位置:首页 > 其它

Servlet3.0---异步支持

2016-03-09 11:12 411 查看


Servlet3.0新特性---异步支持

1.servlet2.5中,页面发送一次请求,是顺序执行,即使在servlet里的service中开启一个线程,线程处理后的结果是无法返回给页面的,servlet执行完毕后,response就关闭了,无法将后台更新数据即时更新到页面端

2.现在后台“推”是怎么实现的

2.1定时发送请求,页面有刷新,不好友

2.2Ajax 轮询,然后通过js更新页面数据

相比前者虽然友好,访问量太大时,服务器会增加压力,小型应用可以考虑用

2.3反向Ajax(Comnet)

利用Http1.1长连接的特性,也是通过轮询,但是每次发送请求不会立即返回,而是等待服务器有数据时才返回或者没有等到数据而连接超时返回,相比于ajax轮询,减少了服务端压力,但一个缺点,不是所有浏览器都支持。

3.servlet3.0中提供了异步支持,当数据返回页面后,request并没有关闭,当服务器端有数据更新时,就可以推送了

Servlet3.0是Tomcat7出现的新特性,而异步处理是servlet 3.0的最重要的特征。

  在Servlet 3.0之前,通过Servlet执行比较耗时的任务时,Servlet线程会被阻塞,直到所有的处理完成后才能得到响应。如果服务器的请求链接很多,它将达到最大Servlet线程限制,后续的请求被拒绝出现连接错误。虽然这种同步问题可以用特定的方案解决,比如Tomcat 的 Comet、WebLogic
的FutureResponseServlet 和 WebSphere的Asynchronous Request Dispatcher。这种特定容器的解决方案的问题在于,在不改变应用程序代码时不能移动到其他Servlet容器。

  而Servlet3.0提供标准的方式异步处理Servlet的同时增加异步Servlet支持。这样在Servlet API 3.0实现成为主流后,解决方案就变得更加简单、标准化且优雅。

  2 异步Servlet实践

  2.1 异步Servlet实现

  本实践在Tomcat 7.0,JDK1.7环境下,基于eclipse 3.7集成开发环境下来搭建实践工程。

  (1)配置

  配置Tomcat采用Servlet3.0,有两种配置方式:一种是注解式,一种是修改web.xml配置,我们采用了注解式。

  (2)异步Servlet实现流程

  启动一个异步的Servlet处理过程,映射为异步上下文对象;

  对这个上下文对象加入一个监听;

  设置一个超时时间,终止异步过程;

  创建执行业务逻辑的工作线程池;

  将异步上下文放入线程池执行业务逻辑。

  2.2 异步Servlet测试

  实践采用Apache的JMeter测试工具,对项目中使用异步Servlet方式的的并发请求处理能力进行测试,同时与原有Servlet方式进行对比分析。

  在相同测试服务和模型情况下,两种方式测试的统计结果如下:

  原Servlet:

  异步Servlet:

  从以上结果可以看出,异步Servlet平均性能有一点提升,但提升不大,即整体性能受限于请求/响应的完整处理时间,跟是否采用异步方式无关。但偏离数据大幅度缩小,表明采用异步Servlet后,服务器的线程调度能力得到很大改善,响应处理能力加强。

  3 测试结果分析

  (1)经过对比分析,可以确认Tomcat对于Servlet当前请求的处理,不论是否采用Servlet3.0写法,都是一个请求对应一个响应,标准的协议处理模式。

  (2)从并发的角度看,Servlet3.0的异步处理能力,不是针对同一个用户提交的请求,而是针对大量用户请求提交到服务端后的处理效果。其核心就是Servlet对象能够快速返回,接收其他用户连接上的请求,从而减少Servlet对象的创建/销毁在性能上的开销,避免因对象过多造成达到Servlet最大线程限制而可能的拒绝服务。在同样大数量并发请求场景下,异步Servlet对服务器稳定以及处理性能提升很有帮助。

  (3)当业务逻辑处理的返回值跟本次请求所需要的返回值不相关,即可以立即返回响应而不需等待业务逻辑处理结果时,用Servlet3.0则将对整个处理性能有一个质的飞跃。

  4 实践总结

  通过实践分析,对于Servlet3.0的使用,需要根据具体的场景和服务器能力设计来权衡使用。该解决方案非常适合于某些应用场景,比如说通知类、日志类服务等,他们的执行与请求/响应是解耦的。而对于需要等待数据库查询完成,或者需要明确获得本次处理结果,才能返回响应处理场景来说,这种方式就没有什么必须性了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: