图解tomcat-Socket IO部分

Posted 图解Java开源项目

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图解tomcat-Socket IO部分相关的知识,希望对你有一定的参考价值。

socket调测命令。IO线程与业务线程的模型。输入输出buffer设计。

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

这两个字段都是并发链表队列,放的元素都是PollerEvent对象。


PollerEvent默认感兴趣状态是0(即空)reset后也是设置0状态。


NIOEndpoint有个字段是eventCache此处是PollerEvent对象的全局缓存。整个全局不论是Poller还是其他,只要需要PollerEvent对象,都是从这里poll一个,如果poll不到则new一个。用完之后再offer到这个队列里。此队列可以配置大小。


Pollerevents字段主要用于真正NIO事件对应的PollerEvent的存放。Poller线程会不停地events队列中的PollerEvent对象poll出来并调用其run方法。


Poller在注册NIOChannel时,即Acceptor接到accept事件后PollerEvent对象感兴趣的是OP_REGISTER。紧接着会把这个PollerEvent对象加入到Pollerevents队列中。


Http11ConnectionHandler在处理http请求与响应时,如果是异步处理阶段,诸如解析请求头时,此时在处理结束时会向Pollerevents队列中加入一个OP_READPollerEvent。用于后续继续read(因为是异步嘛,可能这一把还没有读取完)。这个阶段在tomcat内部称之为SocketState.LONG(异步解析)


SocketState.OPEN(keep-alive)也会向Pollerevents队列中加入一个OP_READ

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

微信要求原创的内容要达到300字。可是我这是图也是我原创的啊。

哎±±±±±

我只好把其中一张全是字的图用文字再描述下。

另,第一次发这种全是图的,不知道在手机上阅读效果如何。



以上是关于图解tomcat-Socket IO部分的主要内容,如果未能解决你的问题,请参考以下文章

图解Java IO模型

如何通过 socks5 代理使用 JavaScript socket.io-client 库?

Cors 标头未正确处理(http 请求很好,但 socke.io 连接不正确)

RNN,LSTM,GRU简单图解:

图解性能优化读书笔记

图解5种IO模型