基于大并发量访问的网站负载均衡设计
互联网的迅猛发展,改变着我们的工作和生活方式。随着人们对网络的依赖越发强烈,不同行业,不同类别的网站也竞相上线。对于通过互联网发布业务的组织机构来说,用户的粘性在一定程度上受到访问体验的影响。尤其是对于地方行业和门户网站、电子商务网站、论坛等不仅仅是靠流量赚钱的网站,用户的粘性甚至关系到网站的生存大计。网站拥有的忠诚用户越多,所销售的产品、提供的服务就越容易推送出去,网站的回头率提高了,用户转化率才会跟着提升。由此可见,以web为核心的业务平台,对于网站的稳定性、持久性等方面,通常都有着比较高的要求。
随着线上业务的发展,网站面临高并发访问和海量数据流的情况屡见不鲜,系统中的各个核心设备所负担的处理能力和计算强度也会相应增大,使得单一设备根本无法承担。如果淘汰现有设备去做硬件升级,将造成资源的浪费,而且如果以后面临业务量的激增,又不得不再次投入高额的硬件升级成本,甚至性能再卓越的设备也不能满足将来业务量的需求。在此种情况下,单纯的网络架构就显得捉襟见肘了,而负载均衡机制则应运而生。服务器负载均衡(server load balancing),其原理是将工作任务相对均衡地分摊到多个节点(服务器集群)上执行,从而提升整个业务系统的性能。诸如lvs、ha proxy等开源软件,可以在现有的网络基础架构之上建立负载均衡机制,以满足业务增长的需要,对于网站的来说不啻为一种廉价且有效的扩展性选择。
此外,针对互联网上有可能影响数据传输的各种环节,cdn(content delivery network)内容交付网络的应对方案也适时出现。cdn对网站内容的处理,主要在于利用缓存技术将静态内容快速分发至边缘节点,通过让用户就近取得所需内容,解决 internet网络拥挤的状况,提高用户访问网站的响应速度,同时也减轻了网站自身系统的性能压力。
现在看来,貌似我们已经解决了网站发布所面临的所有瓶颈了,但是实际上问题远没有那么简单。一方面,对于数据交互比较频繁的动态内容而言,cdn只能在其中心节点与源数据节点(网站自身系统)之间做有限的传输优化,加速效果远不如静态内容做缓存分发那般明显。另一方面,随着线上业务、电子商务等领域的web内容呈现日渐丰富,涌现出了愈发复杂的业务交付需求,这对网站的发布方而言也意味着将面临更多的挑战。因此,当我们抛开网络的传输质量、带宽拥塞程度等外界因素来看的话,又不得不正视一个问题——影响网站访问效果的最大瓶颈还是在于源数据节点自身的处理性能。
以电子商务网站这种典型的大型高并发访问量的线上业务为例,其性能瓶颈最容易出现在联机事务处理(oltp)的环节,例如访问用户进行条目查阅、订单确认等场景。产生这种情况的原因在于,网站的运营方出于数据安全等因素的考虑,是不可能将后台数据库等资源完全向cdn服务商开放的。由此造成,所有涉及到此类动态资源的访问就会频繁地经由cdn网络的边缘节点上溯到源数据节点(即网站自身系统)来请求实时地响应处理。在保障数据安全性的前提下,要解决网站的性能瓶颈问题,必须提高源数据节点的业务处理效率,因此我们还得从网络架构的设计着手。前文提到过,单台服务器的处理能力有限,当突发访问量骤然增加的时候,其性能就会成为整个系统的瓶颈,导致用户访问的响应缓慢甚至网站服务器瘫痪。为了满足高并发量访问的需求,可以通过软件手段实现服务器集群的多机负载均衡效果。然而,这种软件式的负载均衡有一个不可避免的缺点,那便是系统的稳定性和性能方面受限于软件所安装运行的服务器,一旦访问量过大时,该台服务器就恰恰成了整个系统的瓶颈所在。
就一个发布线上业务的网站系统而言,前台的web服务器由于有外部的cdn服务作为静态内容的分流渠道,尚不至于产生明显的系统瓶颈,而后台处理动态内容的核心业务系统就难免会感到压力巨大了。具体分析的话,当前的业务系统多采用客户端——中间件——数据库的三层结构设计,通常多是利用weblogic中间件软件自带的服务器集群功能来满足高性能需求,其中一台weblogic server作为管理服务器负责任务调度,实现负载均衡效果。但是,当访问用户到达一定数目的时候,由于该服务器自身的硬件性能瓶颈,会造成整个系统的联机事务处理效率低下;而且由于weblogic自身设计的原因,当任务量达到一定阈值的时候,即便是升级服务器硬件性能也无法提升其进行负载均衡调度的能力。
针对上述情况,最好的办法莫过于采用硬件负载均衡设备,以解决数据流量过大、任务负荷过重所产生的系统瓶颈问题。在这一方面,业内知名的硬件厂商有f5、深信服等等。值得一提的是,深信服的应用交付产品除具有传统负载均衡功能外,其独有的单边加速技术,能够在跨运营商网络环境中,通过广域网传输文件及应用的访问时间减少30%以上,极大提高了用户体验。虽然部署硬件设备意味着一笔额外的开支,但是它给网站的整体业务系统所带来的性能提升,却是传统的软件方案所望其项背的。除此之外,专业的硬件设备所能提供的负载调度算法和健康检查机制也更加丰富、全面,有助于进一步提升关键业务发布的稳定性和持久性,这对于高并发量的大型网站而言是极具价值的。当然,对于不同规模、不同业务的网站而言,没有一概而论的设计标准,文中提到的技术手段都有着相应的适用场景,这就需要网站的架构师们做具体的规划了。