大型网站架构演化
对于大型网站的功能性需求也许还有“人月神话”聊以自慰,通过增加人手解决问题,而非功能需求大多是实实在在的技术难题,无论有多少工程师,做不到就是做不到。
大型网站架构概述
大型网站软件系统的特点
高并发,大流量
需要面向高并发用户,大流量访问。Google日均PV数35亿,日均IP访问3亿;腾讯QQ的最大在线用户数1.4亿(2011年数据);淘宝2012年“双十一”活动一天交易额超过191亿,活动开始第一分钟独立访问用户达1000万。
高可用
系统7x24小时不间断服务。大型互联网站的宕机事件通常会被当成新闻焦点,例如2010年百度域名被黑客劫持导致不能访问,成为重大热点
海量数据
需要存储、管理海量数据,需要使用大量服务器。Fackbook每周上传的照片数目近10亿,百度收录的网页数目有数百亿,Google有近百台服务器为全球用户提供服务
用户分布广泛,网络情况复杂
许多大型互联网都是为全球用户提供服务的,用户分布范围广,各地网络情况千差万别。在国内,还有各个运营商网络互通难的问题。而中美光缆的数次故障,也让一些对国内外用户依赖较大网站不得不考虑在海外建立数据中心。
安全环境恶劣
由于互联网的开放性,使得互联网网站更容易受到攻击,大型网站几乎每天都会被黑客攻击。2011年国内多个重要网站泄露用户密码,让普通用户也直面一次互联网安全问题
需求快速变更,发布频繁
和传统软件的版本发布频率不同,互联网产品为快速适应市场,满足用户需求,其产品发布频率是极高的。Office的产品版本以年为单位发布,而一般大型网站的产品每周都有新版本发布上线,至于中小型网站的发布就更频繁了,有时候一天发布几十次
渐进式发展
与传统软件产品或企业应用系统一开始就规划好全部的功能和非功能需求不同,几乎所有的大型互联网站都是从一个小网站开始,渐进地发展起来的。Facebook是扎克伯格同学在哈佛大学的宿舍里开发的;Google的第一台服务器部署在斯坦福大学的实验室里;阿里巴巴则是在马云家的客厅里诞生的。后的互联网产品都是慢慢运营出来的。不是一开始就开发好的,这也正好