`
m635674608
  • 浏览: 5027872 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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

    博客分类:
  • java
 
阅读更多

如何正确使用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的异步和通知特性

 

http://blog.csdn.net/cutesource/article/details/6192016

分享到:
评论

相关推荐

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

    本文将从这三个框架中提炼出NIO构架网络服务器的经典模式,并逐一解析它们的核心机制。 首先,Jetty的NIO实现主要由以下几个关键组件组成: 1. **SelectChannelConnector**:负责整合各个组件,创建和管理连接。 2....

    Jetty和tomcat比较.docx

    ### Jetty和Tomcat的比较 #### 相同点 - **Servlet引擎**: Tomcat和Jetty都是基于Java的Servlet容器,支持标准的servlet规范和JavaEE的规范。这意味着开发者可以在这些容器中部署和运行Java Web应用。 #### 不同...

    websocket+tomcat+jetty+netty

    Netty则是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。Netty提供了对WebSocket协议的全面支持,包括WS和WSS(WebSocket over SSL/TLS)。通过Netty,开发者可以轻松地实现...

    how tomcat works和jetty-src和tomcat7-src

    【标题】"how tomcat works和jetty-src和tomcat7-src" ...综上所述,对Tomcat和Jetty源代码的探索,不仅能增进对Web服务器工作原理的认识,还能提升开发者在Java Web开发中的专业技能,从而更好地应对复杂的项目需求。

    服务器tomcat、jetty

    在这个场景中,我们关注的是两个非常流行的Java应用服务器:Tomcat和Jetty。这两者都是用于托管Java Servlet和JavaServer Pages (JSP) 应用程序的开源平台。 **Tomcat** Tomcat是由Apache软件基金会维护的开源项目...

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

    在这个资源中,我们将详细介绍如何将 XACS 从 Jetty 平台移植到 Tomcat 平台的步骤和过程。这个指南将帮助读者快速掌握移植的步骤,并成功将 XACS 部署到 Tomcat 平台上。 一、准备环境 在开始移植之前,我们需要...

    jetty,tomcat原理

    2. **模块化设计**:Jetty由一系列小型模块组成,可以根据需要选择和组合,这种灵活性使得Jetty在资源有限的环境中表现出色。 3. **嵌入式使用**:Jetty可以轻易地嵌入到其他Java应用程序中,无需单独部署和管理...

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

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

    Eclipse SVN Jetty Tomcat jad 等常用插件

    "Eclipse SVN Jetty Tomcat jad 等常用插件"这个标题提到了几个在Java开发中非常关键的工具和组件,让我们一一解析它们: 1. **SVN(Subversion)**: - SVN是版本控制系统,用于跟踪和管理项目源代码的变更。在...

    SpringBoot切换Tomcat容器,SpringBoot使用Jetty容器

    本文将深入探讨如何在Spring Boot项目中从Tomcat切换到Jetty容器,以及这两个容器的特点和使用场景。 首先,Tomcat是Apache软件基金会的开源项目,是Java Servlet和JavaServer Pages(JSP)的标准实现。它以其轻量...

    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开发人员去下载

    jetty 服务器

    与传统的Tomcat服务器相比,Jetty具有更小的内存占用和更快的启动速度。由于它的模块化设计,可以根据实际需求选择需要的功能,从而保持轻量级特性。 2. **安装与配置** - **下载**:根据提供的压缩包文件名"jetty...

    jetty 适合jdk1.8用的服务器

    Jetty是一款开源、轻量级的Web服务器和Servlet容器,被广泛用于开发、测试和部署Java Web应用程序。相较于Apache Tomcat,Jetty以其简洁的架构、高性能和低内存占用而受到开发者青睐。在选择Jetty时,必须考虑到与...

    jetty服务器

    在Java开发环境中,Jetty常常作为嵌入式服务器使用,便于快速构建和部署应用。 本资源包提供了Jetty服务器的安装包(jetty-distribution-9.4.14.v20181114.zip),这是Jetty的一个特定版本,9.4.14.v20181114。...

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

    其中,JBoss、Tomcat和Jetty是最为广泛使用的Servlet容器,它们各自拥有独特的架构和工作原理,但同时也具备协同工作的能力。 **一、JBoss的基本架构与工作原理** JBoss是一个功能强大的企业级Java应用服务器,其...

    jetty嵌入式服务器实例大全

    Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,因其开源、小巧且易于集成的特点,被广泛应用于各种项目中。本实例大全将全面解析Jetty在不同场景下的使用,帮助你深入理解和掌握Jetty的特性。 1. **...

Global site tag (gtag.js) - Google Analytics