总结:服务器批量处理http请求的大致流程

2023-12-08 11:52

本文主要是介绍总结:服务器批量处理http请求的大致流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

总结:服务器批量处理http请求的大致流程

  • 一·客户端发起请求:可以多个请求同时发送
  • 二·Web服务器解析请求(如:Nginx):可以多个请求同时解析
  • 三·Servlet容器接收请求(如:tomcat):可以多个请求同时处理
  • 四·Servlet初始化(如果需要):
  • 五·调用Servlet的service()方法:
  • 六·选择适当的HTTP方法处理:
  • 七·Servlet处理请求:
  • 八·生成响应:
  • 九·Servlet容器发送响应:
  • 十一·Servlet销毁(如果需要):
  • 十二·线程返回到线程池(如果使用):

一·客户端发起请求:可以多个请求同时发送

1.用户通过浏览器访问一个URL,该URL与某个Servlet相关联。
2.浏览器构造一个HTTP请求,请求中包含特定的URL、头部信息、参数等;并将它发送到Web服务器。

二·Web服务器解析请求(如:Nginx):可以多个请求同时解析

1.Web服务器主要作用:请求分发、反向代理、负载均衡器、HTTP缓存服务器,支持静态文件服务,一般不会处理动态请求。

动态请求:比如前端调用某API接口,需要后端服务器运算处理完,再响应给前端报文
静态请求:比如前端调用某API接口,后端直接将某个资源读取返回,不用任何运算。注意:web服务器、servlet容器两者一般都可以称为服务器,如何区分就看具体实际情况了

2.每个服务器都会存在一个,监听指定端口的死循环socket线程,除非服务器关机,这个线程才会停止循环
3.该socket线程每接收到一个http请求,就会从服务器的线程池里面获取一个空闲线程来处理该请求
4.这个新线程接着就会解析请求中的URL路径和参数,然后根据URL映射规则,决定返回哪个静态资源,或者将该http请求继续转发给哪个Servlet容器(如Tomcat、Jetty等)来处理。

三·Servlet容器接收请求(如:tomcat):可以多个请求同时处理

1.Servlet容器主要作用:动态请求的运算处理
2.每个服务器都会存在一个,监听指定端口的死循环socket线程,除非服务器关机,这个线程才会停止循环
3.该socket线程每接收到一个http请求,就会从服务器的线程池里面获取一个空闲线程来处理该请求
4.这个新线程接着就会解析请求中的URL路径和参数,然后根据URL映射规则,找到对应的Servlet对象;并根据请求信息创建HttpServletRequest对象和HttpServletResponse对象,再传递到Servlet对象的service方法里面,然后继续执行service方法

注意:
(1)如果多个URL映射的是同一个servlet程序处理,那么servlet容器会给每个请求分配一个线程进行单独处理;
(2)servlet容器传递给各个线程的servlet对象都是同一个;
(3)servlet容器给每个线程中的同一个servlet对象之service方法,传递的两个参数HttpServletRequest对象和HttpServletResponse对象都是不一样的,这两个对象都是根据http请求报文即时生成的。
(4)这样虽然节省了服务器资源,但这也是造成可能存在高并发的核心原因
(5)因此servlet类中的成员变量要慎重使用,如果存在频繁修改的变量,就尽量不要设置为成员属性,而是设置为方法内的局部变量

四·Servlet初始化(如果需要):

1.如果Servlet实例还没有初始化,容器会调用init()方法进行初始化。这个方法在Servlet的生命周期中只会执行一次。

五·调用Servlet的service()方法:

1.Servlet容器调用Servlet的service()方法,并传递ServletRequest和ServletResponse对象作为参数。

六·选择适当的HTTP方法处理:

1.在service()方法内,Servlet根据HTTP请求的方法(GET、POST等)选择调用适当的doGet()、doPost()等方法。

七·Servlet处理请求:

1.在doGet()、doPost()等方法中,开发者编写具体的业务逻辑来处理请求。这可能涉及到读取参数、执行业务逻辑、访问数据库等。

八·生成响应:

1.Servlet生成一个ServletResponse对象,其中包含要返回给客户端的数据,比如HTML内容。

九·Servlet容器发送响应:

1.Servlet容器将ServletResponse对象传递给Web服务器,然后服务器通过网络将响应发送回客户端。

十一·Servlet销毁(如果需要):

1.如果Servlet容器检测到应用程序正在关闭或者Servlet的生命周期已经结束,它会调用Servlet的destroy()方法,释放资源。

十二·线程返回到线程池(如果使用):

1.处理请求的线程返回到线程池,等待下一个请求。

这篇关于总结:服务器批量处理http请求的大致流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/469758

相关文章

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

SpringBoot操作spark处理hdfs文件的操作方法

《SpringBoot操作spark处理hdfs文件的操作方法》本文介绍了如何使用SpringBoot操作Spark处理HDFS文件,包括导入依赖、配置Spark信息、编写Controller和Ser... 目录SpringBoot操作spark处理hdfs文件1、导入依赖2、配置spark信息3、cont

Apache Tomcat服务器版本号隐藏的几种方法

《ApacheTomcat服务器版本号隐藏的几种方法》本文主要介绍了ApacheTomcat服务器版本号隐藏的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1. 隐藏HTTP响应头中的Server信息编辑 server.XML 文件2. 修China编程改错误

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

Python如何实现 HTTP echo 服务器

《Python如何实现HTTPecho服务器》本文介绍了如何使用Python实现一个简单的HTTPecho服务器,该服务器支持GET和POST请求,并返回JSON格式的响应,GET请求返回请求路... 一个用来做测试的简单的 HTTP echo 服务器。from http.server import HT

如何安装 Ubuntu 24.04 LTS 桌面版或服务器? Ubuntu安装指南

《如何安装Ubuntu24.04LTS桌面版或服务器?Ubuntu安装指南》对于我们程序员来说,有一个好用的操作系统、好的编程环境也是很重要,如何安装Ubuntu24.04LTS桌面... Ubuntu 24.04 LTS,代号 Noble NumBAT,于 2024 年 4 月 25 日正式发布,引入了众

如何提高Redis服务器的最大打开文件数限制

《如何提高Redis服务器的最大打开文件数限制》文章讨论了如何提高Redis服务器的最大打开文件数限制,以支持高并发服务,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录如何提高Redis服务器的最大打开文件数限制问题诊断解决步骤1. 修改系统级别的限制2. 为Redis进程特别设置限制