`
j2eeli
  • 浏览: 44733 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

大型网站架构之我见

阅读更多

 A. 海量数据的处理。

  众所周知,对于一些相对小的站点来说,数据量并不是很大,select和update就可以解决我们面对的问题,本身负载量不是很大,最多再加几个索引就可以搞定。对于大型网站,每天的数据量可能就上百万,如果一个设计不好的多对多关系,在前期是没有任何问题的,但是随着用户的增长,数据量会是几何级的增长的。在这个时候我们对于一个表的select和update的时候(还不说多表联合查询)的成本的非常高的。我们如何处理这样的问题呢?目前比较流行的处理方式,第一:数据冗余,减少关联查询;第二:分段存储,这个点非常重要,分析网站访问用户,采用一定条件进行散列存储,也可以理解成数据分布式存储。

  B. 数据并发的处理

  在一些时候,2.0的CTO都有个尚方宝剑,就是缓存。对于缓存,在高并发高处理的时候也是个大问题。在整个应用程序下,缓存是全局共享的,然而在我们进行修改的时候就,如果两个或者多个请求同时对缓存有更新的要求的情况下,应用程序会直接的死掉。这个时候,就需要一个好的数据并发处理策略以及缓存策略。

  另外,就是数据库的死锁问题,也许平时我们感觉不到,死锁在高并发的情况下的出现的概率是非常高的,磁盘缓存就是一个大问题。

  C. 文件存贮的问题

  对于一些支持文件上传的2.0的站点,在庆幸硬盘容量越来越大的时候我们更多的应该考虑的是文件应该如何被存储并且被有效的索引。常见的方案是对文件按照日期和类型进行存贮。但是当文件量是海量的数据的情况下,如果一块硬盘存贮了500个G的琐碎文件,那么维护的时候和使用的时候磁盘的Io就是一个巨大的问题,哪怕你的带宽足够,但是你的磁盘也未必响应过来。如果这个时候还涉及上传,磁盘很容易就over了。

  也许用raid和专用存贮服务器能解决眼下的问题,但是还有个问题就是各地的访问问题,也许我们的服务器在北京,可能在云南或者新疆的访问速度如何解决?如果做分布式,那么我们的文件索引以及架构该如何规划。

  所以我们不得不承认,文件存贮是个很不容易的问题

  D. 数据关系的处理

  我们可以很容易的规划出一个符合第三范式的数据库,里面布满了多对多关系,还能用GUID来替换INDENTIFY COLUMN 但是,多对多关系充斥的2.0时代,第三范式是第一个应该被抛弃的。必须有效的把多表联合查询降到最低。

  E. 数据索引的问题

  众所周知,索引是提高数据库效率查询的最方面最廉价最容易实现的方案。但是,在高UPDATE的情况下,update和delete付出的成本会高的无法想想,笔者遇到过一个情况,在更新一个聚焦索引的时候需要10分钟来完成,那么对于站点来说,这些基本上是不可忍受的。

  索引和更新是一对天生的冤家,问题A,D,E这些是我们在做架构的时候不得不考虑的问题,并且也可能是花费时间最多的问题,

  F. 分布式处理

  对于2.0网站由于其高互动性,CDN实现的效果基本上为0,内容是实时更新的,我们常规的处理。为了保证各地的访问速度,我们就需要面对一个绝大的问题,就是如何有效的实现数据同步和更新,实现各地服务器的实时通讯有是一个不得不需要考虑的问题。

  G. Ajax的利弊分析

  成也AJAX,败也AJAX,AJAX成为了主流趋势,突然发现基于XMLHTTP的post和get是如此的容易。客户端get或者post 到服务器数据,服务器接到数据请求之后返回来,这是一个很正常的AJAX请求。但是在AJAX处理的时候,如果我们使用一个抓包工具的话,对数据返回和处理是一目了然。对于一些计算量大的AJAX请求的话,我们可以构造一个发包机,很容易就可以把一个webserver干掉。

  H. 数据安全性的分析

  对于HTTP协议来说,数据包都是明文传输的,也许我们可以说我们可以用加密啊,但是对于G问题来说的话,加密的过程就可能是明文了(比如我们知道的QQ,可以很容易的判断他的加密,并有效的写一个跟他一样的加密和解密方法出来的)。当你站点流量不是很大的时候没有人会在乎你,但是当你流量上来之后,那么所谓的外挂,所谓的群发就会接踵而来(从qq一开始的群发可见端倪)。也许我们可以很的意的说,我们可以采用更高级别的判断甚至HTTPS来实现,注意,当你做这些处理的时候付出的将是海量的database,io以及CPU的成本。对于一些群发,基本上是不可能的。笔者已经可以实现对于百度空间和qq空间的群发了。大家愿意试试,实际上并不是很难。

  I. 数据同步和集群的处理的问题

  当我们的一台databaseserver不堪重负的时候,这个时候我们就需要做基于数据库的负载和集群了。而这个时候可能是最让人困扰的的问题了,数据基于网络传输根据数据库的设计的不同,数据延迟是很可怕的问题,也是不可避免的问题,这样的话,我们就需要通过另外的手段来保证在这延迟的几秒或者更长的几分钟时间内,实现有效的交互。比如数据散列,分割,内容处理等等问题

  K.数据共享的渠道以及OPENAPI趋势

  Openapi已经成为一个不可避免的趋势,从google,facebook,myspace到海内校内,都在考虑这个问题,它可以更有效的留住用户并激发用户的更多的兴趣以及让更多的人帮助你做最有效的开发。这个时候一个有效的数据共享平台,数据开放平台就成为必不可少的途径了,而在开放的接口的情况保证数据的安全性和性能,又是一个我们必须要认真思考的问题了。

分享到:
评论

相关推荐

    详解:大型网站架构演变和知识体系

    大型网站架构演变和知识体系 之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为...我所见过的最好的网站架构体系

    百万年薪架构师架构设计视频课程

    视频详细讲解,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 课程介绍: 根据在百度、58集团等多年满足海量用户架构设计经验,带领大家系统性地学习人工智能时代下互联网高可用高并发架构设计,理论结合...

    亿级流量电商详情页系统实战-缓存架构+高可用服务架构+微服务架构

    10、直接可以二次开发的代码:本次升级,采取了大型电商网站商品详情页系统完整的全链路架构,包括基础设施如何部署,以及整体代码架构,都是完全按照公司里来做的。虽然本次升级依然是专注于架构,而不是业务,基本...

    深入浅出J2EE架构(术语表)

    深入浅出J2EE架构—— 应用程序设计与部署的原理 (术语表) 来源:http://book.csdn.net/bookfiles/218/ ACID(Atomicity、Consistency、Isolation、Durability,原子性、一致性、隔离性、持久性) “原子性”指导致...

    StudyOnlinePlatForm:中大型网络教学平台架构及部分实现(教学互动,课程点播,教学直播)

    本项目是一个中大型网络教学平台架构及部分实现(教学互动,课程点播,教学直播) 目前实现功能 用户登录注册及鉴权 文件上传与下载 文档在线预览 教师在线备课编辑 课程视频点播 在线学习课程 后台用户管理 效果截图 ...

    电气设备行业简评报告:大型化助推风电格局重塑,硅料价格见顶带动需求提振.pdf

    电气设备行业简评报告:大型化助推风电格局重塑,硅料价格见顶带动需求提振.pdf

    使用SMACK堆栈进行快速数据分析

    为了减轻这种情况,业界已经提出了诸如Lambda架构(见《程序员》2016年11月“Lambda与Kappa计算架构之我见”一文)等架构。在Lambda架构中,一个“慢”大数据处理框架(如Hadoop堆栈)与一个“快速”的流处理框架...

    ElasticSearch5.2全网最全技术视频

    (2-3)之所以要单独拉出一篇做大型项目实战,是因为,之前几篇讲的项目,多是架构较为简单,业务也不复杂的项目,主要适用于中小型公司,而且那两个项目主要是集中在运用ES的技术本身来开发出需要的功能来(搜索/...

    仿阿里巴巴商贸通b2b行业商务网站管理系统SQL版生成html

    网站建设行业,上海行业网站,行业网站发展,钢铁行业网站,餐饮行业网站,广州行业网站,行业网站运营,模具行业网站,五金行业网站,长沙行业网站,ic行业网站,行业网站设计,家居行业网站,行业网站管理系统,旅游行业网站,...

    Spark大型项目实战:电商用户行为分析大数据平台开发实战

    上百节课详细讲解,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 课程介绍: 讲解一个真实的、复杂的大型企业级大数据项目,是Spark的大型项目实战课程。 通过本套课程的学习,可以积累大量Spark项目经验...

    Android项目源码开源的 Material Design 豆瓣客户端.zip

    为了生成适应于不同屏幕大小、系统版本的图片,我使用 bash 编写了一系列脚本,并实现了一个通用的模板化 SVG 格式,详情见 MaterialColdStart 和 AndroidSVGScripts。 经过自定义窗口背景和其他优化,应用在手机上...

    KesionCMS v9.5.140605 免费正式版本(utf-8).rar

    KesionCMS是漳州科兴信息技术有限公司开发的一套万能建站产品,是CMS行业最流行的网站建设解决方案之一,V9.5采用ASP ACCESS/MSSQL架构,系统具有极强的可扩展性,并且一直以来完全开放源代码;这套系统自2006年发布...

    KesionCMS v9.5.140605 免费正式版(gbk).rar

    KesionCMS是漳州科兴信息技术有限公司开发的一套万能建站产品,是CMS行业最流行的网站建设解决方案之一,V9.5采用ASP ACCESS/MSSQL架构,系统具有极强的可扩展性,并且一直以来完全开放源代码;这套系统自2006年发布...

    Android程序设计基础

    CruiseYoung提供的带有详细书签的电子书籍目录 ... 该资料是《Android基础教程》的源代码 对应的书籍资料见: ... 我还记得第一次使用Android时的情景:当时感觉它就像是一座超大型迷宫。有了这本书,入门就不会那么...

    专栏 | 知识图谱选项与实施指南(2021).zip

    编制组依托知识图谱产业推进方阵、全国信息技术标准化技术委员会人工智能分委会知识图谱工作组启动并编制了《知识图谱选型与实施指南〉,从以下八大问题出发形成了各章节内容,具体白皮书展开逻辑架构图见图0-1。...

    铁路高清视频监控系统解决方案

     铁路综合视频监控系统是一个多级管理、多级转发、多级存储的大型网络化视频监控系统,根据铁路视频监控的现状及需求分析,在《铁路综合视频监控系统技术规范》的框架下,大华股份为铁路行业量身定制了不同的解决...

    安防与监控中的铁路高清视频监控系统解决方案

     铁路综合视频监控系统是一个多级管理、多级转发、多级存储的大型网络化视频监控系统,根据铁路视频监控的现状及需求分析,在《铁路综合视频监控系统技术规范》的框架下,大华股份为铁路行业量身定制了不同的解决...

    科锐国际2020人才市场洞察及薪酬指南.pdf

    见AIoT将成为未来几年内持续热点,预估将拥有万亿规模的市场体量。 AIoT拥有广阔的市场,且在不同赛道形成垂直分布的态势。在智能安防、智能家 居、智慧社区、智能驾驶等领域形成了千亿级细分市场。从人才需求看,...

    电子时钟设计(1).doc

    象地称做电脑了 世界上第台人电脑由IBM于1980年推出IBM推出英特尔x86硬体架构及微软公司MS- DOS操作系统人电脑并制定PC/ATPC规格之由英特尔所推出微处理器及微软所推出操作系 统发展几乎等同于人电脑发展历史Wintel...

Global site tag (gtag.js) - Google Analytics