您当前位置:资讯中心 >服务器 >浏览文章

Tomcat 架构设计 25 年后依旧能打!我学到了什么?

来源:互联网 日期:2023/12/30 21:02:36 阅读量:(0)

 你好,我是码哥,可以叫我靓仔。是一个拥抱硬核技术和对象,面向人民币编程的男人。友情提示:阅读本文前需要对 Tomcat 有一个全局架构认识,可先翻阅《Tomcat 架构深度解析》。

Tomcat 是 Sun 公司在 1998 年开发的。当时开发 Tomcat 的目标是成为 Sun 公司的 Java Servlet 和 JSP 规范的参考实现。

如今已经成为业务开发首选的 Web 应用服务器,Spring Boot 直接将 Tomcat 内置作为 Web 应用启动,二十五年宝刀未老。其中的架构设计思维值得我们深入学习和借鉴。

码哥今天带你深入探究,学会借鉴 Tomcat 的设计思想在工作中做好架构设计。

在Tomcat 架构解析到设计思想借鉴中我们学到 Tomcat 的总体架构,学会从宏观上怎么去设计一个复杂系统,怎么设计顶层模块,以及模块之间的关系;

Tomcat 实现的 2 个核心功能:

  • 处理 Socket 连接,负责网络字节流与 Request 和 Response 对象的转化。
  • 加载并管理 Servlet ,以及处理具体的 Request 请求。

所以 Tomcat 设计了两个核心组件连接器(Connector)和容器(Container),连接器负责对外交流,容器负责内部处理。

Tomcat整体架构Tomcat整体架构

管理组件,运筹帷幄

本篇作为 Tomcat 系列的第三篇,带大家体会 Tomcat 是如何构建的?每个组件如何管理组件的?连接器和容器是如何被启动和管理的?

Tomcat 启动流程:startup.sh -> catalina.sh start ->java -jar org.apache.catalina.startup.Bootstrap.main()

Tomcat 启动流程Tomcat 启动流程

Bootstrap、Catalina、Server、Service、 Engine 都承担了什么责任?

图片图片

单独写一篇介绍他们是因为你可以看到这些启动类或者组件不处理具体请求,它们的任务主要是管理,管理下层组件的生命周期,并且给下层组件分配任务,也就是把请求路由到负责干活儿的组件。

他们就像一个公司的高层,管理整个公司的运作,将任务分配给专业的人。

我们在设计软件系统中,不可避免地会遇到需要一些管理作用的组件,就可以学习和借鉴 Tomcat 是如何抽象和管理这些组件的。

Bootstrap

当执行 startup.sh 脚本的时候,就会启动一个 JVM 运行 Tomcat 的启动类 Bootstrap 的 main 方法。

先看下他的成员变量窥探核心功能:

public final class Bootstrap {
    ClassLoader commonLoader = null;
    ClassLoader catalinaLoader = null;
    ClassLoader sharedLoader = null;
}
关键字:
声明:我公司网站部分信息和资讯来自于网络,若涉及版权相关问题请致电(63937922)或在线提交留言告知,我们会第一时间屏蔽删除。
有价值
0% (0)
无价值
0% (10)

分享转发:

发表评论请先登录后发表评论。愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。