新浪博客

利用负载均衡优化和加速HTTP应用【转】

2011-11-07 16:19阅读:

1.负载均衡技术简介

现代企业信息化应用越来越多的采用B/S应用架构来承载企业的关键业务,因此,确保这些任务的可靠运行就变得日益重要。随着越来越多的企业实施数据集中,应用的扩展性、安全性和可靠性也越来越受到企业的重视。
负载均衡技术通过设置虚拟服务器IPVIP),将后端多台真实服务器的应用资源虚拟成一台高性能的应用服务器,通过负载均衡算法,将大量来自客户端的应用请求分配到后端的服务器进行处理。负载均衡设备持续的对服务器上的应用状态进行检查,并自动对无效的应用服务器进行隔离,实现了一个简单、扩展性强、可靠性高的应用解决方案。解决了单台服务器处理性能不足,扩展性不够,可靠性较低的问题。
近年来,随着Web2.0B/S技术的迅猛发展,HTTP应用逐渐成为当今的主流应用,而负载均衡技术也有了很大的发展。从传统的基于四层端口号进行简单的应用请求转发,到目前基于七层内容进行请求的转发和处理。尤其是在
HTTP协议的优化和加速方面,一些技术逐渐发展成熟,如:TCP连接复用、内容缓存、TCP缓冲、HTTP压缩、SSL加速等。这些技术的应用有助于进一步改善用户访问响应时间、节约广域网链路带宽和服务器资源。

2. HTTP优化和加速特性带来的优势

2.1 TCP 连接复用(TCP Connection Reuse)

TCP连接复用技术通过将前端多个客户的HTTP请求复用到后端与服务器建立的一个TCP连接上。这种技术能够大大减小服务器的性能负载,减少与服务器之间新建TCP连接所带来的延时,并最大限度的降低客户端对后端服务器的并发连接数请求,减少服务器的资源占用。
一般情况下,客户端在发送HTTP请求之前需要先与服务器进行TCP三次握手,建立TCP连接,然后发送HTTP请求。服务器收到HTTP请求后进行处理,并将处理的结果发送回客户端,然后客户端和服务器互相发送FIN并在收到FINACK确认后关闭连接。在这种方式下,一个简单的HTTP请求需要十几个TCP数据包才能处理完成。
采用TCP连接复用技术后,客户端(如:ClientA)与负载均衡设备之间进行三次握手并发送HTTP请求。负载均衡设备收到请求后,会检测服务器是否存在空闲的长连接,如果不存在,服务器将建立一个新连接。当HTTP请求响应完成后,客户端则与负载均衡设备协商关闭连接,而负载均衡则保持与服务器之间的这个连接。当有其它客户端(如:ClientB)需要发送HTTP请求时,负载均衡设备会直接向与服务器之间保持的这个空闲连接发送HTTP请求,避免了由于新建TCP连接造成的延时和服务器资源耗费。
利用负载均衡优化和加速HTTP应用【转】
图例 1 TCP连接复用(TCP Connection Reuse
HTTP 1.0中,客户端的每一个HTTP请求都必须通过独立的TCP连接进行处理,而在HTTP 1.1中,对这种方式进行了改进。客户端可以在一个TCP连接中发送多个HTTP请求,这种技术叫做HTTP复用(HTTP Multiplexing)。它与TCP连接复用最根本的区别在于,TCP连接复用是将多个客户端的HTTP请求复用到一个服务器端TCP连接上,而HTTP复用则是一个客户端的多个HTTP请求通过一个TCP连接进行处理。前者是负载均衡设备的独特功能;而后者是HTTP 1.1协议所支持的新功能,目前被大多数浏览器所支持。
有些用户和厂商喜欢采用连接复用率来评判一个负载均衡设备的TCP连接复用技术的好坏。一般来说,TCP连接复用率是指一段时间内负载均衡设备成功处理的客户端HTTP请求总数与这段时间负载均衡与服务器之间建立的TCP连接总数的比值。但是, TCP连接复用率和应用的特点、服务器设置、计算周期以及请求的发送模式等也有很大的关系,不同的应用环境下计算出来的TCP连接复用率会有很大的差异。其实,连接复用效率的关键在于负载均衡设备是否能够及时释放已经空闲的服务器端连接。有些厂商采用发送HTTP响应后等待一定时间,如果这段时间内无数据传输即释放该连接。而等待时间往往是秒级的,对于数据往返时间的毫秒级,其复用效果明显不会很好。最为有效的连接复用技术是在负载均衡设备给客户端发送HTTP响应之后,收到客户端确认ACK数据包即释放该连接。这种方式避免了任何额外的等待时间,理论上没有更高效的复用方法。

2.2 内容缓存(RAM Caching)

内容缓存技术将应用服务器中的一些经常被用户访问的热点内容缓存在负载均衡设备的内存中。当客户端访问这些内容时,负载均衡设备截获客户端请求,从缓存中读取客户端需要的内容并将这些内容直接返回给客户端。由于是直接从内存中读取,这种技术能够提高网络用户的访问速度,并大大减轻后端服务器的负载情况。
内容缓存的工作原理非常简单,我们将通过下图用户访问logo.gif的实例来解释内容缓存的工作过程:
1) 当有客户端发起对logo.gif的第一个请求时,负载均衡首先会检查本地缓存中是否存在该对象。如果不存在这个对象,负载均衡会将这个HTTP请求转发给后端的服务器;
2) 服务器收到对logo.gifHTTP请求后,将图片内容回应给负载均衡设备;
3) 负载均衡设备将logo.gif对象缓存在内容缓存中,并将其发送给客户端;
4) 后续的其它客户端发起对logo.gif的访问请求时,如果负载均衡检测到内容缓存中已经存在该对象,并确认该对象并未失效的话,负载均衡直接将该对象返回给客户端,而无需服务器再次发送该对象。
利用负载均衡优化和加速HTTP应用【转】
图例 2 内容缓存(RAM Caching

内容缓存技术采用了HTTP协议中的一些标准缓存处理技术,将本应保存在客户端本地浏览器缓存中的内容共享给其他用户。因此,对于客户端来说,内容缓存技术是完全透明的。最常见的对象包括:gif/jpg图片,静态的css/js/html等文本文件等。

2.3 TCP缓冲机制

TCP缓冲是为了解决后端服务器网速与客户的前端网络速度不匹配而造成的服务器资源浪费的问题。由于服务器与负载均衡设备之间的网络带宽速率高,时延小,通过将服务器端的请求缓冲在负载均衡设备的缓冲区中,防止由于客户端缓慢的网络链路和较高的时延造成服务器端连接阻塞问题。
通过采用TCP缓冲技术,可以提高服务器端响应时间和处理效率,减少由于通信链路问题给服务器造成的连接负担。另外,由负载均衡设备来处理网络阻塞造成的数据包重传,使每个客户端的流量得到最佳的控制。
利用负载均衡优化和加速HTTP应用【转】
图例

我的更多文章

下载客户端阅读体验更佳

APP专享