`
wxyfighting
  • 浏览: 190829 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式(三)

 
阅读更多

最后我们再看看NIO方面最著名的框架Mina,抛开Mina有关session和处理链条等方面的设计,单单挑出前端网络层处理来看,也采用的是与Jetty和Tomcat类似的模式,只不过它做了些简化,它没有隔开请求侦听和请求处理两个阶段,因此,宏观上看它只分为两个阶段。

先看看它的类图:

其中:

SocketAcceptor起线程调用SocketAcceptor.Work负责新连接侦听,并交给SocketIoProcessor处理

SocketIoProcessor起线程调用SocketIoProcessor.Work负责侦听所管辖的channel队列, select到新请求后交给IoFilterChain处理

IoFilterChain组装了mina的处理链条

在整个服务端处理请求的过程可以分为两个阶段,时序图如下所示:

阶段一:监听并建立连接

阶段二:监听并处理客户端的请求

总结来看Jetty、tomcat和Mina,我们也大概清楚了该如何基于NIO来构架网络服务器,通过这个提炼出来的模式,我写了个很简单的NIO Server,在保持连接的情况下,可以很轻松的保持6万连接(由于有65535连接限制),并能在负载只有3左右的情况下(4核),承担3到4万的TPS请求(当然做的事情很简单,仅仅是把buffer转化为自定义协议的包,然后再把包转为buffer写到客户端)。因此简单地实践一下可以证明这个模式的有效性,不妨再看看这个图,希望对大伙以后写server有用:


分享到:
评论

相关推荐

    从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式

    从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式.doc

    Jetty和tomcat比较.docx

    1. Tomcat和Jetty都是一种Servlet引擎,他们都支持标准的servlet规范和JavaEE的规范。     不同点: 1. 架构比较 Jetty的架构比Tomcat的更为简单 Jetty的架构是基于Handler来实现的,主要的扩展功能都可以用...

    websocket+tomcat+jetty+netty

    websocket+tomcat+jetty+netty

    服务器tomcat、jetty

    开发部署用的服务器,其中包含了tomcat 和 jetty 两款服务器

    linux和windows版本的tomcat和jetty

    本压缩包包含了不同平台——windows以及linux最新的tomcat版本,(包含:tomcat-5.5.36、tomcat-6.0.37、tomcat-7.0.47)。 和jetty-distribution-9.0.6.v20130930。 供java web开发人员去下载

    GeoServer解决jetty和tomcat服务访问跨域的问题

    解决Geoserver在windows环境使用geoserver安装程序 和 windows或linux环境tomcat war包安装后的服务访问跨域问题。

    how tomcat works和jetty-src和tomcat7-src

    NULL 博文链接:https://lovebeaners.iteye.com/blog/1159235

    Tomcat-JBoss-Weblogic-Jetty的区别和介绍

    Tomcat应用也算非常广泛的web 服务器,支持部分j2ee,免费,出自 apache基金组织 JBoss开源的应用服务器,比较受人喜爱,免费(文档要收费) weblogic应该说算是业界第一的app server,全部支持j2ee1.4, 对于...

    jetty,tomcat原理

    这边主要是对tomcat和jetty两个容器的相关实现原理进行整理,主要资源来自网络,作者只是起到整理的作用,这一块也是希望分享出去,给即将面临面试的同学一些帮助,希望所有人都能入职心仪的公司。

    jetty嵌入式服务器必须的jar包

    jetty嵌入式服务器开发所必须的jar包,本人使用jetty版本为6.1.3,jar包总数为9个,来自jetty:commons-el-1.0.jar,jasper-compiler-5.5.15,jasper-compiler-jdt-5.5.15.jar,jasper-runtime-5.5.15.jar,jetty-...

    tomcat,jetty,undertow性能测试.xlsx

    tomcat,jetty,undertow性能测试.xlsx

    Jetty中文手册

    从Jetty早期版本移植到Jetty 6 移植到Jetty 7 Porting to Jetty 8 Porting from Tomcat Jetty版本比较列表 参考 Jetty 7 Latest JavaDoc Jetty 7 Latest Source XRef Index of Generated Release Documents–API and...

    如何将xacs从jetty平台移植到tomcat平台

    想直接通过域名活ip访问xacs或者准备集群配置的童鞋,往这看

    jetty 服务器

    jetty 服务器,解压放到任意文件夹,配置路劲即可,。

    jetty 服务器使用

    jetty 服务器使用

    maven&struts2&jetty&tomcat

    该包适用于maven新手入门,因为作者本身也是一员maven新手,里面包括了maven的下载包,插件包,插件的配置,环境变量的设置,maven项目建立的详解及运行,里面集成了jetty,tomcat,struts2,当然还包括了直接运行jar包...

    jetty-6.1.9 jspweb 服务器

    Jetty 可以作为嵌入式服务器使用,Jetty的运行速度较快,而且是轻量级的,可以在Java中可以从test case中控制其运行。从而可以使自动化测试不再依赖外部环境,顺利实现自动化测试。 作为嵌入式服务器使用代码实例:...

    Servlet引擎:JBoss与Tomcat、Jetty协同工作

    Servlet引擎:JBoss与Tomcat、Jetty协同工作

Global site tag (gtag.js) - Google Analytics