高并发高访问量网站的运维技术

高并发高访问量网站的运维技术
高并发高访问量网站的运维技术

高并发高访问量网站的运维技术

1. 前言

对于小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单,随着互联网业务的不断丰富,尤其对于大型网络来说,所采用的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、web服务器、防火墙等各个领域都有了很高的要求,已经不是原来简单的html静态网站所能比拟的。

大型网站,比如大型门户网站。在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编程语言,还有高性能的Web容器。以上几个解决思路在一定程度上也意味着更大的投入,并且这样的解决思路具备瓶颈,没有很好的扩展性,本文将论述从低成本、高性能和高扩张性的角度来考虑对高并发高负载网站的运行与维护技术。

2. HTML静态化技术

在站点流量很大的时候,为了提高系统性能,减短系统响应时间,最简单的方法其实也是最有效的方法就是把站点做成静态的,因为大家都知道效率最高、消耗最小的就是纯静态化的html 页面,所以我们应该尽可能使我们的网站上的页面采用静态页面来实现。然而静态页面在性能上虽然具有不少优势,但是,相对动态页面,其灵活性不够,扩展性不好,以后维护起来也比较麻烦。特别对于大量内容并且更新频繁的网站,我们无法全部手动去挨个实现页面静态化,那么我们一般可以采用设计信息发布系统CMS,先做好静态页面的模板,在通过信息发布系统从数据源读取数据,生成html代码块替换模板中的标签,然后生成静态文件。像我们常访问的各个门户站点的新闻频道,甚至他们的其他频道,都是通过信息发布系统来管理和实现的,信息发布系统可以实现最简单的信息录入自动生成静态页面,还能具备频道管理、权限管理、自动抓取等功能,对于一个大型网站来说,拥有一套高效、可管理的CMS是必不可少的。

同时,html静态化也是某些缓存策略使用的手段,对于系统中频繁使用数据库查询但是内容更新很小的应用,可以考虑使用html静态化来实现,比如论坛中论坛的公用设置信息,这些信息目前的主流论坛都可以进行后台管理并且存储再数据库中,这些信息其实大量被前台程序调用,但是更新频率很小,可以考虑将这部分内容进行后台更新的时候进行静态化,这样避免

了大量的数据库访问请求。

3. 图片服务器分离

对于Web服务器来说,不管是Apache、IIS还是其他容器,图片是最消耗资源的,于是我们有必要将图片与页面进行分离,这是基本上大型网站都会采用的策略,他们都有独立的图片服务器,甚至很多台图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片问题而崩溃,在应用服务器和图片服务器上,可以进行不同的配置优化,比如Apache在配置Content Type的时候可以尽量少支持,尽可能少的Load Module,保证更高的系统消耗和执行效率。

4. Web缓存技术

网站架构和网站开发中的缓存也是非常重要。网络缓存技术,其目的就是减少网络中冗余数据的重复传输,使之最小化,将广域传输转为本地或就近访问。互联网上传递的内容,大部分为重复的Web/FTP数据,Cache服务器及应用Caching技术的网络设备,可大大优化数据链路性能,消除数据峰值访问造成的结点设备阻塞。Cache服务器具有缓存功能,所以大部分网页对象(Web page object),如html,htm,php等页面文件,gif,tif,png,bmp等图片文件,以及其他格式的文件,在有效期(TTL)内,对于重复的访问,不必从原始网站重新传送文件实体,只需通过简单的认证(Freshness Validation)传送几十字节的Header,即可将本地的副本直接传送给访问者。由于缓存服务器通常部署在靠近用户端,所以能获得近似局域网的响应速度,并有效减少广域带宽的消耗。据统计,Internet上超过80%的用户重复访问20%的信息资源,给缓存技术的应用提供了先决的条件。缓存服务器的体系结构与Web服务器不同,缓存服务器能比Web服务器获得更高的性能,缓存服务器不仅能提高响应速度,节约带宽,对于加速Web服务器,有效减轻源服务器的负荷是非常有效的。

网站程序开发方面的缓存,Linux上提供的Memory Cache是常用的缓存接口,可以在Web 开发中使用,比如用Java开发的时候就可以调用Memory Cache对一些数据进行缓存和通讯共享,一些大型社区使用了这样的架构。另外,在使用Web语言开发的时候,各种语言基本都有自己的缓存模块和方法,PHP有Pear的Cache模块,Java就更多了。

5. 镜像分担技术

镜像站点是指将某些站点内容映射到另一站点,以分担访问流量。镜像是大型网站常采用的提高性能和数据安全性的方式,镜像的技术可以解决不同网络接入商和地域带来的用户访问速度差异,访问国外站点的国内镜像,可提高访问速度,减少国际流量。说白了,就是把相同

的内容传到不同的服务器上,分担访问流量。在镜像的细节技术方面,这里不阐述太深,有很多专业的现成的解决架构和产品可选。也有廉价的通过软件实现的思路,比如Linux上的rsync 等工具。

结束语,在解决大型网站高并发、高负载问题时,一般均采用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的硬件设备,但这在一定程度上也意味着需要更大的投入,并且这样的解决思路具备瓶颈,没有很好的扩展性,而上述策略则从从低成本、高扩张性的角度解决网站高负载高并发问题,在实际应用中也是行之有效的。

6. 负载均衡技术

6.1 负载均衡原理

随着系统的数据流量不断增大,经常出现Web服务器的大规模用户并发。Web应用服务器必然需要提供高可靠性、高伸缩性等特性,来提高系统整体性能和吞吐量,系统集群必然需要使用负载均衡技术来提高服务器响应速度,提高服务器及资源的利用效率,由于对系统服务性能的要求越来越高,系统集群中所采用的简单的动态负载均衡算法和调度策略已经逐渐不能满足任务分配高性能的需求。同时,同一请求任务分配或迁移到不同服务器对整体系统执行性能也会造成不同程度的影响。当一些处理机处于重载时,另一些处理机却处于轻载状态,这种负载的不平衡将直接影响系统的整体性能。

动态负载策略需要监测和确定每台服务器当前负载状态,进行信息汇集和综合分析,同时实时做出任务迁移策略。在动态负载平衡策略中,比较有代表性的算法是发送者主动算法、接受者主动算法、双向主动算法。但这些算法中各个节点很难准确的了解整个系统的负载状况及变化,很难实现整体的负载均衡。例如当一个节点刚刚接收迁移来的某个进程,如果该进程过于庞大,很可能导致当前节点成为超载节点,使得该进程再次迁移,女口果这样的崖移产生连锁效应,整个系统的性能会下降,即产生进程迁移的颠簸现象。同时如果过载的进程数总和大于空闲节点可以承受的进程数,那么经过一段时间的迁移后系统还会有过载节点,通过迁移没有达到均衡。实际上这个时候负载最重的节点可以将任务迁移到负载相对重节点来说较轻的节点上。系统整体负载率过轻时,如果各个节点负载均过轻,按照上述算法,节点间没有任务迁移,而某个任务多的节点可以将任务迁移到任务较少的节点上。

6.2 负载均衡技术的实现方式

目前有许多不同的负载均衡技术用以满足不同的应用需求,如软/硬件负载均衡、本地/全局负载均衡、更高网络层最载均衡以及链路聚合技术。

采用负载均衡技术的集群服务器

6.2.1 软/硬件负载均衡

软件负载均衡解决方案是指在1合或多台服务器相应的操作系统上,安装1个或多个附加软件来实现负载均衡,如DNS负载均衡等。它的优点是基于特定环境、配置简单、使用灵活、成本低廉,可以满足一般的负载均衡需求。

硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,这种设备通常称为负载均衡器。由于专门的设备完成专门的任务,独立于操作系统,整体性能得到大量提高,加上多样化的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求。

6.2.2 本地/全局负载均衡

负载均衡从其应用的地理结构上,分为本地负载均衡和全局负载均衡。本地负载均衡是指对本地的服务器群做负载均衡,全局负载均衡是指在不同地理位置、有不同网络结构的服务器群间做负载均衡。

本地负载均衡能有效地解决数据流量过大、网络负荷过重的问题,并且不需花费昂贵开支购置性能卓越的服务器,可充分利用现有设备,避免服务器单点故障造成数据流量的损失。有灵活多样的均衡策略,可把数据流量合理地分配给服务器群内的服务器,来共同负担。即使是

再给现有服务器扩充升级,也只是简单地增加一个新的服务器到服务群中,而不需改变现有网络结构。

全局负载均衡主要用于在一个多区域拥有自己服务器的站点,为了使全球用户只以一个IP 地址或域名就能访问到离自己最近的服务器,从而获得最快的访问速度,也可用于子公司分散站点分布广的大公司,通过企业内部互联网(Intranet)来达到资源统一合理分配的目的。

6.2.3 更高网络层负载均衡

更高网络层负载均衡通常操作于网络的第四层或第七层。第四层负载均衡将一个Internet上合法注册的IP地址,映射为多个内部服务器的IP地址,对每次TCP连接请求动态使用其中一个内部IP地址,达到负载均衡的目的。第七层负载均衡控制应用层服务的内容,提供了一种对访问流量的高层控制方式,适合对HTTP服务器群的应用。第七层负载均衡技术通过检查流经的HTTP报头,根据报头内的信息来执行负载均衡任务。

6.2.4 链路聚合技术

随着带宽增加,数据流量不断增大,网络核心部分的数据接口将面临瓶颈问题,原有的单一线路将很难满足需求,而且线路的升级又过于昂贵甚至难以实现,这时就可以考虑采用链路聚合技术。链路聚合技术将多条物理链路当作一条单一的聚合逻辑链路使用,网络数据流量由聚合逻辑链路中所有物理链路共同承担。由此在逻辑上增大了链路的容量,使其能满足带宽增加的需求。

一个典型的使用负载均衡的策略就是,在软件或者硬件四层交换的基础上搭建squid集群,这种思路在很多大型网站包括搜索引擎上被采用,这样的架构低成本、高性能还有很强的扩张性,向架构里面增减节点都非常容易。

7 结束语

对于高并发高负载大型网站来说,文中的每个方法可能都会被同时使用到,解决高并发高负载网站架构问题是一个非常复杂的问题。除了硬件设备升级之外,对网站代码的优化,以及软件系统的优化也是非常重要的方面,随着互联网技术和计算机技术的飞速发展,对高并发高负载大型网站的架构采用缓存技术和负载均衡技术是以后发展的趋势。

相关主题
相关文档
最新文档