



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高并发重负载网站架构浅析崔伟,周泉(泸州职业技术学院,网管中心,四川 泸州, 646005)摘 要:在高并发和重负载情形下,对网站高效能的追求,是大型网站设计和优化的首要出发点。本文从静态内容分离和应用拆分、存储拆分、缓存机制和负载均衡四个方面简要分析了高并发和重负载网站的技术架构,最后对系统架构设计的原则进行了简单的探讨。关键词:网站架构;应用拆分;存储拆分;缓存体系;负载均衡4小型网站对系统架构、性能的要求都很低,往往采用集中单一的系统架构即可满足网站运行的要求。但随着网站功能的拓展和用户量的增长,网站数据必然不断膨胀。通常,当网站访问量达到10万PV级时,应采用web服务器和数据库服务器分离的系统架构,而为了应对超过百万PV甚至达到千万PV级的访问量,除了在硬件设施上加大投入外,更关键的则是引入分布式系统架构以达到良好的系统容错性、扩展性和伸缩性1。本文将从静态内容分离和应用拆分、存储拆分、缓存机制和负载均衡四个方面来简单探讨高并发重负载网站架构。1 静态内容分离和应用拆分网站中效率最高、消耗最小的是纯静态化的HTML页面。实现动态的数据和逻辑与静态的表现相分离是高负载应用普遍采取的方法2。对于交互应用较少的页面可以简单的以静态页面呈现,而对于内容量大且频繁更新的站点,则通常借助CMS系统批量的生成和维护静态页。HTML静态化也是某些缓存策略的基础,对于系统中频繁使用数据库查询但是内容更新很小的应用,通常会使用静态页作为缓存的一部分,从而避免大量的数据库访问请求。对于小型的web系统,由于负载较低,通常可将所有的应用逻辑在单一系统中实现。所有逻辑均在一个进程或一个应用中运行。但随着系统用户的增加和系统功能的扩展,系统复杂度将大大上升、系统维护和扩展的难度不断增加,同时系统的可用性和伸缩性也会受到影响。因此有必要对大型的互联网应用进行拆分,即,将原来的系统根据一定的标准(如业务相关性)拆分为不同子系统,分别负责不同的功能,从而可以大大的提升系统的水平伸缩性,可以有针对性的对重负载的子系统进行水平扩展而不会影响到其它的子系统,避免了单一系统存在的由于局部应用在重负载下崩溃而引起整个系统崩溃的现象发生。2 存储拆分静态内容分离后可以大大提升网站的负载能力,但仍无法突破海量数据集中存储和访问引起I/O效率瓶颈。因此在存储的层面对系统进行拆分就至关重要。2.1 数据库拆分大型网站通常由数据库驱动,那么在面对大量访问的时候,数据库的瓶颈会很快出现。因此通常需要使用数据库集群或者库表散列对数据库进行拆分。在数据库集群方面,大多数数据库厂商都有自己的解决方案。大型网站的数据库集群架构通常参考选用数据库厂商的解决方案实施,因此在成本、扩张性等方面也会受到所采用数据库类型的限制。因此我们需要从应用程序的角度来考虑改善系统架构,库表散列是常用并且最有效的解决方案。一方面可以按照功能进行垂直扩展,即将不同功能模块的数据存储在不同的数据库中。这样将一个较大的数据库切分成多个小数据库,从而实现数据库的扩展。系统中各功能模块后合度越低,则越容易使显示数据库的垂直切分。另一方面可以从数据的水平将表中的数据记录且分到不同的数据库中。为了能够比较容易地判断各行数据切分到了哪个数据库中,切分总是需要按照某种特定的规则来进行的,如按照某个数字字段的范围,某个时间类型字段的范围,或者某个字段的hash值。在大型网站中通常会综合运用这两种库表散列方案,即按功能模块将数据库进行分离,不同的模块对应不同的数据库或者表,再按照一定的策略对某个页面或者功能进行更小的数据库散列,这样就能够低成本的提升系统的性能并且有很好的扩展性。2.2 非结构化数据拆分在一个大型的互联网应用当中,除了可以用数据库处理的结构化数据之外,还存在大量的非结构化数据,例如配置文件、视频和图片等。这些信息一般不适合保存到RDBMS中,或使用RDBMS管理会引起读取性能的严重下降。因此这些非结构化的数据也需要和其它信息分开存储,而一般的互联网应用系统都会选择把这些信息保存到分布式文件系统中3,这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片问题而崩溃,保证更低的系统消耗和更高的执行效率。分布式文件系统是实现非结构化数据存储的主要技术,典型的分布式文件系统是GFS(Google File System)。其他开源组织开发的分布式文件系统,其基本思想和GFS一致。3 缓存处理采用缓存处理机制是大型网站应对访问量持续增长,提升页面响应速度的常用策略。重负载环境中常综合采用下述几种缓存机制:客户端缓存(client Page Cache):根据HTTP协议特性,修改Header参数(Cache-Control、Expires、Pragma、Last-Modified、Etag),让浏览器来缓存页面(一些优秀开发框架会对此做透明的封装,例如:Beetle)。通过尽量使用GET请求、压缩页面、使用Cookie代替Session以及使用AJAX实现异步数据更新等,减少客户端和服务器的数据流量4,还可以采取浏览器插件技术突破浏览器功能限制,将原本在服务器端运算,尽量迁到浏览器端。前端页面缓存(Front Page Cache):访客向网站发出访问请求,由前端页面缓存器负担原服务器的处理进程做出响应,获取原服务器的相应网页内容,将其储存在自身的内存中,与此同时,传送给访客这一缓存的内容;如有另一访客也请求访问之前的相同内容,前端页面缓存器毋须再次获取原服务器上的相应内容,而直接从自身的内存中获取,将这一内容传送给访客。反之,前端页面缓存器也可缓存访客的GET和POST请求。在这种缓存架构中,访客实际面对的是前端页面缓存器,与网站之间的通讯完全由前端页面缓存器反向代理,而非原服务器直接响应访客,这将大大加快访客上网流畅度,有效提升访问量,显著降低带宽占用,减轻原始服务器的繁忙度,加快响应速度,毋须不停地购置大内存,大硬盘,扩容电力设施为服务器端节省成本。页面片段缓存 (Edge Side Includes,ESI)是一个基于XML的标记语言,目的是在HTTP中组装各种资源。在实际环境中,一个动态生成的页面,当中可能只有少量的内容是频繁变化的或是个性化的,对于传统的Cache服务器来说,由于这些少量的动态内容的存在,因此无法在保证页面时效性的前提下将整个页面进行缓存。ESI通过使用简单的标记语言来对那些可以缓存和不能缓存的网页中的内容片断进行描述,每个网页都被划分成不同的小部分分别赋予不同的缓存控制策略,使Cache服务器可以根据这些策略在将完整的网页发送给用户之前将不同的小部分动态地组合在一起。通过这种控制,可以有效地减少从服务器抓取整个页面的次数,而只用从原服务器中提取少量的不能缓存的片断,因此可以有效降低原服务器的负载,同时提高用户访问的响应时间。本地数据缓存(Local Data Cache):通常包括关系数据库系统(如:Oracle/MySql)缓存和应用服务器缓存。数据库系统缓存的重点一般是查询缓存(以sql为key来缓存查询结果)和数据缓冲(数据库数据内存缓存器,其访问命中率决定数据库性能);应用服务器Cache包括:对象缓存(例如:对象线程安全,做成单例),更新频率不大数据考虑缓存(如:基表数据、配置文件信息),考虑使用线程池,对象池,连接池等。4 小结网站架构的设计往往承受着技术、成本和效益等多重因素的制约,而不可能单纯考虑某一个设计原则。例如,在互联网应用中,基于成本和效率的要求,不能单纯考虑ACID原则达到数据的强一致性,而通常以BASE策略放弃对强一致性的追求而只强调最终一致性,由此获得更好的可用性。另一方面,虽然良好的架构设计往往可以带来系统性能的跃升,但在架构设计和调整中通常伴随高昂的人力资源成本。因此在某些情况下简单的对系统硬件设备进行升级反而可以取得更好的实践效果。参考文献1 Peter Morville Lou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 60305:1995 EN-D Insulators for overhead lines with a nominal voltage above 1000 V - Ceramic or glass insulator units for a.c. systems - Characteristics of insulator unit
- 校园电力安全知识培训
- 校园消防知识培训方案课件
- 防洪考试题及答案
- 立业理论考试题及答案
- 销售核算面试题及答案
- 车体安全测试题及答案
- 乡村全科考试试题及答案
- 申论助教面试题及答案
- 2025年福建省泉州技师学院招聘合同教师考试笔试试题(含答案)
- 无人机反制设备原理课件
- 2025年道路运输两类人员安全员考核分享题库及答案
- 中国肺血栓栓塞症诊治、预防和管理指南(2025版)
- 工会招聘考试题及答案
- 1.1认识社会生活 教案 2025-2026学年统编版道德与法治八年级上册
- 山东省技工学校模拟面试全新系列题目
- GA 38-2021银行安全防范要求
- 第一章数字印刷概述课件
- 【医院管理】-科研创新助推学科建设课件
- 新课标高考英语词汇表3500
- 工资现金发放证明书
评论
0/150
提交评论