2019独角兽企业重金招聘Python工程师标准>>>

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

最后我们再看看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有用:

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

转载于:https://my.oschina.net/xiaominmin/blog/1599305

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

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

    本文转载自 http://blog.csdn.net/cutesource/article/details/6192145 下面再来看看Tomcat是如何使用NIO来构架Connector这块的. 先 ...

  2. 从100套真题中提炼而出的100个经典句子

    1. Typical of the grassland dwellers of the continent is the American antelope, or pronghorn. 1.美洲羚羊 ...

  3. 虚拟机中连接外部无线网络

    前言 在使用虚拟机中ubuntu与JetsonTX2实现ssh连接时,需要将虚拟机中操作系统与外部系统连接. 配置简介: 物理主机win10.VMware15pro.ubuntu18.04 参考 在虚 ...

  4. springBoot中jetty tomcat undertow对比与undertow线程池配置

    springBoot中jetty tomcat undertow对比 1)tomcat优点是稳定性好.可靠性高.支持 Servlet 和 JSP 等标准.构建中小型的 Web 应用程序,可以选择 To ...

  5. java中的NIO,BIO,AIO

    IO,input和output,Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中. IO是什么?为什么需要IO? java在1.4之前,提供的是BIO,也就是ja ...

  6. mina 中的IoBufer(一)

    为什么80%的码农都做不了架构师?>>>    IoBuffer 是 MINA 中的独有接口,主要继承实现的是 java NIO 中的 ByteBuffer ,所以从使用方法上来看二 ...

  7. 天生一对Maven2+Jetty -- Maven2创建并管理WebApp,并使用Maven Jetty Plugin在Eclipse中调试...

    天生一对"Maven2+Jetty" -- Maven2创建并管理WebApp,并使用Maven Jetty Plugin在Eclipse中调试 Maven2代比1代改进很多,其中 ...

  8. Tomcat Connector的BIO与NIO模式的比较及区别

    详细介绍了Tomcat的Connector组件的BIO和NIO模式以及工作流程. 上一篇文章:Tomcat的核心组件以及server.xml配置全解[一万字]中,我们简单介绍了Connector组件的 ...

  9. nginx反向代理(proxy_pass)tomcat的过程中,session失效的问题解决

    nginx反向代理(proxy_pass)tomcat的过程中,session失效的问题解决 参考文章: (1)nginx反向代理(proxy_pass)tomcat的过程中,session失效的问题 ...

最新文章

  1. 超像素、语义分割、实例分割、全景分割 傻傻分不清?
  2. LINUX常用命令(基础)
  3. 为什么1900年不是闰年
  4. Basic链表与队列的区别
  5. 1039: 二哥的困惑 Ⅱ
  6. 想使用Docker容器?先看看这些注意事项
  7. 常用的寄存器( bss段的作用)
  8. leetcode刷题:搜索旋转排序数组
  9. Qt中图像的显示与基本操作
  10. oracle 正则表达式2
  11. jQuery中,$.extend,$obj.extend和$.fn.extend三者的区别
  12. Collection与Arrays
  13. 索宝机器人_这些莞味十足的旅游商品获奖了!你尝过没?
  14. 计算机课会点名吗,大学课堂点名技术日新月异:电脑摇号扫码上课
  15. HDFS加密存储(HDP、Ranger、Ranger KMS实现)
  16. ZAO作一下,你会是谁
  17. Mac如何破解管理员密码
  18. C语言 三子棋 游戏
  19. 浅析ARM公司在物联网领域的战略布局
  20. Mac OS X pl2303 的驱动下载

热门文章

  1. DevOps笔记-06:什么是CI/CD?它们与敏捷开发和devops的关系?
  2. Which of the following statement(s) equal(s) value 1 in C programming language?
  3. 第二十一讲 任务的删除
  4. 记录奥林比克/课程录制 洛谷P2255 [USACO14JAN]
  5. 阿里内核月报2015年03月
  6. 《JavaScript数据可视化编程》——1.4 用离散图表绘制x/y值
  7. 分布式 Socket 通信
  8. Appcan页面跳转
  9. OSI七层模型具体解释
  10. AutoCAD 2013