码迷,mamicode.com
首页 > Web开发 > 详细

基于tomcat响应处理模型实现的高并发web服务器

时间:2014-05-11 22:07:20      阅读:385      评论:0      收藏:0      [点我收藏+]

标签:web服务器   并发   tomcat   nio   服务器   

在上一篇博客中,一个简单的AIOweb处理例子,可以看到AIO异步处理,依赖操作系统完成IO操作的Proactor处理模型确实很强大,可以是实现高并发,高响应服务器的不错选择,但是在tomcat中的connector的处理模型还依旧是基于NIO的处理,当然,我认为这可能会在以后的版本进行改进,但另一方面,我更认为AIO的负载控制方面的处理可能是比较难的,因为AIO api并没有提供我们对分配线程组的处理,而只是提供一个线程组,交给操作系统去解决io处理上的问题,所以,这可能会给需要复杂处理的负载均衡带来一定的控制难度


对于tomcat的connector处理,我推荐看一下这篇博客,分析的比较到位http://liudeh-009.iteye.com/blog/1561638



bubuko.com,布布扣


tomcat的处理模型就是这样的,通过acceptor去accept过来的channel,再将channel注册到pollers中的selector,去select以及后面进行业务IO处理,接下来就是servlet引擎的工作 ,对channel的request进行响应。


好吧,接下来介绍一下我的实现吧,我的例子中是采用静态页面作为响应,如果有哪位朋友知道如果加入servlet,以及像tomcat一样servlet引擎的东西,请指教

类的结构图,这里就不贴代码了,有兴趣的朋友,可以到http://download.csdn.net/detail/chenxuegui123/7330269下载

bubuko.com,布布扣

我的处理模型还是差不多的,都是基于把acceptor和业务IO处理的worker分离开,从而实现更高的响应速度,而和tomcat实现上又有些区别,在acceptor线程组中的每个acceptor中我的实现并不是让非阻塞的ServerSocketChannel一直accept,再对SocketChannel进行处理,而是通过再acceptor中加入一个selector,有操作系统通知我们感兴趣的事件的发生。(以上不贴源码,有兴趣了解的朋友可以看一下上面的源码,还有我的源码下载),当然,这通过测试,在acceptor中加入selector的操作会使得并发更高

而在worker线程组中,我的每个worker都维护这一个阻塞队列,对需要处理的io进行缓存,而不是在加入selector,由操作系统通知我们感兴趣时间的发生,因为在本例中是基于静态页面的响应,所以都是对于每个请求就行响应,简单点,没有tomcat来的那么复杂

当然,经100000个并发响应测试,这个处理模型的并发速度还是不错的

bubuko.com,布布扣



基于tomcat响应处理模型实现的高并发web服务器,布布扣,bubuko.com

基于tomcat响应处理模型实现的高并发web服务器

标签:web服务器   并发   tomcat   nio   服务器   

原文地址:http://blog.csdn.net/chenxuegui1234/article/details/25540151

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!