1. tomcat是谁?

2. tomcat可以做什么?

  tomcat是一个web容器,可以将web应用部署到tomcat,由它提供web服务,一个web容器中可以部署多个web应用,这些web应用可以是同一个域名,也可以是多个域名的服务。

3. tomcat有哪些组件

4.怎么快速理解这些组件呢?

我们可以假设我们来设计一个web容器,我们该什么设计?

第一代:接收请求,处理请求,返回结果集中到整个web容器中,如下图所示:

第二代 :连接管理和处理逻辑分开

  使用过程中发现,每次都要打开socket的连接,调用处理逻辑,然后关闭socket连接比较烦,干脆将socket的连接关闭交给Connector来处理,请求的业务逻辑交给Container来处理好了,就变成这样了。

第三代:支持多种网络协议

    最初的目标是设计一个web服务器或者容器,那么如果想要支持更多的协议就需要新建不同的Connector和Container,此时就变成这样子了,其中service包装了Connector和Container

第四代:支持多个web应用

  既然是容器,就要支持多个应用,每个应用是有一个Context,且相互隔离,支持多个Context的架构如下:

第五代:支持多域名

  Context上下文不仅仅需要物理上的隔离,也需要逻辑上的隔离,如app1.example.com访问context1,app1.test.com访问context2.

此时的架构应该是这样的,host可以支持多个context。

5.总结:

  web服务器的组件由server-->满足功能

  server+connector+Container-->职责分离

  server+service+connector+Container-->支持多种协议

  server+service+connector+Container+context-->支持多个应用

  server+service+connector+Container+host+context -->支持多个域名的多个应用

其实就是一个分工组件细化的过程,类似于社会分工的细化,注意,Container在tomcat里也称作engine。

转载于:https://www.cnblogs.com/davidwang456/p/11323101.html

一文读懂tomcat组件--一个web服务器的架构演化史相关推荐

  1. 服务器组件架构,tomcat组件图解 一个web服务器的架构演化史

    1. tomcat是谁? 2. tomcat可以做什么? tomcat是一个web容器,可以将web应用部署到tomcat,由它提供web服务,一个web容器中可以部署多个web应用,这些web应用可 ...

  2. 一文读懂:完整的支付系统整体架构

    http://www.sohu.com/a/199827912_343156 支付产品模块是按照支付场景来为业务方提供支付服务.这个模块一般位于支付网关之后,支付渠道之前. 它根据支付能力将不同的支付 ...

  3. 一文读懂凯利公式—一个多次被巴菲特芒格引用的投资方法

    芒格说:"当世界给予你机会的时候,聪明的投资者会出重手.当他们具有极大赢面时,他们会下大注.其余的时间里,他们做的仅仅是等待.就是这么简单." 巴菲特也说:"当天上掉金子 ...

  4. 一文读懂Python web框架和web服务器之间的关系

    我们都知道 Python 作为一门强大的语言,能够适应快速原型和较大项目的制作,因此被广泛用于 web 应用程序的开发中. 在面试的过程中,大家或多或少都被问到过这样一个问题:一个请求从浏览器发出到数 ...

  5. 一文读懂HttpServletRequest

    点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 精彩内容 java实战练习项目教程 全网最全电子图书分享 你所需要的大数据视频 ...

  6. 腾讯资深架构师干货总结:一文读懂大型分布式系统设计的方方面面

    1.引言 我们常常会听说,某个互联网应用的服务器端系统多么牛逼,比如QQ.微信.淘宝.那么,一个大型互联网应用的服务器端系统,到底牛逼在什么地方?为什么海量的用户访问,会让一个服务器端系统变得更复杂? ...

  7. 案例+图解带你一文读懂SVG

    资料链接 案例+图解带你一文读懂SVG (2.6W+字) 简介 SVG 是 Scalable Vector Graphics 的缩写,意为可缩放矢量图形.于 2003年1月14日 SVG 1.1 被S ...

  8. 即时通讯新手入门:一文读懂什么是Nginx?它能否实现IM的负载均衡?

    本文引用了"蔷薇Nina"的"Nginx 相关介绍(Nginx是什么?能干嘛?)"一文部分内容,感谢作者的无私分享. 1.引言 Nginx(及其衍生产品)是目前 ...

  9. 一文读懂大数据平台——写给大数据开发初学者的话!

     一文读懂大数据平台--写给大数据开发初学者的话! 文|miao君 导读: 第一章:初识Hadoop 第二章:更高效的WordCount 第三章:把别处的数据搞到Hadoop上 第四章:把Hado ...

最新文章

  1. tclsh 遍历列表_Tcl / Tk 大全
  2. MySQL引擎innodb和mysum_mysql数据库引擎InnoDB和MyISAM
  3. bootstrap checkbox选中事件
  4. python保留关键字列表
  5. 如何使编译的EXE程序能多个运行?
  6. php 原理 阮一峰,全文Feed的终极解决方案
  7. 【java笔记】函数式编程
  8. HTML image button
  9. 华为的薪酬福利与激励体系
  10. 微信小程序如何快速达到1000UV流量主开通要求
  11. Centos7安装加速下载工具aria2
  12. 1.3 PyCharm下载
  13. python:实现abbreviation缩写算法(附完整源码)
  14. 在计算机网络术语中wan的中文意思是什么,在计算机网络术语中,WAN的中文含义是...
  15. 华为matebook13安装折腾Debian11全过程
  16. Java多线程 信号量和屏障实现控制并发线程数量,主线程等待所有线程执行完毕2
  17. 忘记网站上的密码时怎么办?用Python如何快速帮你找回?
  18. 数据结构和算法 数论 水仙花数
  19. 煤化工专用阀门有哪些?
  20. GitHub2022年十大热门编程语言榜单

热门文章

  1. 删除win10自带的旧版edge浏览器(亲测有效)
  2. linux下源码安装vim,ubuntu 源码编译安装最新的vim 8.0
  3. php 论坛_推荐一个基于话题的高性能轻型开源PHP论坛程序
  4. java线程主要状态及转换_Java线程状态转换及控制
  5. druid mysql配置详解_druid配置详解
  6. ffmpeg for android windows,windows10下编译ffmpeg for android
  7. 优化缩短关中断的时间
  8. matlab确定污染源位置,确定污染源的位置
  9. planahead 动态重构_部分动态可重构
  10. c语言 getch头文件,用getch()需要头文件吗?