高并发高访问量网站的运维技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
高并发高访问量网站的运维技术
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 负载均衡技术的实现方式
目前有许多不同的负载均衡技术用以满足不同的应用需求,如软/硬件负载均衡、本地/全局负载均衡、更高网络层最载均衡以及链路聚合技术。