• <tr id='inY4A9'><strong id='inY4A9'></strong><small id='inY4A9'></small><button id='inY4A9'></button><li id='inY4A9'><noscript id='inY4A9'><big id='inY4A9'></big><dt id='inY4A9'></dt></noscript></li></tr><ol id='inY4A9'><option id='inY4A9'><table id='inY4A9'><blockquote id='inY4A9'><tbody id='inY4A9'></tbody></blockquote></table></option></ol><u id='inY4A9'></u><kbd id='inY4A9'><kbd id='inY4A9'></kbd></kbd>

    <code id='inY4A9'><strong id='inY4A9'></strong></code>

    <fieldset id='inY4A9'></fieldset>
          <span id='inY4A9'></span>

              <ins id='inY4A9'></ins>
              <acronym id='inY4A9'><em id='inY4A9'></em><td id='inY4A9'><div id='inY4A9'></div></td></acronym><address id='inY4A9'><big id='inY4A9'><big id='inY4A9'></big><legend id='inY4A9'></legend></big></address>

              <i id='inY4A9'><div id='inY4A9'><ins id='inY4A9'></ins></div></i>
              <i id='inY4A9'></i>
            1. <dl id='inY4A9'></dl>
              1. <blockquote id='inY4A9'><q id='inY4A9'><noscript id='inY4A9'></noscript><dt id='inY4A9'></dt></q></blockquote><noframes id='inY4A9'><i id='inY4A9'></i>

                技术观点

                加强技术投入,共享技¤术成果

                个人多年web架构设计实践的经验分享


                编辑:杭州大显网络科技有限公司更新日期:2009-05-26
                本人作为一位web工程师,着眼最多之处莫过于性能与架构,本ω次幸得参与sd2.0大会,得以与同行广泛交流,于此二方面,有些心得,不敢独享,与众博友分享,本※文是这次参会与众同撩交流的心得,有兴趣者可以查看视频架构设计的几个心得:
                一,不要过设计:neveroverdesign

                这是一个常常被提及的话题,但是只要想想你的架构里有多少功能是根↑本没有用到,或者最后废弃的,就能明白其重要性了,初涉『架构设计,往往倾向★于设计大而化一的架构,希望设计出具有无比扩展性,能适应一切需求的增加架构,web开发领域〖是个非常动态的过程,我们很难预测下个星期的变化,而又需要对变化做出最快最有效的响应。。ebay的工程师说过,他们的架构设计从来都不能满足系统的增长,所以他们的系统永ㄨ远都在推翻重做。请注意,不是ebay架构师的能力有问题,他们设计的架构总是建立旧版本的瓶颈上,希望通过新的◥架构带来突破,然而新架构带来的【突破总是在很短的时间内就被新增需求淹没,于是他ぷ们不得不又使用新的架构
                web开发,是个非常敏捷的过程,变化随时都在产生,用户∩需求千变万化,许多▆方面偶然性非常高,较之软件开发,希望用一个架构规划以后的⌒ 所有设计,是不现实①的
                二,web架构生命周期:webarchitecture‘slifecycle
                既然要杜▽绝过设计,又要保证一定的前ω 瞻性,那么怎么才能找到其中的平衡呢?希望下面的web架构生命周期能够帮到你所设计的架□ 构需要在1-10倍的增长下,通过简单的增加硬件容量就能够胜任,而在5-10倍的增长期间,请着手下一个版本的架构设计卐▂,使之能承受下一个10倍间的】增长google之所以能够称霸,不完全是因为搜索技术和排序技术有多先进,其实包括baidu和yahoo,所使用的技术现在也已经大同小异,然而,google能在一个月内◥通过增加上万台服务器来达到足够系统容量的能力确是很难▓被复制的
                三,缓存:Cache

                空间换取时间,缓存永远计◥算机设计的重中之重,从cpu到io,到处都可以看到缓存的身影,web架构设计重≡,缓存设计必不可少,关于怎样设计合理的缓存,jbosscache的创始人,淘宝的创始人是这样说的:其实设计web缓存和企业级缓存是非常不同的,企业级缓存偏重于逻辑,而web缓存,简单快速为好。。缓存带来的问题是什么?是程序╳的复杂度上升,因为数据散布在多个进程,所以同步就是一个麻烦的问题,加上集群,复杂度会进一步提高,在实际运用中,采用怎样的同步策略常常需要和业务绑定老钱为搜狐设计的帖∏子设计了链表缓存,这样既可以满足灵活插入的需要,又能够快速阅读,而其他一些大型社区也经常采用类此的结构来优化帖子列表,memcache也是一个常常用到的工具钱宏武谈架构设计视频http://211.100.26.82/CSDN_Live/140/qhw.flvCache的常用的策略是:让数据在内存中,而不是在比较耗时的磁盘上。从这个角度讲,mysql提供的heap引擎(存储方式)也是一个值得思考的方法,这种存储方法可以把数据存储在内存中,并且保留sql强大的查询能力,是不是一举两得呢?我∞们这里只说到了读缓存,其实还有一种写缓存,在以内容为主的社区里比较少用到,因为这样的社区最主要需要解决的问题是读问』题,但是在处理能力低于请求能力时,或者单个希望请求先被缓存形成块,然后批量处理时,写缓存就出现了,在交互性很强的社区设计里我们很容易找到这样的缓存
                四,核心模块一定要自己开发:DIYyourcoremodule
                这点我们是深有体会,钱宏武和云风也都有谈到,我们经常倾向于使用一些开源模块,如果不涉及核心模块,确实是可以的,如果涉及,那么就要小心了,因为当访问量达到一定的程度,这些模块往往都有这样那样的问题,当然我们可以把问题归结为对开源的模ζ 块不熟悉,但是不管怎样,核心出现问题的时候,不能完全◇掌握其代码是非常可怕的