选择显示字体大小

使用负载均衡技术建设高负载的网络站点

inte.net的快速增长使多媒体网络服务器,特别是web服务器,面对的访问者数量快速增加,网络服务器需要具备提供大量并发访问服务的能力。例如yahoo每天会收到数百万次的访问请求,因此对于提供大负载web服务的服务器来讲,cpu、i/o处理能力很快会成为瓶颈。 

简单的提高硬件性能并不能真正解决这个问题,因为单台服务器的性能总是有限的,一般来讲,一台pc服务器所能提供的并发访问处理能力大约为1000个,更为高档的专用服务器能够支持3000-5000个并发访问,这样的能力还是无法满足负载较大的网站的要求。尤其是网络请求具有突发性,当某些重大事件发生时,网络访问就会急剧上升,从而造成网络瓶颈,例如在网上发布的克林顿弹劾书就是很明显的例子。必须采用多台服务器提供网络服务,并将网络请求分配给这些服务器分担,才能提供处理大量并发服务的能力。 

当使用多台服务器来分担负载的时候,最简单的办法是将不同的服务器用在不同的方面。按提供的内容进行分割时,可以将一台服务器用于提供新闻页面,而另一台用于提供游戏页面;或者可以按服务器的功能进行分割,将一台服务器用于提供静态页面访问,而另一些用于提供cgi等需要大量消耗资源的动态页面访问。然而由于网络访问的突发性,使得很难确定那些页面造成的负载太大,如果将服务的页面分割的过细就会造成很大浪费。事实上造成负载过大的页面常常是在变化中的,如果要经常按照负载变化来调整页面所在的服务器,那么势必对管理和维护造成极大的问题。因此这种分割方法只能是大方向的调整,对于大负载的网站,根本的解决办法还需要应用负载均衡技术。 

负载均衡的思路下多台服务器为对称方式,每台服务器都具备等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。然后通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器都独立回应客户机的请求。由于建立内容完全一致的web服务器并不复杂,可以使用服务器同步更新或者共享存储空间等方法来完成,因此负载均衡技术就成为建立一个高负载web站点的关键性技术。 

1、基于特定服务器软件的负载均衡 
很多网络协议都支持“重定向”功能,例如在http协议中支持location指令,接收到这个指令的浏览器将自动重定向到location指明的另一个url上。由于发送location指令比起执行服务请求,对web服务器的负载要小的多,因此可以根据这个功能来设计一种负载均衡的服务器。任何时候web服务器认为自己负载较大的时候,它就不再直接发送回浏览器请求的网页,而是送回一个locaction指令,让浏览器去服务器集群中的其他服务器上获得所需要的网页。 

在这种方式下,服务器本身必须支持这种功能,然而具体实现起来却有很多困难,例如一台服务器如何能保证它重定向过的服务器是比较空闲的,并且不会再次发送location指令?location指令和浏览器都没有这方面的支持能力,这样很容易在浏览器上形成一种死循环。因此这种方式实际应用当中并不多见,使用这种方式实现的服务器集群软件也较少。有些特定情况下可以使用cgi(包括使用fastcgi或mod_perl扩展来改善性能)来模拟这种方式去分担负载,而web服务器仍然保持简洁、高效的特性,此时避免location循环的任务将由用户的cgi程序来承担。 

2、基于dns的负载均衡 
由于基于服务器软件的负载均衡需要改动软件,因此常常是得不偿失,负载均衡最好是在服务器软件之外来完成,这样才能利用现有服务器软件的种种优势。最早的负载均衡技术是通过dns服务中的随机名字解析来实现的,在dns服务器中,可以为多个不同的地址配置同一个名字,而最终查询这个名字的客户机将在解析这个名字时得到其中的一个地址。因此,对于同一个名字,不同的客户机会得到不同的地址,他们也就访问不同地址上的web服务器,从而达到负载均衡的目的。 
 

例如如果希望使用三个web服务器来回应对www.exampleorg.org.cn的http请求,就可以设置该域的dns服务器中关于该域的数据包括有与下面例子类似的结果: 

www1 in a 192.168.1.1 

www2 in a 192.168.1.2 

www3 in a 192.168.1.3 

www in cname www1 

www in cname www2 

www in cname www3 

此后外部的客户机就可能随机的得到对应www的不同地址,那么随后的http请求也就发送给不同地址了。 

dns负载均衡的优点是简单、易行,并且服务器可以位于互联网的任意位置上,当前使用在包括yahoo在内的web站点上。然而它也存在不少缺点,一个缺点是为了保证dns数据及时更新,一般都要将dns的刷新时间设置的较小,但太小就会造成太大的额外网络流量,并且更改了dns数据之后也不能立即生效;第二点是dns负载均衡无法得知服务器之间的差异,它不能做到为性能较好的服务器多分配请求,也不能了解到服务器的当前状态,甚至会出现客户请求集中在某一台服务器上的偶然情况。 

本新闻共2


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons