- 1、本文档共22页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
大型web应用构建方法
大型web应用构建方法
随着互联网业务的不断丰富,互联网用户数的不断膨胀,已产生很多巨型的web应用,
如大型门户网站、SNS应用、有哪些信誉好的足球投注网站引擎。web应用相关的技术经过这些年的发展,已经细
分到很多方面,尤其对于大型web应用来说,所采用的技术涉及非常广,硬件、软件、编
程语言、数据库、WebServer、防火墙等,已经不是原来简单的html静态网站所能比拟
的。面对大量用户访问、高并发请求时,我们关心的根本是什么?对系统内单机而言,是I
O能力和CPU性能,对系统整体而言,是网络性能和数据库,所有这些是构成高性能的基
本因素。
对大型web应用,比如门户网站。可以做硬件扩展:使用更高性能或更多的服务器、
更高性能的数据库。这类扩展可以起到立竿见影的效果,随着访问量和数据量的增长,扩容
意味着需要更大的投入,是一个扩展性/价格比较差的方案,还没法根本解决大型网站面临
的高负载和高并发问题。
另外一种较好的思路是充分挖掘现有硬件和系统的潜能,在系统设计、实现和优化上做
文章,实现低成本、高性能和高扩张性。
1 基本思想
1 基本思想
11 基基本本思思想想
1.1
1.1
11..11 分解
通常情况下,分解后可以承受更多的访问量,而且对硬件的需求可能不会很高,可以根
据访问和用户行为合理进行组合调整和扩充,这样的系统伸缩性就高了。分解的好处是灵活
性、伸缩性、隔离性以及安全性。
1. 域名拆分:当我们一个网站有多个功能的时候,可以考虑把这个网站拆分成几个小
模块,每一个模块可以是一个网站,这样的话我们到时候就可以很灵活地去把这些
网站部署到不同的服务器上。
2. 动静分离:静态文件和动态文件最好分离,我们知道静态文件访问和动态文件访问
对服务器来说压力的侧重不同,前者重IO,后者重CPU,根据这个特点,在选择硬
件的时候也可以有侧重,而且静态和动态内容的缓存策略也不一样。典型的应用,
我们一般会有独立的文件或图片服务器。而且,使用不用的域名还可以提高浏览器
并行加载的能力。
3. 功能切分:比如有一个模块是负责上传的,上传操作很消耗时间,如果和其它应用
混在一起的话很可能,一点点访问就会使服务器瘫痪,这种特殊的模块应该分开。
安全的不安全的也要分开,还需要考虑到以后SSL的购买。
4. 对于涉及到数据库访问的动态程序来说,我们可以使用一个中间层(所谓的应用层
或逻辑层)来访问数据库(部署在独立的服务器上),最大的好处就是缓存和灵活性。
缓存的内存占用比较大,可以把它和网站进程分开,这样做可以很方便的去改变一
些数据访问的策略。
1.2 合并
1.2 合并
11..22 合合并并
适当的合并可以提供系统的承载能力。
1. 合并用户请求,最基本的就是合并CSS/图片/脚本,还可以合并页面。不过合并就
可能产生流量的浪费,需要有一个平衡点。
2. 合并接口的粒度,如果做分布式应用的话,我们可能不会直接访问数据库而是调用
应用层提供的接口,由于是网络调用,代价比较大,因此在设计的时候尽量提供粒
度比较粗的接口,一次调用返回比较多的数据,而不是细化到添加删除修改的层次。
3. 合并接口的部署,对于频繁的跨机器调用可以考虑有一些数据冗余,把跨网络的服
务编成进程间通讯,甚至转到客户端来做。比如日志脏词的过滤,直接调用应用层
提供的接口是可以的,但是可能代价比较大,可以把这个接口使用IPC方式部署在
本机。
1.3 转换
1.3 转换
11..33 转转换换
时间换空间,空间换时间
1. 缓存。缓存的重要性早计算机的硬件中就有重要的体现。对于网站,有很多种缓存,
可以是客户端资源的缓存,可以是页面输出缓存,也可以是应用层的数据缓存,目
的都是一样的,或是减少了服务器请求次数,或是减少了请求的处理过程,或是减
少了数据库的访问次数。当然,生成静态文件也可以算是一种缓存。不访问磁盘固
然不可能,但是我们要极大限度降低磁盘访问的机会。
2. 有的时候为了获取极快的响应,我们还会不惜代价采用重复计算。比如,我们的某
个操作很可能会由于网络问题等原因响应比较慢,在设计的时候可以有一个统一的
处理接口,由这个接口分发到不同的服务器去
文档评论(0)