众所周知,Tomcat 作为一个 「Http 服务器 + Servlet 容器」,对我们屏蔽了应用层协议和网络通信细节,给我们的是标准的 Request 和 Response 对象。但是我们使用了SpringMVC 之类的框架,却从来不用考虑 TCP 、 Http 协议的数据处理与响应,就是因为 Tomcat 已经为我们解决了这些问题。
今天咱们就来一步一步解析 Tomcat 的构架设计思路,一方面我们可以学到 Tomcat 的总体架构,学会从宏观上怎么去设计一个复杂系统,怎么设计顶层模块,以及模块之间的关系;另一方面也为我们深入学习 Tomcat 的工作原理打下基础,此份笔记适用于所有Tamcat的程序猿(媛)!
笔记的内容丰富,涵盖的知识面广,不同的读者可以根据自己的背景和兴趣挑选相应的章节进行学习,而不必逐章阅读。
注意:由于篇幅有限,这份笔记,已整理成完整的PDF文件,如需参考学习,转发+私信我(学习)即可免费获取文档
章节一:
Tomcat最初由Sun公司的软件架构师James Duncan Davidson开发,名称为“JavaWebServer" ,该项目作为Servlet容器的参考实现,以展示Servlet容器相关技术。随后在Davidson的帮助下,该项目于1999年与Apache软件基金会旗下的JServ项目合并,即为现在的Tomcato
章节二:
本章从多个方面讲述了Tomceat的总体架构。首先,以一种逐渐演进的方式讲解了Tomcat核心组件的设计以及如此设计的原因,便于读者更好地理解相关概念。其次,讲解了主要组件概念及Tomneat的启动和请求处理过程,动态地描述了组件如何相互协作以实现服务器的基本功能。最后,讲述了Tomcat的类加载机制,包括JVM和Tomcat为我们提供的类加载特性,以及这些特性在架构层面的意义。
章节三:
本章主要介绍了Tomcat提供的Servlet容器实现Catalina,包括如下几个方面。口使用Digester解析配置文件并实例化Scrvlet容器。web应用的加载。Web请求的映射及处理。两个默认的Scrvlet配置:DefaultServlet和lJspScrvlet。
章节四:
本章我们介绍了Tomcat链接器框架Coyote以及目前支持的协议、I/O方式。通过本章可以了解到客户端请求从接收到交由Servlet容器处理的整个过程。对于每种协议,Tomcat均提供了对应IO方式的实现,而且Tomcat官方还提供了在每种协议下每种IO实现方案的差异。
章节五:
本章我们重点介绍了Tomcat的JSP引擎——Jasper。讲解了Jasper提供的几种编译方式(运行时编译、预编译),支持的编译器类型(Ant、JDT),以及代码生成和编译过程。了解Jasper原理可以帮助我们解决JSP编译阶段的相关问题,针对编译阶段进行优化,提升系统访问性能,也可以更改编译配置,以满足开发或者部署层面的要求。
章节六:
本章从多个方面介绍了Tomcat的配置。首先是JVM和服务器配置文件,如果希望深度定制及优化应用服务器,这是必须要详细了解的。
章节七:
通过本章的内容,你可以知道如何在不同平台下(Windows、Linux)安装Web服务器及其集成模块,如何配置Web服务器完成多应用集成和负载均衡架构。
章节八:
本章主要介绍了Tomcat Cluster的实现原理及其底层的通信框架Tribes,并对Tomcat Cluster的配置方式进行了简单说明,当集群规模较大时,我们还可以通过分组将集群进行拆分,从而缩小集群规模,这样无论Tomcat的集群还是会话集中管理的方式,都有可能满足我们的部署架构要求。
章节九:
本章讲解了Tomcat与安全相关的配置。在实际开发过程中,我们需要结合应用系统的业务场景,综合考虑,而非一味地堆积各种安全配置,否则不仅达不到预期效果,反而会影响系统的访问性能。此外,系统安全是一个非常复杂的领域,包括网络、应用、数据、操作系统等诸多方面,并不是通过简单的篇幅就可以概述的,本章也只是简单介绍了与Tomcat相关的安全配置,如需了解更详细的系统安全知识,还需要进一步阅读系统安全相关的图书。
章节十:
本章主要介绍了与Tomcat性能优化相关的内容,包括常见的测性能测试方式、常用的性能测试工具,以及如何采集和分析操作系统、JVM以及数据库等的性能日志。最后介绍了针对JVM和Tomcat的性能优化,以及在应用开发过程中的一些性能优化建议。
章节十一:
本章分别介绍了Tomcat中3个独立的功能特性。首先是嵌入式启动,便于我们将Tomcat以第三方组件的方式集成到应用系统中。其次是Tomcat对JNDI的支持,通过它,我们可以在Tomcat中引用NDI资源。最后是服务器推送技术,包括Comet和HTML5中新增的WebSocket,采用这两项技术,我们可以开发实时性的Web应用系统。
附录server.xml配置:
好了,今日的分享到此就结束了!我相信和我一同在解读源码时头痛的程序媛(猿)一样需要它,相信你也会发现其中的独到之处!
以上便是本篇笔记的图文版全内容,因篇幅有限以图片展示,但都可提供原文件进行学习,转发+私信我 关键词【学习】!!即可免费获取下载方式。@南方葵籽
留言与评论(共有 0 条评论) “” |