孙贵华视频:从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式(一)
来源:百度文库 编辑:偶看新闻 时间:2024/04/29 11:50:57
从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式(一)
分类: 架构分析 源码分析 2011-02-17 17:46 13083人阅读 评论(10) 收藏 举报如何正确使用NIO来构架网络服务器一直是最近思考的一个问题,于是乎分析了一下Jetty、Tomcat和Mina有关NIO的源码,发现大伙都基于类似的方式,我感觉这应该算是NIO构架网络服务器的经典模式,并基于这种模式写了个小小网络服务器,压力测试了一下,效果还不错。废话不多说,先看看三者是如何使用NIO的。
Jetty Connector的实现
先看看有关类图:
其中:
SelectChannelConnector负责组装各组件
SelectSet负责侦听客户端请求
SelectChannelEndPoint负责IO的读和写
HttpConnection负责逻辑处理
在整个服务端处理请求的过程可以分为三个阶段,时序图如下所示:
阶段一:监听并建立连接
这一过程主要是启动一个线程负责accept新连接,监听到后分配给相应的SelectSet,分配的策略就是轮询。
阶段二:监听客户端的请求
这一过程主要是启动多个线程(线程数一般为服务器CPU的个数),让SelectSet监听所管辖的channel队列,每个SelectSet维护一个Selector,这个Selector监听队列里所有的channel,一旦有读事件,从线程池里拿线程去做处理请求
阶段三:处理请求
这一过程就是每次客户端请求的数据处理过程,值得注意的是为了不让后端的业务处理阻碍Selector监听新的请求,就多线程来分隔开监听请求和处理请求两个阶段。
由此可以大致总结出Jetty有关NIO使用的模式,如下图所示:
最核心就是把三件不同的事情隔离开,并用不同规模的线程去处理,最大限度地利用NIO的异步和通知特性
JSP中tomcat和jdbc 驱动的配置
Tomcat无法从"开始"中启动,但可以在startup.bat中启动
tomcat中access的问题
Win98中Tomcat的安装
eclipse 中 tomcat 无法启动
把TOMCAT加入IIS中
eclipse中使用tomcat问题
如何在frontpage中执行jsp计数器程序段,需要安装tomcat和jdk吗?
我可以在eclipse中同时安装Tomcat和JBoss吗?急啊
在eclipse中如何插入myeclipse和tomcat(插件),之后如何通过运行?
tomcat?????
tomcat??
如何安装JDK和TOMCAT
orcale和tomcat的连接
tomcat和花生壳怎么使用?
JSDK和TOMCAT的问题!
eclips和tomcat怎么卸载?!
tomcat从安装配置到使用
MINA除了接电话和KISS还有哪首歌好听啊?
Tomcat中如何在后台配置Jndi
apache+tomcat中地址栏的问题
怎样在JbuilderX中使用Tomcat呀
如何在Eclipse中整合Tomcat
怎么把tomcat嵌入Jbuilder中