Tomcat学习积累笔记—Tomcat的连接器组件—Coyote
1.Coyote简介
Coyote 是Tomcat 中连接器的组件名称 , 是对外的接⼝。客户端通过Coyote与服务器建⽴连接、发送请求并接受响应 。
- Coyote 封装了底层的⽹络通信(Socket 请求及响应处理)
- Coyote 使Catalina 容器(容器组件)与具体的
请求协议(http请求,应用层)及IO操作⽅式(有一些IO模型:BIO,NIO等,传输层)完全解耦
- Coyote 将Socket 输⼊转换封装为 Request 对象,进⼀步封装后交由Catalina 容器进⾏处理,处理请求完成后, Catalina 通过Coyote 提供的Response 对象将结果写⼊输出流
- Coyote 负责的是具体
协议(应⽤层)和IO(传输层)相关内容
解耦


-
Tomcat Coyote ⽀持的 IO模型与协议,协议对应应用层,IO模型对应传输层
-
Tomcat⽀持多种应⽤层协议和I/O模型,如下:
- 在 8.0 之前 ,Tomcat 默认采⽤的I/O⽅式为 BIO,之后改为 NIO。 ⽆论 NIO、NIO2 还是 APR, 在性能⽅⾯均优于以往的BIO。 如果采⽤APR,甚⾄可以达到 Apache HTTP Server 的影响性能。
2.Coyote内部组件及工作流程

流程分析
- 当一个
request的http请求过来的时候连接器组件要捕获这个请求
- Coyote 的组件
EndPoint,指的是一个通信端点,而且Coyote具有处理Socket的通信功能,而且EndPoint就是具体来做处理Socket通信的活的
-
EndPoint对标是TCP/IP这部分的处理(Sockrt通信的处理),是实现TCP/IP协议的,也是对传输层的抽象,后来会发现他就是做Socket通信编码的
- 捕获到
socket之后将它传入到Processor中,Processor是处理HTTP/AJP的(应用层协议),所以说Processor是应用协议处理接口
-
Processor解析由EndPoint传过来的socket,读取里面的字节流,将socket解析成Request对象,这个Request对象是tomcat原生的Request对象
-
Request对象通过Adapter将Request对象转换成ServletRequest对象,之后传递给Container
-
Containner处理完就开始返回是上面的逆向方式
- 可以看出:
EndPoint,Processor,Adapter这三个组件共同完成Coyote的功能
相关文章:
-
2021-05-04
-
2021-06-20
-
2021-05-27
-
2021-05-22
-
2021-11-28
-
2021-07-20
-
2021-06-26
猜你喜欢
-
2021-12-14
-
2021-10-01
-
2021-12-22
-
2021-11-26
-
2022-12-23
-
2022-01-07
-
2021-07-05
相关资源
-
下载
2023-02-06
-
下载
2022-12-23
-
下载
2021-06-26