前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Tomcat NIO(1)-开篇

Tomcat NIO(1)-开篇

作者头像
TA码字
发布2020-07-02 15:15:05
6360
发布2020-07-02 15:15:05
举报
文章被收录于专栏:TA码字TA码字

在日常工程或者开发中避免不了引入 web 服务器(或者是 tcp 服务器),常用服务器有tomcat,jetty,undertow,netty 等等,对于这些服务器,IO 一直是避免不了的话题。对于 IO 知识以及模型的掌握影响着我们对于这些服务器的理解,使用,调优等等。本文是一个系列文章,以学习为目的,以最经典的 tomcat 服务器为例,介绍tomcat 服务器 IO 相关的模型和知识,使用的 tomcat 版本为 v9.0.21。

Tomcat 服务器(tomcat7以上)默认使用 java NIO 模型,NIO 不仅仅需要 java 语言上的支持,同时还离不开各种操作系统对于多路复用的支持(linux,windows,mac等等),所以 NIO 是建立在操作系统上的。另外 tomcat 的 NIO 是基于事件的同步非阻塞 IO,也就是说在 IO 读写的时候依然是同步的,线程需要等待 IO 读写完毕。对于异步 IO 是 tomcat AIO 的实现,不在这里介绍,不过目前基本都是使用tomcat NIO ,几乎很少选择使用 AIO 。

在语言层面,tomcat 实现了一系列 java class 来对 NIO 进行支持,同时也有自己的一套 NIO 模型来配合相关的 class 来运转。也有一系列的线程运行共同支撑 NIO ,包括 acceptor 线程接受原始 socket 连接,事件线程 poller thread 监测注册在原始 scoket 上的事件,tomcat io thread 读写数据并执行 servlet,在数据需要多次读写的时候,由 block poller thread 监测注册在原始 scoket 上的读写事件。另外也对异步 servlet 和长连接有所支持,所以本系列文章中包含如下知识点的介绍:

  • NIO 基础之多路复用
  • Tomcat IO 关键类
  • Tomcat NIO 模型
  • Acceptor 线程
  • Poller 线程
  • Tomcat IO 线程读写数据
  • Block Poller 线程
  • Tomcat 长连接
  • Tomcat 异步支持

目前先写到这里,下一篇文章里我们继续介绍 NIO 基础之多路复用。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 TA码字 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档