《科学经管文库:电子商务系统性能智能优化与评价》:
第1章 导言
1.1 网络消费发展迅猛
全球电子商务迅猛发展,近年来我国网络零售业务更是突飞猛进。根据中国电子商务研究中心《2013年度中国网络零售市场数据监测报告》显示,我国2013年网络零售交易规模达1.8851 万亿元,较2012年增长42.8%,占到社会消费品零售总额的8.04%,而2012年该占比仅为6.3%[1];网络购物用户规模达到3.5亿,同比增长26.3% [2]。
网络消费市场规模不断扩大的同时,借助第三方平台经营的商户数量却有所萎缩,截至2013年12月,实际运营的个人网店数量1122万家,较2012年1365万同比减少 17.8%[1],而与此同时,越来越多制造业、零售业、服务业等传统行业的企业以O2O模式加入到在线经营的大军,不仅在B2C平台建立自己的旗舰店,还建立了官方网站以拓展销售渠道。据2014年中国连锁经营协会发布的《传统零售商开展网络零售研究报告(2014)》,目前我国仅连锁百强企业中开展网络零售业务的就已达67家[3];截至2013年12月底,国内开展B2C、C2C模式电子商务业务的企业已达29 303家,较2012年增幅达17.8%[4]。
1.2 电子商务系统性能问题突出
对电子商务系统服务质量(quality of service,QoS)的用户体验主要来自于三个方面,即商务网站的内容、功能和系统性能。Aberdeen 集团于2008年进行的一项调查研究结果表明,Web页面加载时间延迟仅1秒钟就会导致顾客满意度下降16%,同时,使网页浏览量(page view,PV)减少11%,Compuware公司对海量网页进行的类似研究也显示:浏览网页的响应时间从2s增至10s 时网页浏览放弃率将高达38%[5]。所以,对于一个用户来说,获得良好的用户体验除了与网站的内容、功能有关外,电子商务系统性能更是不容忽视。在满足内容个性化、功能人性化的需求之后,系统性能好坏就成为了直接影响访问用户对服务质量体验的最重要因素。
Web服务器是支持电子商务系统的核心物理设备,一旦Web服务器的工作负载超出其规划的处理能力,就会导致服务器响应缓慢、系统吞吐量减少等性能问题。由访问用户发出的到达Web服务器的HTTP请求具有突发性,高峰时的HTTP请求率超过平均值的8~10倍[6],加上HTTP请求的指数级增长,即使在开发前进行合理的容量规划的Web系统,其服务器的负载仍可能超过设计要求的负载能力,出现过载情况。
随着Web应用的爆炸性增长和广大消费者网络消费生活的常态化,一些热门网站的高峰访问频繁爆发,服务器过载不可避免。2013年淘宝“双十一”活动开始的第一分钟就有超过1370万用户涌入天猫商城[7],各大购物平台日常经营中用户数也常常接近甚至达到千万级,如淘宝网在2014年第四季度的平均独立访问者为66 020 000[8]。服务器过载问题成为许多热门Web站点的普遍现象。时常爆炸式到达网站的访问请求不断挑战着企业的在线服务质量,迫使企业不得不独立去面对电子商务网站系统的8秒效应、用户体验等不断提升的服务需求。
作为一个提供电子商务服务的网站,即使信息内容丰富、服务功能全面周到,甚至能够通过智能化手段满足个性化内容和服务的需要,如果缺乏有效的性能优化和过载控制机制,当交易高峰时段仍有可能因服务器过载导致系统性能下降甚至系统崩溃,从而影响对电子商务系统服务质量的用户体验。由此可见,服务器过载已经在某种程度上成为实现Web 服务质量的瓶颈。因此,如何预防和控制服务器过载,为用户提供满意的服务性能保证,已经成为一个迫切需要解决的问题。
而对于开展在线业务的企业来说,以为用户提供满意的服务质量为目的的Web 服务质量意味着投资回报和利润。仅在美国的电子商务市场,慢的通信速度、延迟的响应时间、频繁的连接中断等问题在10多年前就已导致了每年约400亿美元的销售损失[6]。对于在线经营企业来说电子商务系统性能已成为一个日益突出的重要问题。
1.3 Web系统性能优化传统方法及其局限
容量规划技术、流量控制技术和服务器过载控制技术是Web系统性能优化的主要手段。
为了防止导致Web系统性能恶化的过载问题的出现,通常的做法主要有三个方面,即容量规划、放弃队列和服务器集群负载均衡技术。
1.3.1 容量规划
Web系统的容量规划一般是在网站规划与建设阶段进行的,通过合理的容量规划避免网站系统运营过程中因为难以预计的发展速度过早地导致系统资源过载的情况发生。
对于系统出现长期过载的情况,则需要重新进行系统的容量规划并通过扩容加以改善。可以通过改用处理能力更强的服务器来实现扩容的目的,也可以采用服务器集群中增加同质的服务器数量的方法来增加系统的处理能力。
虽然扩容是有效的过载预防措施,但不适于作为运行时Web系统的过载控制措施,并且,简单地通过扩容的方式等待处理暂时性、突发性的激增流量的做法也不是一种经济的解决方案。
1.3.2 放弃队列
如果以上措施仍无法控制服务器过载的情况,当新的访问请求到达时,通过放弃等待队列中的请求这一简单的措施,能够确保已被系统准入的请求在有限的资源下得到处理及响应。
但是这种做法只能暂时缓解过载带来的活锁现象,作为过载控制措施是不可取的,原因主要有两个方面:一方面降低系统可用性,无法满足访问用户基本的服务质量要求; 另一方面,访问用户在不知情的情况下其访问请求被拒绝会导致访问用户重试,这将进一步增加对服务器的请求,无法根本解决过载问题。
1.3.3 服务器集群负载均衡技术
利用负载均衡技术在服务器集群中分担随时可能出现的激增流量可以较为有效地解决过载问题。
负载均衡是一项通过在服务器集群(Cluster)中的服务器之间分散输入的请求来防止过载并优化吞吐量的技术。在负载均衡的思路下,多台具有同等地位的同质的服务器以对称方式单独对外提供服务而无需其他服务器的辅助,提供服务的一组服务器组成了一个服务器集群,并对外提供一个统一的地址。
对于同质服务器的架构,当一个HTTP请求被发至该集群时,通过负载分摊技术,按一定规则分配到对称结构中的某一台服务器上,而接收到请求的服务器都独立回应客户机的请求,即将负载进行均衡分摊,从而保证了服务的可靠性。合理的负载均衡技术追求资源利用最大化。
一般电子商务Web系统架构中的服务器并不都是同质的,对于异质服务器的架构,即不是所有的服务器都能处理所有的任务,如专门的CGI、数据库服务器就只能处理一类任务,所以,网络服务器负载均衡包括两方面内容:网络流量(即HTTP 请求)在服务器集群中的分布,以及如图1-1所示的基于请求事务的进程分配的负载平衡机制[9],可以使用基于内容的负载均衡算法[10,11]来实现异构服务器集群中的负载均衡。
……
展开