web(4)
WEB服务器
1.服务器端高速缓存
假定服务器收到一个请求-------http://www.bar.com/foo.html(一个静态HTML文件),为处理请求,服务器必须打开和读取对应这个URL的文件。读取文件触发了将数据从磁盘复制到主存的过程。磁盘访问增加了系统的负载,导致延迟回复请求。在理想状态下,下一个/foo.html请求不要求再打开和读取文件,服务器会直接传输主存数据,这就是所谓的服务器端高速缓存,在服务器上磁盘数据高速缓存于主存中。
服务器要保证主存中副本与磁盘中存储的数据一致。若文件内容有改变,服务器就不应传输主存中的副本。为了避免返回过期响应,在返回高速缓存副本前,服务器会检查磁盘上文件的最后修改时间,若文件改变,服务器就从主存中移除高速缓存副本。另外,文件系统可通知服务器文件何时修改。
除了调整缓存静态文件外,WEB服务器也可在主存中存储动态生成的响应。
2.服务器体系结构
WEB服务器一般同时处理多个客户机请求。这些请求要共享服务器访问处理器、磁盘、内存和网络接口。
A.事件驱动服务器体系结构
进程不是一次处理整个请求,而是定时执行每个请求的一小部分工作
B.进程驱动服务器体系结构
每一个请求由一个进程处理,即每个进程执行处理单一请求涉及的所有步骤
C.混合服务器体系结构
3.服务器托管
A. 单一机器存放多个WEB站点
在同一机器上运行多个站点需要一种方法将客户机请求重定向到相应的站点。
采用分开主机名的方法,托管公司可在单一机器上运行多个WEB服务器。此时这些服务器称为虚拟服务器。每个虚拟服务器有其自己的文档树和配置选项,操作起来就像机器上只有一个WEB服务器。
在发送HTTP请求时,WEB客户机必须确定WEB服务器的IP地址。在WEB早期,每个虚拟服务器要有其自己的IP地址,保证客户机的HTTP请求会到达正确的服务器,采用为每个虚拟服务器分配IP会受两个方面的限制:
1)操作系统会限制服务器进程的数量或单一机器IP地址的数量
2)为每个虚拟服务器分配单一地址会消耗大部分Internet当前有限的地址空间。
为了解决这个问题,浏览器和服务器的实现者扩展了HTTP,在HTTP/1.0的增强版和HTTP/1.1的正式版中定义了Host请求首部来携带网站名称,这样,WEB服务器就可以通过Host首部来识别虚拟站点了
B. 单一WEB站点分布在多台机器上【也叫:镜像的服务器集群】
“火热”的WEB站点会收到特别多的客户机请求,甚至超过单一机器的可支持程度。处理这么多高速率的请求一般要求在多台机器上复制内容,最好的方法是每个复制点使用相同的名字,并分配一个不同的IP地址。
服务器集群是一排配置相同的WEB服务器,相互可以替换。每个服务器上的内容可以通过镜像复制,这样当某个服务器出问题的时候,其也的可以顶上。
镜像WEB服务器可以在不同的地点包含同样内容的副本。如:有4个镜像服务器,主服务器在A地,其他三个复制服务器一个在B地,一个在C地,一个在D地。主服务器为A地区的客户服务,并肩负把内容传播给复制服务器(其他三个服务器)的任务。