殷 翔
(中国电信武汉分公司,湖北 武汉430070)
Web协议属于Chatty(繁琐)协议,一个简单的用户请求可能需要多次信息的往返传递并且Web应用承载的内容越来越丰富,不但包括文本、图像甚至包括了语音和视频内容,与此同时用户群体扩大,使用访问量不断增长,后台server的访问压力也越来越大。
越来越多的Web应用的访问是通过广域网而非最初的局域网,这样更丰富的内容需求和用户业务访问的远程化产生了越来越激烈的矛盾,造成用户访问的缓慢,延时过大,严重影响了用户的访问体验。
综上所述,基于 Web的应用加速需求越来越强烈,传统的提升访问速度的技术,如带宽管理、扩充带宽等手段无法真正解决用户端所处访问环境的问题。用户急需一种真正有效的Web应用加速技术。
1.2.1 访问时间都花在哪儿了
在试图进行Web加速之前,有必要先了解在一个完整的Web浏览过程中,影响访问速度的关键因素在哪里?用户浏览的等待时间都花在哪里了?
读取html代码只占了整个响应时间中的5%,剩下的95%的时间都用于网页的object(页面元素)内容的下载。因此如何解决这些占用时间超过80%的页面元素的快速下载问题是实现Web加速的关键所在。
1.2.2 Web加速关键技术介绍
(1)减少HTTP请求次数
80%的最终用户响应时间花在前端程序上,而其大部分时间则花在各种页面元素,如图像、样式表、脚本和Flash等的下载上。减少页面元素将会减少HTTP请求次数。这是快速显示页面的关键所在。通过使用Expires header,您可以在客户端缓存这些元素。这在后续访问中避免了不必要的HTTP请求。
(2)压缩页面元素,减少带宽占用
通过压缩HTTP响应内容可减少页面响应时间。Web客户端在HTTP请求中通过Accept-Encoding头来表明支持的压缩类型,如:Accept-Encoding:gzip,deflate。如果 Web server检查到 Accept-Encoding头,它会使用客户端支持的方法来压缩HTTP响应,会 设 置 Content-Encoding 头,如:Content-Encoding:gzip。通过Gzip,内容一般可减少70%。Web server根据文件类型来决定是否压缩。因此,对尽量多的文件类型进行压缩是一种减少页面大小和提高用户体验的简便方法。
(3)使用 CDN(Content Delivery Network,内容分发网络)技术
用户离 Web server的远近对响应时间也有很大影响。从用户角度看,把内容部署到多个地理位置分散的服务器上将有效提高页面装载速度。但是该从哪里开始呢?
作为实现内容地理分布的第一步,不要试图重构Web应用以适应分布架构。改变架构将导致多个周期性任务,如同步session状态,在多个server之间复制数据库交易。这样缩短用户与内容距离的尝试可能被应用架构改版所延迟,或阻止。我们还记得80%~90%的最终用户响应时间花在下载页面中的各种元素上,如图像文件、样式表、脚本和Flash等。与其花在重构系统这个困难的任务上,还不如先分布静态内容。这不仅能大大减少响应时间,而且由于CDN的存在,分布静态内容非常容易实现。CDN是地理上分布的Web server的集合,用于更高效地发布内容。通常基于网络远近来选择给具体用户服务的Web server。
根据一些大型网站采用CDN技术的实际经验,把静态内容分布到CDN减少了20%用户影响时间或更多,可以有效地提高网站的速度。
F5 Web应用加速控制器(简称 WA,即:Web Accelerator)可以无需改变现有网络结构,无需改变服务器及应用配置,即可灵活的添加到现有网络中,如图1所示。F5可以从三个方面提供加速,分别是网络加速、服务器加速、应用加速。
图1 F5 Web应用加速控制器
2.1.1 TCP连接优化
BIG-IP可提供广泛的TCP连接优化功能,如:拥塞通知、有选择的ACK回应、增强TCP丢包的恢复能力等,减少TCP连接过程中无用的消耗,提升网络传输的性能。
2.1.2 智能客户端缓存
WA最为突出的功能是客户端缓存的功能。WA的工作机制主要是通过控制客户端的浏览器行为来达到加速的目的,也就是说通过控制浏览器将服务器返回的静态内容缓存在客户端本地,减少通过网络传输的流量需求从而达到提高应用响应速度的目的。
2.1.3 动态内容缓存
WA可以将看似动态的不变数据(包括查询参数,etag,会话ID),而实则是静态的,或者是可识别的数据进行缓存。Web Accelerator可以从动态网络应用中高速缓存更高比例的数据,并保持真正的动态应用行为不受干扰。实现这些功能主要通过全面检查HTTP请求、控制高速缓存状态以及动态调整高速缓存的数据。
2.2.1 服务器负载均衡
WA可以提供服务器负载均衡功能,实现多台后台服务器并行工作,提升处理速度。且当其中一台服务器出现故障时,自动将请求导向其它服务器,确保业务随时可以访问。
2.2.2 连接优化
F5的one connect连接复用功能,可减少一个单一客户所产生的数十个甚至数百个TCP session,同时在一个单一的session中进行Web浏览,这就极大限度地减少了网络流量。根据测试的流量类型和客户数,在Web服务器上所产生的改进可达2~50倍。
2.3.1 SSL加速
加密套接(SecureSocket)层交易的广泛采用和总体网络负载减缓了服务器的执行速度,要求SSL交易加速。电子商务业务是基于互联网进行的。每笔进入数据中心的交易均进行了SSL加密处理。F5 WA内置的SSL加速芯片,可把服务器的CPU从繁重的加密与解密处理负荷中解放出来,从而将宝贵的资源归还给服务器群。
2.3.2 多线程连接
在正常情况下,浏览器对于每一个域名或者IP的访问,只能打开两个连接并行处理所有的HTTP请求。在一个界面友好的Web页面上,通常包含有几十个Object,这些Object的请求都需要在这两个连接中进行,并且由于HTTP的Request-Response机制,导致了用户必须在两个连接中等待所有的Object请求结束。F5可以通过自动添加子域名的方式,将用户的并发连接数量提升,加快内容的访问。
通过WA的Express Connects技术,可以将这些Object进行分组,使浏览器发起多个并行的连接进行请求,就像是通过FlashGet等并行下载软件,可以完全的使用网络带宽来进行内容下载。
2.3.3 HTTP压缩
针对一些无法缓存在客户端本地,而需要通过网络到后台服务器读取的内容,可通过之前介绍的HTTP压缩的方法对传输内容进行压缩,进一步减少由于内容更新需要而对网络带宽的需求。WA可以与浏览器协商采用gzip或deflate两种压缩算法,对传输的数据进行压缩,减少数据的传输量。在文本量较大的网站,HTTP压缩可以获得整体50%以上的流量减小量,同时大幅度提高了客户端的访问量。
本文从应用、架构、专业产品三个层面梳理了Web应用性能的解决之道,特别是详细介绍了F5 Web应用加速控制器,供Web开发人员、系统架构人员参考。
[1] Ilya Grigorik(加).Web性能权威指南[M].北京:人民邮电出版社,2002.
[2] 梁 洁,陈 戈,庄一嵘.内容分发网络(cdn)关键技术、架构与应用[M].北京:人民邮电出版社,2013.
[3] Peter Membrey(英),David Hows(澳),Eelco Plugge(荷).实用负载均衡技术:网站性能优化攻略 [M].北京:人民邮电出版社,2013.