Web 服务并发架构和Http报文介绍

2019-01-23 0 By admin

一、Web 服务并发架构

Web 服务运行的架构可以分为以下几种:

1.1、单线程web服务器(Single-threaded web servers)

此种架构方式中,web服务器一次处理一个请求,结束后读取并处理下一个请求。在某请求处理过程中,其它所有的请求将被忽略,因此,在并发请求较多的场景中将会出现严重的阻塞问题。

1.2、多进程/多线程web服务器

此种架构方式中,web服务器生成多个进程或线程并行处理多个用户请求,进程或线程可以按需或事先生成。有的web服务器应用程序为每个用户请求生成一个单独的进程或线程来进行响应,不过,一旦并发请求数量达到成千上万时,多个同时运行的进程或线程将会消耗大量的系统资源。

1.3、I/O多路复用web服务器

为了能够支持更多的并发用户请求,越来越多的web服务器正在采用多种复用的架构——同步监控所有的连接请求的活动状态,当一个连接的状态发生改变时(如数据准备完毕或发生某错误),将为其执行一系列特定操作;在操作完成后,此连接将重新变回暂时的稳定态并返回至打开的连接列表中,直到下一次的状态改变。由于其多路复用的特性,进程或线程不会被空闲的连接所占用,因而可以提供高效的工作模式。

1.4、多路复用多线程web服务器

将多进程和多路复用的功能结合起来形成的web服务器架构,其避免了让一个进程服务于过多的用户请求,并能充分利用多CPU主机所提供的计算能力。

二、HTTP 各种代理服务类型介绍

2.1、正向代理

当客户端浏览器配置好正向代理后,客户端请求访问的页面,会向代理服务器发送请求;在这里会修改TCP包的目标IP地址。
注意点:客户端发送请求时不会做DNS解析,域名的解析和请求的操作,都是由代理服务器处理的。

2.2、透明代理

因为透明代理,不需要在客户端配置,所以一般透明代理服务会设置到网关设备上,否则就需要更改客户机的路由表。

2.3、反向代理

Web服务需要注意http使用的协议

三、HTTP 报文说明

HTTP的报文分为:请求报文,响应报文。

3.1、请求报文

请求报文语法:
<method> <request-URL> <version>
<headers>
<entity-body>

请求报文内容:
GET / HTTP/1.1
Host: cn-blogs.cn
Connection: keep-alive

3.2、响应报文

响应报文语法:
<version> <status> <reason-phrase>
<headers>
<entity-body>

响应报文内容:
HTTP/1.1 200 OK
X-Powered-By: PHP/5.2.17
Vary: Accept-Encoding,Cookie,User-Agent
Cache-Control: max-age=3, must-revalidate
Content-Encoding: gzip
Content-Length: 6931

3.3、报文解释

报文的第一行通常称作报文“起始行(start line)”;
后面的标签格式的内容称作首部域(Header field),
每个首部域都由名称(name)和值(value)组成,中间用逗号分隔。
另外,响应报文通常还有一个称作Body的信息主体,即响应给客户端的内容。