产业气象站|一文看懂web服务器、应用服务器、反向代理服务器区别与联系( 二 )
文章图片
TCP监听模块:服务器监听某个端口(一般默认是8080端口 , 用户可以设置其他端口) , 以建立和用户代理之间的连接 。 一旦建立连接 , 用户代理的后续HTTP请求将不用再进入监听模块 。
预处理:此处主要做三件事 , 从TCP报文中获取HTTP请求报文 , 根据和用户代理的协商进行解密 , 解压 , 安全处理等等 。 根据服务器自身的配置进行安全处理 , 建立会话状态等等 。
UR路由:解析URL字符串和动作以确定用户代理请求的资源 , 根据匹配规则(通常根据正则表达式+后缀)路由到静态资源处理模块或动态资源处理模块 。
静态资源处理模块:负责找到静态资源 , 比如HTML/JavaScript/CSS文件/图片/图像 , 确定内容是字符流或者字节流 , 并确定对应MIME 。
比如HTML生成MIME为text/html的字符流 , mpeg视频文件生成MIME为video/mpeg的字节流 。
动态资源处理模块:运行业务逻辑处理 , 动态决定返回的资源内容和类型 , 内容和类型的处理原则同上 。
后处理:根据和用户协商的协议进行加密 , 压缩 , 安全处理等等 。
资源输出模块:把处理好的内容和类型封装成HTTP报文 , 往TCP连接另一头的用户代理发送TCP报文(内容是HTTP报文) 。
主流Web服务器
包括Apache、IIS、Nginx市场占有率如下图:
文章图片
还有比较多使用Tomcat , Jetty , WebSphere , WebLogic , Kerstrel等等 。
Web应用程序容器概念与基本原理
Web应用程序容器的由来
Web服务器的出现标志着WWW时代的到来 , 世界变得更加平面化 。 当初尝到甜头的开创者们开始不满足于在互联网上获取静态资源 , 于是出现了CGI脚本来动态获取资源 。
再后来网络发展方向也是朝着增强Web服务器动态获取资源的能力前进 。 以下是代表性的动态技术:
文章图片
Web应用程序容器的基本工作原理
一般情况下 , Web应用程序容器是以下构成体系:
文章图片
注:浅蓝色的模块是实现业务程序的主要使用模块
【产业气象站|一文看懂web服务器、应用服务器、反向代理服务器区别与联系】相对于Web服务器 , 该容器新增或强化了以下模块:
分配线程池资源容器为每个请求分配一个线程进行处理 , 通常采取线程池的方式高效率由CPU算资源 。 封装Request上下文一个请求对应一个Request上下文 , 它主要封装了用户请求的主要构成:URL , HTTP请求头 , 以及基于请求头构建的Session , Cookie等对象 , 方便编程使用 。 封装Response上下文一个请求对应一个Response上下文 , 主要用于向用户代理返回资源 。 可以在其中写入输出流 , 或者重定向 , 或者返回错误码等等 。 URL路由在容器里 , 运行开发人员设置不同的路由匹配规则 , 比如让.HTM返回.HTML , 也可以自定义.xyz返回.HTML资源 。 更加灵活的配置可以参考JavaMVC或者ASP.NETMVC的配置方案 。 动态资源处理模块通常在这里具体的容器和开发语言都有自己的高效开发模型 , 比如Java的Servlet , ASP.NET的WebForm , MVC 。 回收资源这里会回收刚才的线程资源 , 为了线程复用 , 除非服务器空闲一般会将线程返回线程池 。 可以看出 , Web容器本身具备了做为一个Web服务器的功能 , 事实上通常实现Web容器功能的服务器就是一个Web服务器 。 比如Tomcat , IIS , Jetty 。主流Web容器
包括Tomcat , IIS , Jetty 。 还有比较多使用WebSphere , WebLogic等等 。
Web应用程序服务器概念及基本原理
- 产业气象站|5G基站太耗电!三大运营商正式官宣:将智能化关闭5G基站节约电费
- 产业气象站|他从不打无准备之仗,华为联手哈工大究竟想干啥?依任总性格
- 产业气象站|G是否影响健康?,张朝阳用手机保持30厘米
- 爱集微APP|“芯”势力助推游戏产业发展,芯片成为ChinaJoy的关键词之一
- 产业气象站|电力机器人“小白”上岗巡检
- 产业气象站|苏宁智能宣布五项Biu+共享政策,从生态赋能到生态共享
- 产业气象站|点赞“中国芯里的南大智慧”!华为公司CEO任正非一行访问南京大学
- 产业气象站|花多少钱收购,微软正在谈判收购TikTok美国业务
- 产业气象站|包括王兴,马云创办支付宝的本质不是为了支付,很多人没理解
- 上观新闻|半导体产业如何发展?嘉定举办的这个论坛指明了方向