从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式(二)
本文转载自 http://blog.csdn.net/cutesource/article/details/6192145
下面再来看看Tomcat是如何使用NIO来构架Connector这块的。
先看看Tomcat Connector这块的类图:
其中:
NioEndpoint负责组装各部件
Acceptor负责监听新连接,并把连接交给Poller
Poller负责监听所管辖的channel队列,并把请求交给SocketProcessor处理
SocketProcessor负责数据处理,并把请求传递给后端业务处理模块
在整个服务端处理请求的过程可以分为三个阶段,时序图如下所示:
阶段一:监听并建立连接
这一阶段主要是Acceptor监听新连接,并轮询取一个Poller ,把连接交付给Poller
阶段二: 监听客户端的请求
这一过程主要是让每个Poller监听所管辖的channel队列,select到新请求后交付给SocketProcessor处理
阶段三:处理请求
这一过程就是从多线程执行SocketProcessor,做数据和业务处理
于是乎我们发现抛开具体代码细节,Tomcat和Jetty在NIO的使用方面是非常一致的,采用的模式依然是下图:
从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式(二)相关推荐
- 从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式(三)
2019独角兽企业重金招聘Python工程师标准>>> 从Jetty.Tomcat和Mina中提炼NIO构架网络服务器的经典模式(三) 博客分类: java 最后我们再看看NIO方面 ...
- 从100套真题中提炼而出的100个经典句子
1. Typical of the grassland dwellers of the continent is the American antelope, or pronghorn. 1.美洲羚羊 ...
- 虚拟机中连接外部无线网络
前言 在使用虚拟机中ubuntu与JetsonTX2实现ssh连接时,需要将虚拟机中操作系统与外部系统连接. 配置简介: 物理主机win10.VMware15pro.ubuntu18.04 参考 在虚 ...
- springBoot中jetty tomcat undertow对比与undertow线程池配置
springBoot中jetty tomcat undertow对比 1)tomcat优点是稳定性好.可靠性高.支持 Servlet 和 JSP 等标准.构建中小型的 Web 应用程序,可以选择 To ...
- java中的NIO,BIO,AIO
IO,input和output,Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中. IO是什么?为什么需要IO? java在1.4之前,提供的是BIO,也就是ja ...
- mina 中的IoBufer(一)
为什么80%的码农都做不了架构师?>>> IoBuffer 是 MINA 中的独有接口,主要继承实现的是 java NIO 中的 ByteBuffer ,所以从使用方法上来看二 ...
- 天生一对Maven2+Jetty -- Maven2创建并管理WebApp,并使用Maven Jetty Plugin在Eclipse中调试...
天生一对"Maven2+Jetty" -- Maven2创建并管理WebApp,并使用Maven Jetty Plugin在Eclipse中调试 Maven2代比1代改进很多,其中 ...
- Tomcat Connector的BIO与NIO模式的比较及区别
详细介绍了Tomcat的Connector组件的BIO和NIO模式以及工作流程. 上一篇文章:Tomcat的核心组件以及server.xml配置全解[一万字]中,我们简单介绍了Connector组件的 ...
- Tomcat 的三种(bio,nio.apr) 高级 Connector 运行模式
Tomcat的运行模式有3种.修改他们的运行模式.3种模式的运行是否成功,可以看他的启动控制台,或者启动日志.或者登录他们的默认页面http://localhost:8080/查看其中的服务器状态. ...
最新文章
- MyEclipse搭建java Web项目开发环境
- 自己动手写RTP服务器——关于RTP协议
- 毕业设计第四次任务书
- baidu+app+per+android,百度移动统计|移动应用APP统计|android统计分析|iOS统计分析
- VS2017 按ctrl+f5执行程序窗口依然一闪而过的问题(图文)
- Solr 搭建搜索服务器
- Alsa驱动分析(转)
- Socket编程应用——开发聊天软件
- RedShift到MaxCompute迁移实践指导
- Python中真的是能使用元组的地方尽量不使用列表吗?
- java 生成不重复随机数_Java如何实现生成n个不重复的随机数 Java实现生成n个不重复的随机数代码...
- 【征文】极客头条使用体验及改进建议
- 安装LaTeX中文字体 xGBKFonts
- 互联的情怀 凝成一股绳共同成长
- CTPN/CRNN的OCR自然场景文字识别理解(一)
- GPS学习之二:AGPS,GPS,DGPS 认识
- 2020宁波银行终面一分钟抽词演讲
- 计算机网络 如何算 子网号,已知Ip地址子网掩码如何计算子网号、主机号.doc
- C++语言Switch函数使用小贴士
- Win10系统在当前文件夹下打开cmd(命令行)窗口
热门文章
- [Ext JS 7 ]7.5 自适应配置 - Responsive Configs
- [Perl系列—] 2. Perl 中的引用用法
- 2019新悦动打火困难解决了吗_悦动大面积存在启动困难北京现代检查不出原因就换零件...
- 2019一级计算机等级考试试题,2019年全国计算机等级考试一级练习试题及答案(一)...
- 华为鸿蒙os系统电脑有吗,华为全面启用鸿蒙OS系统!所有华为终端设备:默认搭载鸿蒙系统...
- Ordering Tasks UVA - 10305(拓扑排序)
- 计算机三级之嵌入式系统学习笔记1
- 计算机电缆检测报告,天联牌计算机电缆详细介绍
- 使用Excel4J获取Excel文件中的数据
- es6删除数组某项_javascript基础系列:数组常用方法解析