中年一文看懂web服务器、应用服务器、反向代理服务器区别与联系( 二 )
本文插图
TCP 监听模块:服务器监听某个端口(一般默认是 8080 端口 , 用户可以设置其他端口) , 以建立和用户代理之间的连接 。 一旦建立连接 , 用户代理的后续 HTTP 请求将不用再进入监听模块 。
预处理:此处主要做三件事 , 从 TCP 报文中获取 HTTP 请求报文 , 根据和用户代理的协商进行解密 , 解压 , 安全处理等等 。 根据服务器自身的配置进行安全处理 , 建立会话状态等等 。
UR 路由:解析 URL 字符串和动作以确定用户代理请求的资源 , 根据匹配规则(通常根据正则表达式+后缀)路由到静态资源处理模块或动态资源处理模块 。
静态资源处理模块:负责找到静态资源 , 比如 HTML/JavaScript/CSS 文件/图片/图像 , 确定内容是字符流或者字节流 , 并确定对应 MIME 。
比如 HTML 生成 MIME 为 text/html 的字符流 , mpeg 视频文件生成 MIME 为 video/mpeg 的字节流 。
动态资源处理模块:运行业务逻辑处理 , 动态决定返回的资源内容和类型 , 内容和类型的处理原则同上 。
后处理:根据和用户协商的协议进行加密 , 压缩 , 安全处理等等 。
【中年一文看懂web服务器、应用服务器、反向代理服务器区别与联系】资源输出模块:把处理好的内容和类型封装成 HTTP 报文 , 往 TCP 连接另一头的用户代理发送 TCP 报文(内容是 HTTP 报文) 。
主流 Web 服务器
包括 Apache、IIS 、Nginx 市场占有率如下图:
本文插图
还有比较多使用 Tomcat , Jetty , WebSphere , WebLogic , Kerstrel 等等 。
Web 应用程序容器概念与基本原理
Web 应用程序容器的由来
Web 服务器的出现标志着 WWW 时代的到来 , 世界变得更加平面化 。 当初尝到甜头的开创者们开始不满足于在互联网上获取静态资源 , 于是出现了 CGI 脚本来动态获取资源 。
再后来网络发展方向也是朝着增强 Web 服务器动态获取资源的能力前进 。 以下是代表性的动态技术:
本文插图
Web 应用程序容器的基本工作原理
一般情况下 , Web 应用程序容器是以下构成体系:
本文插图
注:浅蓝色的模块是实现业务程序的主要使用模块
相对于 Web 服务器 , 该容器新增或强化了以下模块:
- 分配线程池资源容器为每个请求分配一个线程进行处理 , 通常采取线程池的方式高效率由 CPU 算资源 。
- 封装 Request 上下文一个请求对应一个 Request 上下文 , 它主要封装了用户请求的主要构成:URL , HTTP 请求头 , 以及基于请求头构建的 Session , Cookie 等对象 , 方便编程使用 。
- 封装 Response 上下文一个请求对应一个 Response 上下文 , 主要用于向用户代理返回资源 。 可以在其中写入输出流 , 或者重定向 , 或者返回错误码等等 。
- URL 路由在容器里 , 运行开发人员设置不同的路由匹配规则 , 比如让 .HTM 返回 .HTML , 也可以自定义 .xyz 返回 .HTML 资源 。 更加灵活的配置可以参考 Java MVC 或者 ASP.NET MVC 的配置方案 。
推荐阅读
- 中年美国寸土寸金,为何要在纽约建立林则徐广场?原因很简单
- 中年北斗系统发言人答封面新闻:北斗定位精度最好可达1点几米
- 中年检测设备行业政策及环境
- 中年元春回府省亲为何会在夜晚进行?原来其中大有文章
- 中年北斗三号全球服务可用性达99%以上,全球范围定位精度优于10米
- 海外网|印度联邦内政部长确诊住院,一文读懂全球疫情:全球累计确诊逾1821万例
- 锁定|起底电信诈骗“杀猪盘”:锁定中年女性,先培养感情再骗钱
- 中年做了几道硬菜,孩子们的胃口很大,可以无限量地吃
- 中年你吃火锅,我吃火锅底料——做的川味慢烤牛肋排
- 教育|每一位中年女性,都是“乘风破浪的姐姐”
