Tomcat功能及架构分析

Posted 仰望星空之一粒麦子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat功能及架构分析相关的知识,希望对你有一定的参考价值。

静下来的时间,不想折腾了,安静下来,做自己吧!


打理生活,看看书,喝喝茶,留时间给自己,余生不长,善待自己才是最重要的。


Tomcat 相信做java的小伙伴一定不陌生,如今微服务容器盛行的时代,spring-boot内嵌了tomcat,让技术人更专注业务的实现,却也屏蔽了好多实现的细节。今天呢就带大家一起来探讨下tomcat的架构。


Tomcat功能

我们先来分析下tomcat有哪些功能?


Tomcat两个非常重要的功能:

  • Http服务器功能:Socket通信(TCP/IP)、解析Http报文;

  • Servlet容器功能:有很多servlet,处理具体的业务逻辑;


Tomcat架构

为了实现上述功能,tomcat进行了很多的设计封装,封装出了很多组件(所谓的组件在java源码中体现的就是具体的java类),组件与组件的关系就构成了所谓的tomcat架构。接下来就一起来欣赏下tomcat有哪些组件及其架构:


所谓容器(Container),并不是常说的用来存储数据结构的类,比如Collection、Set、List等,而是专指tomcat和spring mvc中用来对功能和结构进行分层抽象的概念(类或者接口)。tomcat的基本容器结构如图所示:

Tomcat功能及架构分析


tomcat最顶层的容器Server,代表整个tomcat服务器,一个Server可以包含一个或者多个Service。一个Service包含一个或者多个Connetor,但是只能包含一个Container。Connector主要用来处理连接相关的事,比如网络套接字Socket的监听、请求request的接收和应答response的发送。这里的Container是一个抽象的概念,一个接口。其实是指一个Service只能包含一个Engine–Engine继承自Container。Engine容器结构如图所示:

Tomcat功能及架构分析


其中Engine、Host、Context和Wrapper都继承自Container。
    Engine用来管理多个站点,即可以有多个Host。Host代表一个站点,其实是一个虚拟主机。Context,上下文,代表一套应用程序,一套应用程序总是有相同的应用上下文配置。最后是Wrapper,每个wrapper只有一个Servlet,而每个Servlet即对应每个开发的spring mvc服务程序。所以我们开发的spring mvc服务程序都是通过Wrapper加载到tomcat中。在上一篇 已经介绍过。接下来的几篇中会通过源码调试及启动和请求流程来分析tomcat的实现原理。


最后以tomcat的整体架构图先从宏观上了解其实现,几年前看过一本书

how tomcat works》推荐给大家,带你一步步从零实现一个tomcat,让你真正的了解tomcat的工作原理。

Tomcat功能及架构分析




长按关注,欢迎一起探讨技术


以上是关于Tomcat功能及架构分析的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat 学习进阶历程之Tomcat架构与核心类分析

Tomcat 学习进阶历程之Tomcat架构与核心类分析

Tomcat源码分析二:先看看Tomcat的整体架构

tomcat架构分析-索引

tomcat架构分析 (connector NIO 实现)

深入浅出学习透析Nginx服务器的架构分析及原理分析「底层技术原理+运作架构机制」