大型网站架构必须要面对的问题 2010年的大型网站,面对的问题已经不再是内容的集中广播式展示的问题了,而是越来越多的用户交互式应用及以因为这些应用产生的海量个性化数据。比如以用户为中心大型电子商务网站、SNS社会化网络、SocialGame以及其他新兴的Web2.0模式的大型网站及应用。所以这里只讨论高度交互性海量数据的大型网站,而不讨论新闻类和一些依靠HTML静态化就可以实现的Web1.0时代的网站架构。比如海内,开心网等类似的web2.0系列架构。我们这里也不讨论站点是PHP、J2EE、.NET还是ROR、Python 等基础运行环境。不管采用什么语言或基础运行环境,架构都是我们所必须要面对的。
1、海量数据的处理 众所周知,对于一些相对小的站点来说,数据量并不是很大,select和update就可以解决我们面对的问题,本身负载量不是很大,最多再加几个索引就可以搞定。对于大型网站,每天的数据量可能就上百万,如果一个设计不好的多对多关系,在前期是没有任何问题的,但是随着用户的增长,数据量会是几何级的增长的。在这个时候我们对于一个表的select和update的时候(还不说多表联合查询)的成本的非常高的。
2、数据并发的处理 在一些时候,2.0的CTO都有个尚方宝剑,就是缓存。对于缓存,在高并发高处理的时候也是个大问题。在整个应用程序下,缓存是全局共享的,然而在我们进行修改的时候就,如果两个或者多个请求同时对缓存有更新的要求的情况下,应用程序会直接的死掉。这个时候,就需要一个好的数据并发处理策略以及缓存策略。 另外,就是数据库的死锁问题,也许平时我们感觉不到,死锁在高并发的情况下的出现的概率是非常高的,磁盘缓存就是一个大问题。
3、文件存贮的问题 对于一些支持文件上传的2.0的站点,在庆幸硬盘容量越来越大的时候我们更多的应该考虑的是文件应该如何被存储并且被有效的索引。常见的方案是对文件按照日期和类型进行存贮。但是当文件量是海量的数据的情况下,如果一块硬盘存贮了500个G的琐碎文件,那么维护的时候和使用的时候磁盘的Io就是一个巨大的问题,哪怕你的带宽足够,但是你的磁盘也未必响应过来。如果这个时候还涉及上传,磁盘很容易就over了。 也许用raid和专用存贮服务器能解决眼下的问题,但是还有个问题就是各地的访问问题,也许我们的服务器在北京,可能在云南或者新疆的访问速度如何解决?如果做分布式,那么我们的文件索引以及架构该如何规划。 所以我们不得不承认,文件存贮是个很不容易的问题
4、数据关系的处理 我们可以很容易的规划出一个符合第三范式的数据库,里面布满了多对多关系,还能用GUID来替换INDENTIFY COLUMN 但是,多对多关系充斥的2.0时代,第三范式是第一个应该被抛弃的。必须有效的把多表联合查询降到最低。
5、数据索引的问题 众所周知,索引是提高数据库效率查询的最方面最廉价最容易实现的方案。但是,在高UPDATE的情况下,update和delete付出的成本会高的无法想想,笔者遇到过一个情况,在更新一个聚焦索引的时候需要10分钟来完成,那么对于站点来说,这些基本上是不可忍受的。 索引和更新是一对天生的冤家,我们在做架构的时候不得不考虑这点,并且也可能是花费时间最多。
6、分布式处理 对于2.0网站由于其高互动性,CDN实现的效果基本上为0,内容是实时更新的,我们常规的处理。为了保证各地的访问速度,我们就需要面对一个绝大的问题,就是如何有效的实现数据同步和更新,实现各地服务器的实时通讯有是一个不得不需要考虑的问题。
7、Ajax的利弊分析 成也AJAX,败也AJAX,AJAX成为了主流趋势,突然发现基于XMLHTTP的post和get是如此的容易。客户端get或者post 到服务器数据,服务器接到数据请求之后返回来,这是一个很正常的AJAX请求。但是在AJAX处理的时候,如果我们使用一个抓包工具的话,对数据返回和处理是一目了然。对于一些计算量大的AJAX请求的话,我们可以构造一个发包机,很容易就可以把一个webserver干掉。
8、数据安全性的分析 对于HTTP协议来说,数据包都是明文传输的,也许我们可以说我们可以用加密啊,但是对于G问题来说的话,加密的过程就可能是明文了(比如我们知道的QQ,可以很容易的判断他的加密,并有效的写一个跟他一样的加密和解密方法出来的)。当你站点流量不是很大的时候没有人会在乎你,但是当你流量上来之后,那么所谓的外挂,所谓的群发就会接踵而来(从qq一开始的群发可见端倪)。也许我们可以很的意的说,我们可以采用更高级别的判断甚至HTTPS来实现,注意,当你做这些处理的时候付出的将是海量的database,io以及CPU的成本。对于一些群发,基本上是不可能的。笔者已经可以实现对于百度空间和qq空间的群发了。大家愿意试试,实际上并不是很难。
9、数据同步和集群的处理的问题 当我们的一台databaseserver不堪重负的时候,这个时候我们就需要做基于数据库的负载和集群了。而这个时候可能是最让人困扰的的问题了,数据基于网络传输根据数据库的设计的不同,数据延迟是很可怕的问题,也是不可避免的问题,这样的话,我们就需要通过另外的手段来保证在这延迟的几秒或者更长的几分钟时间内,实现有效的交互。比如数据散列,分割,内容处理等等问题
10、数据共享的渠道以及OPENAPI趋势 Openapi已经成为一个不可避免的趋势,从google,facebook,myspace到海内校内,都在考虑这个问题,它可以更有效的留住用户并激发用户的更多的兴趣以及让更多的人帮助你做最有效的开发。这个时候一个有效的数据共享平台,数据开放平台就成为必不可少的途径了,而在开放的接口的情况保证数据的安全性和性能,又是一个我们必须要认真思考的问题了。
转:http://www.php.cn/Jooyea/5.html
分享到:
相关推荐
《大型网站架构说明》是一份深入探讨网站架构的宝贵资料,包含了从基础到高级的多个层面,旨在帮助读者理解如何构建稳定、可扩展且高效的大型网站。这份文档分为三部分,即“大型网站架构系列一”、“大型网站架构...
通过阅读《大型网站技术架构:核心原理与案例分析》,读者不仅可以学习到理论知识,还能从实际案例中汲取经验,更好地应对大型网站面临的各种复杂问题。无论是初级开发者还是经验丰富的架构师,都能从中受益匪浅。
《大型网站架构文档》 大型网站架构是互联网技术领域中的一个重要课题,涉及到多个技术栈的综合运用,旨在处理高并发、大数据量、高可用性以及快速响应等挑战。本文档主要探讨了像Facebook、淘宝、豆瓣这样的大型...
在构建大型网站架构时,需要面对一系列复杂的问题,这些问题直接影响到网站的性能、稳定性和安全性。以下是关于这些关键问题的详细分析: A. 海量数据的处理:随着用户数量和数据量的增长,传统的数据库查询方式...
在构建大型网站技术架构时,面对亿级流量的挑战,我们需要深入理解并应用一系列核心原理与最佳实践。这两本书——《大型网站技术架构:核心原理与案例分析》和《亿级流量网站架构核心技术 跟开涛学搭建高可用高并发...
《大型网站技术架构书籍》是针对互联网行业中高并发、复杂度高的大型网站设计与实现的一类专业读物。这类书籍通常会深入探讨如何构建能够处理海量用户访问、高并发请求的系统,以及如何通过合理的技术架构来保障系统...
在构建大型网站架构时,需要考虑的关键问题涵盖了数据处理、并发控制、文件存储、数据关系设计、索引优化、分布式处理、Ajax应用以及数据安全性等多个方面。以下将详细阐述这些问题及其解决方案。 1、海量数据处理...
随着互联网的发展,中大型网站面临的挑战日益增多,这不仅体现在用户数量的增长上,还体现在对系统稳定性和性能的要求上。本文旨在通过一个具体的案例,来探讨中大型网站架构从初期到现在的演变过程,并展望未来的...
《大型网站技术架构》这本书深入探讨了构建高访问量、高并发、高可用性的大型网站所需的技术和架构设计。在互联网行业中,随着用户数量的急剧增长,如何保证网站的稳定性和性能成为了一项重大挑战。Java作为业界广泛...
根据提供的文件信息,我们可以推断出这份文档主要讨论的是“大型分布式网站架构设计”的相关内容,并且提供了一个百度云的下载链接。接下来,我们将基于这些信息深入探讨与大型分布式网站架构设计相关的几个关键知识...
### 大型网站架构演变详解 #### 架构演变第一步:物理分离Web服务器与数据库 在网站初期,可能仅有一台服务器集成了Web服务与数据库服务。随着网站流量的增加,这种架构会面临性能瓶颈,因为Web应用和数据库之间...
架构师在大型网站的建设和发展中扮演着至关重要的角色,他们的工作涉及到了网站技术架构的设计、优化与问题解决方案的制定。大型网站技术架构不仅仅关注于代码的编写和功能的实现,它更是一个系统的工程,需要考虑到...
在构建大型分布式网站架构时,我们面临的主要挑战是如何处理高并发访问、数据存储与处理的扩展性、系统可用性和容错性。以下是对这些关键知识点的详细解释: 1. 分布式架构基础: 分布式架构是将单一应用程序拆分...
### 大型网站架构设计的关键知识点 #### 一、海量数据处理 在构建大型网站时,数据处理能力是首要考虑的问题。与小型站点相比,大型网站每天可能产生数百万条数据,这要求系统具备高效的数据处理机制。在设计初期...
在系列的第一部分,"疯狂代码,大型网站架构系列之一,前言,不得不考虑的问题.doc",作者引入了大型网站架构设计所面临的根本问题。这部分可能包括了对高可用性、可扩展性、性能优化、数据一致性以及故障恢复等关键...
在IT行业中,网站架构设计是构建高效、稳定且可扩展的在线服务平台的关键步骤。本话题主要探讨了四个关键的架构模型:企业架构图、电子商务平台架构图、百度的架构以及淘宝量子统计的简单版架构。这四个模型代表了...
这些演讲不仅展示了大型网站在架构设计上的深度和广度,还揭示了他们如何应对流量高峰、提高用户体验、保证系统稳定性和实现业务敏捷性的策略。对于想要了解和学习现代互联网架构的人来说,这些资料极具价值。
总的来说,《大型网站技术架构:核心原理与案例分析》是一本全面介绍大型网站架构设计和实施的书籍,适合想要深入理解和实践这一领域知识的读者。通过阅读这本书,读者不仅可以学习到理论知识,还能了解到实际案例,...