这里的大型网站架构只包括高互动性高交互性的数据型大型网站,基于大家众所周知的原因,我们就不谈新闻类和一些依靠HTML静态化就可以实现的架构了,我们以高负载高数据交换高数据流动性的网站为例,比如海内,开心网等类似的web2.0系列架构。我们这里不讨论是PHP还是JSP或者.NET环境,我们从架构的方面去看问题,实现语言方面并不是问题,语言的优势在于实现而不是好坏,不论你选择任何语言,架构都是必须要面对的。
这里讨论一下大型网站需要注意和考虑的问题
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分钟来完成,那么对于站点来说,这些基本上是不可忍受的。
索引和更新是一对天生的冤家,问题A,D,E这些是我们在做架构的时候不得不考虑的问题,并且也可能是花费时间最多的问题,
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到海内校内,都在考虑这个问题,它可以更有效的留住用户并激发用户的更多的兴趣以及让更多的人帮助你做最有效的开发。这个时候一个有效的数据共享平台,数据开放平台就成为必不可少的途径了,而在开放的接口的情况保证数据的安全性和性能,又是一个我们必须要认真思考的问题了。
分享到:
相关推荐
在构建大型网站架构时,需要面对一系列复杂的问题,这些问题直接影响到网站的性能、稳定性和安全性。以下是关于这些关键问题的详细分析: A. 海量数据的处理:随着用户数量和数据量的增长,传统的数据库查询方式...
### 从运维角度看中大型网站架构演变之路 随着互联网的发展,中大型网站面临的挑战日益增多,这不仅体现在用户数量的增长上,还体现在对系统稳定性和性能的要求上。本文旨在通过一个具体的案例,来探讨中大型网站...
### 大型网站架构系列文档 #### 一、海量数据的处理 对于小型网站而言,其数据量通常较小,简单的 `SELECT` 和 `UPDATE` 操作足以满足需求,加之合理地添加索引,就能有效应对大部分场景。然而,对于大型网站而言...
《大型网站技术架构 核心原理与案例分析》的作者是李智慧,原阿里巴巴技术专家。 Java 的大多数应用都是用在Web上的,现在只要稍微大型一点的Web应用,都一定是一个分布式系统,那么一个分布式系统用到了哪些技术?...
找到的一个比较好的东西,主要介绍了在大型网站开发过程中应该开率和注意的一些东西等
【大型网站架构不得不考虑的10个问题】 大型网站架构设计是互联网技术中至关重要的一环,尤其是对于那些高互动性、高数据交换的web2.0平台,如海内、开心网等。以下是对这些核心问题的详细阐述: 1、**海量数据...
### 基于大型高并发高负载网站的系统架构 #### 概述 随着互联网技术的飞速发展,大型网站面临着前所未有的挑战——如何在保证用户体验的同时,应对高并发访问和高负载的情况。这就需要一系列复杂的系统架构设计和...
【大型社区网站系统架构实例分析】 社区网站,尤其是大型社区,面临着高并发、实时性以及内容展示等多重挑战。在本实例分析中,我们将探讨如何通过精心设计的系统架构来应对这些问题。 首先,大型社区网站的特点是...
【大型WEB网站架构深入分析-图片服务器分离】 大型WEB网站在提供丰富内容的同时,往往需要处理大量的图片数据,这些图片占据了网页传输中的大部分流量,对网站性能的影响显著。因此,图片服务器分离成为优化网站...
业务架构设计还特别注意了不同类型业务的隔离,如交易业务需要高可用性,履约业务则优先保证一致性,而闪购业务则对高并发有较高要求。 应用架构的设计则遵循稳定性原则,包括简单、清晰的架构,不过度设计,以及...
三层架构是一种常见的软件设计模式,尤其在开发大型企业级应用,如购物网站时,它能够提供良好的可维护性、可扩展性和职责分离。这个模式通常包括表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)...
- **软件架构的定义与问题**:介绍软件架构的基本概念及其在软件开发过程中扮演的角色,探讨软件架构设计过程中可能遇到的问题。 - **在信息技术战略规划(ITSP)中的软件架构**:阐述软件架构如何支持企业的信息...
系统架构师的论文标题可能涉及特定的技术挑战、解决方案或者创新性架构设计,如"基于微服务的大型分布式系统架构设计"或"云计算环境下的高可用架构实践"。 描述部分则提供了对论文内容的预览,让读者知道论文将探讨...
首先,我们要理解什么是“三层架构”。三层架构是一种将应用逻辑分解为三个独立层的架构设计:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。这种架构的...
【大型网站性能优化】是针对高流量、高并发的互联网应用进行的一系列技术措施,以提升网站的响应速度和用户体验。以下将详细阐述优化的各个方面: **一、Web页面优化** 1. **网页图片优化**:选择合适的图片格式,...
综上所述,该大型集团企业在进行IT信息化战略规划时,需要从管理架构、应用架构和技术架构三个方面入手。通过明确企业信息化定位、构建合理的应用和技术架构,并分阶段推进,可以有效地支持企业的长期发展目标。同时...
4. **注意性能问题**: 虽然三层架构可以带来诸多好处,但也可能引入额外的网络延迟和性能开销。因此,在设计时需要考虑到这一点,尤其是在需要频繁交互的场景下。 #### 五、结论 三层架构通过其特有的分层设计,为...
网站架构设计是构建高效、可扩展的互联网应用的关键步骤,涉及到程序架构、呈现架构和信息架构三个方面。在设计过程中,首先要根据客户需求分析,确定网站的目标用户群体,规划网站的整体结构,设计各栏目和内容,...
【描述】:本文主要探讨了中大型企业网络在面临公网IP地址短缺问题时,如何利用NAT(网络地址转换)技术来构建互联网架构,以满足大量用户同时上网的需求,同时考虑网络安全和效率。 【标签】:“解决方案” ...
6. **性能优化**:由于可能涉及大量的数据和视图,要注意优化加载和滚动性能,如使用懒加载、分页加载等策略,以及优化列表视图的复用机制。 通过以上步骤,我们便能构建出一个类似于钉钉的组织架构通讯录功能。这...