集群的可扩展性及其分布式体系结构之八
2008-11-25 11:00:04 来源:WEB开发网无法进行分离式的调度
多数动态请求本质上都是通过类似CGI的服务来进行的。CGI一般要求Web服务器初始化一个包含参数的执行环境,然后由Web服务器生成一个新进程并在新进程中依客户请求执行相应的CGI程序,可能访问一个后端数据库,再把执行结果动态构造成一个HTML页面返回给客户。因此,动态请求需要更多的CPU资源和更长的等待时间。当然,依赖于不同的CGI程序(如数据库访问或者是一个LDAP目录更新),可能对系统CPU、内存以及I/O资源的占用情况都有所不同。相比于动态请求,静态请求的服务过程要简单许多。Web服务器只是简单地从文件系统中读取客户请求的文件并返回给客户。即静态请求更多地需要系统的I/O能力。而典型的如Apache服务器,更可以绕过磁盘调度,直接从系统的缓存中返回数据。
目前,大多数Web请求都为静态请求,因此加快静态请求的处理速度对于提高Web集群的整体性能是非常重要的。如果服务器既处理静态也处理动态的服务请求,而静态请求和动态请求需要不同的系统资源,则在系统稳定运行时,耗费资源的动态请求将会干扰静态请求的正常处理、降低静态请求的响应速度。假设后端服务器的操作系统以round-robin方式调度进程的执行。令进程时间片大小为q,s为静态请求的平均处理时间,d为动态请求的平均处理时间。设操作系统的进程执行队列里有一个处理静态请求的进程A,n个处理动态请求的进程。如果进程A处于进程执行队列的最后,那么进程A必须等待n×q个时间片后才能使用CPU。已有的研究结果[4]表明s的值为0。01s,d的值为0。1s或若干秒,而q的典型值为0。2s[5],即s<q<d。显然,n×s<n×q,即当进程A的前面是n个执行静态请求的进程时,要比前面是n个执行动态请求的进程时更早地获取CPU资源,并完成请求。混合式调度策略的另一个缺点是动态请求可能占用大量的系统内存,影响文件系统的缓存机制对内存资源的需求,从而降低静态请求的处理速度。
对于特殊的服务类型而言,例如视频服务器,不但具有静态请求的特性:只读,强调I/O的访问能力;也具有动态的特点:大量占用CPU和网络带宽资源。因此,在这一类的服务器上,如果把视频服务和其它类型的服务混合在一台节点上使用,互相之间相互影响,直接导致该节点的响应能力大大下降。
因此,在大型的复杂的电子商务环境,需要针对性的根据服务的类型将集群节点进行类型上的分区,而为了提高磁盘空间利用率和可扩展性,对同一类型的服务结点 集合还要进行内容上的分区。因此,负载平衡器如果不能具备协议解析的能力,无法从任务调度的根本上支持这样的应用,也就无法有效的针对实际的使用需要定制集群环境,提高集群的整体能力。而仅能使用统一的集中的,采用面向连接的方式对客户端请求进行调度。
更多精彩
赞助商链接