- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
高并发重负载网站架构浅析.doc
高并发重负载网站架构浅析
崔伟,周泉
(泸州职业技术学院,网管中心,四川 泸州, 646005)
摘 要:在高并发和重负载情形下,对网站高效能的追求,是大型网站设计和优化的首要出发点。本文从静态内容分离和应用拆分、存储拆分、缓存机制和负载均衡四个方面简要分析了高并发和重负载网站的技术架构,最后对系统架构设计的原则进行了简单的探讨。
关键词:网站架构;应用拆分;存储拆分;缓存体系;负载均衡
小型网站对系统架构、性能的要求都很低,往往采用集中单一的系统架构即可满足网站运行的要求。但随着网站功能的拓展和用户量的增长,网站数据必然不断膨胀。通常,当网站访问量达到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、P
文档评论(0)