这两种服务器模型各有优缺点。当服务耗时较长时,如果采用循环服务器,客户机将得不到快速响应,甚至可能出现客户机请求被拒绝的情况,但是这种服务器消耗的系统资源很少,实现起来比较简单。并发服务器为每一个请求创建一个子进程,可以保证同时处理多个客户机请求,使用这种服务器模型一般不会造成拒绝客户机请求的情况,但是如果频繁创建子进程,将会加重服务器的负担。在实际的网络应用中,服务器要同时处理多个客户的请求,所以通常采用并发方式。
通常,网络服务器可以采用如下4种实现技术:
1)“”即时创建,即时销毁策略“”,即服务器和每个发出请求的客户机进行连接,并为每个客户机的请求创建一个子进程来处理。
并发服务器启动后,系统守护进程在某个固定的端口监听是否有客户发起连接请求。如果收到某个客户的请求,服务器守护进程创建一个子进程来处理客户的请求,而守护进程则继续在原有端口监听其他客户的连接请求。子进程完成对客户的服务后,关闭连接,释放其占有的资源,自动退出。
2)服务器预先创建多个子进程,由子进程处理客户机请求,这种方式称为“预创建’。
基于“预创建”技术的服务器解决了客户进程等待的时延问题,但也存在以下问题:(1)务器端始终保持固定数量的子进程,这样即使没有客户进程的连接请求,系统中也将保持这些空闲的进程,造成对系统资源的浪费;(2)期民务器只是提供固定数量的子进程,如果客户连接请求数超过了子进程数,那么客户进程必须等待其它客户进程的服务终止,这可能造成更大的时延;(3如果某个子进程异常退出,服务器端可同时支持的客户进程连接数将减1,这将削弱服务器的并发处理能力。
为了克服上述问题,可采用动态“预创建”技术,即服务器父进程根据系统的资源状态或用户的请求数量创建一定数量的子进程,然后将其放到一个“池子”中,形成一个“进程池”。当有客户请求到达时,不是新创建一个进程为其服务,而是从“池子”中选择一个空闲的进程为其服务。服务完毕后,进程进入空闲状态。如果同时请求的客户数目比进程池中进程数目要大,系统可根据系统资源的状态,增加“池中”进程的数量,也可以将客户请求排队或简单的丢弃,这要视具体情况而定。采用这种技术,加快了服务器的响应时间,提高了资源的利用效率,有效地防止了由于客户请求过多而造成的服务器崩溃问题。
3)服务器用函数select实现对多个客户机连接的I/O多路复用;
与多进程或多线程相比,I/O多路复用技术的最大优势是系统开销小,系统不必创建进程和线程,也不必维护这些进程和线程,从而大大减少了系统的开销。
4)超级服务器激活辅助服务器的策略。
这种模式的服务器需要多个服务器,其中一个服务器(超级服务器)在熟知的端口等待客户发来的请求。超级服务器一旦收到客户的请求,就立即激活一个从属服务器,并将该用户的请求转移到激活的从属服务器上。然后从属服务器与客户程序保持连接,完成对客户请求的处理,而超级服务器继续在原来端口监听客户的请求。
在这种服务器模型中,每个从属服务器仍然是一个并发服务器,因而系统的并发能力显著提高,但是,采用这种服务器模型需要增加服务器的数量,因而增加了系统的成本,通常用作一些访问量比较大的网络服务器。
网页服务器 - 如Apache, thttpd, 微软的IIS等
计算机名称转换服务器 - 如微软的WINS服务器
1. 根据应用层次或规模档次划分
2. 根据服务器结构划分
3. 根据硬件类型划分
● 专用服务器:专门设计的高级服务器,采用专门的操作系统(如UNIX、MVS、VMS等),主要用于数据库服务和Internet业务,一般由专业公司提供全套软硬件系统及全程服务。
(1)做好服务器系统备份,以备及时恢复。
(2)关闭不必要的服务端口,只开需要的端口。
(6)加密、认证安全技术的实施。
- 海报