2023-04-20 09:03:29 来源: 互联网
随着社会越来越发达,大家都选择在网络上汲取相关知识内容,比如tomcat虚拟主机_tomcat虚拟主机有什么用 ,为了更好的解答大家的问题,小编也是翻阅整理了相应内容,下面就一起来看一下吧!
tomcat虚拟主机(Tomcat虚拟主机有什么用)
Tomcat组件
(资料图片)
Tomcat中的Server是顶层组件,代表Tomcat的运行实例。一个JVM将只包含一个服务器。为了方便扩展,在服务器端引入了监听器组件;为了便于JNDI集成,引入了GlobalNamingResources组件。服务器最重要的组成部分是服务。
一个服务器包括多个服务。
在Tomcat中,服务组件是服务的抽象,一个服务器可以包含多个服务。服务组件负责从接收客户端请求到处理请求的整个过程。它包含几个接收客户端消息的连接器组件和一个处理请求的引擎组件。
此外,服务组件还包含执行器组件,每个执行器都是一个线程池,可以为服务中的其他组件提供线程资源来执行任务。
Tomcat的核心可以认为主要由连接器组件和容器组件组成,其中连接器负责处理客户端连接,容器负责逻辑处理请求并将结果返回给客户端。
不同的连接对应不同的通信协议。
连接器的主要职责是接收客户端连接并接收消息,消息由连接器解析并发送到容器进行处理。Tomcat支持不同的通信协议,如HTTP协议、AJP(Apache *** erv协议)协议等。,所以它需要不同的连接器组件,每个协议对应一个连接器组件。
另外,不同类型的 *** I/O有不同的连接器组件内部实现,可分为阻塞I/O和非阻塞I/O,以HTTP协议为例,看看阻塞I/O和非阻塞I/O的连接器内部实现有何不同。
生物连接器
生物连接器组件
阻止I/O的连接器主要由三个组件组成:
Http11Protocol组件,是Http协议1.1版本的抽象,主要包括JIoEndpoint组件和Http11Processor组件。Tomcat启动时,JIoEndpoint内部的接收器开始监听某个端口。当请求到达时,它将被扔进线程池执行器,任务将由线程池处理。处理过程主要是通过Http11Processor组件解析HTTP协议,并传递给引擎容器。
Mapper组件,负责路由客户端请求,即通过请求地址找到对应的Servlet。
CoyoteAdaptor组件,适配连接器和容器的适配器。
NIO连接器
不阻塞I/O的连接器的结构类似于BIO连接器的结构。主要区别是:
http 11协议组件更改为http 11协议组件;Jinndpoint组件已更改为NioEndpoint;Http11Processor组件改为Http11NioProcessor组件,功能基本相似。
添加了轮询器组件,负责轮询多个客户端连接,不断检查每个连接中是否有可读数据,如果每个连接中有可读数据,则尝试读取和解析消息。
Tomcat有四个级别的容器,即引擎、主机、上下文和包装器。Engine代表全局Servlet引擎。每个服务组件只能包含一个引擎容器组件,但是引擎组件可以包含几个主机容器组件。
Tomcat容器
发动机
除了主机,引擎容器还包括引擎容器级别的监听器组件(Listener)、AccessLog组件(Log)、集群组件(集群功能)、管道组件(请求处理管道)和领域组件(用户权限)。
主持
主机组件代表虚拟主机的抽象,一个虚拟主机可以存储多个Web应用的抽象,即一个主机可以包含多个上下文容器。
与引擎类似,主机容器也包含侦听器、访问日志、集群、管道和领域,但这些组件都在主机容器级别。
语境
Context组件是一个Web应用的抽象,当我们开发的Web应用部署到Tomcat上时,会生成一个Context对象。
上下文包括监听器、访问日志、管道和领域等应用级组件,以及加载器组件(加载web应用资源)、管理器组件(会话管理)、命名资源住院(命名资源)、映射器组件(Servlet映射器)和包装器容器。
包装材料
包装器容器是Tomcat中四个容器中最小的,对应servlet,一个包装器对应一个servlet。
包装器包括Servlet、ServletPool(Servlet对象池)和管道组件(处理管道)。
客户端请求到达Tomcat后的处理流程如上图所示:
当Tomcat启动时,连接器的接收器接受器将监听是否有客户端连接。
一旦客户机连接被监视,连接就被移交给线程池执行器,请求响应任务就开始了。
Http11Processor负责读取和解析来自客户端连接的Http消息,并将解析的消息封装到请求对象中。
根据Http协议中Maper请求的URL值和主机属性,匹配哪个主机、哪个上下文、哪个包装器容器来处理请求。
CoyoteAdaptor负责连接连接器组件和引擎容器,并将请求对象和响应对象传递到引擎容器中。
引擎的请求处理管道开始工作。流水线包括几个阀门,每个阀门负责一些处理逻辑。
引擎容器的请求处理管道完成后,将依次移交给宿主容器的处理管道、上下文容器的处理管道和包装容器的处理管道。最后将结果输出到客户端。
参考:Tomcat内核设计分析
我会不断更新关于物联网、云原生和数字技术的文章,用简单的语言描述复杂的技术,偶尔发表一下对IT行业的看法。请多多关注,欢迎留言转发,希望与您互动。谢谢你。