基本成型的大型网站架构:
使用分布式服务器(多个应用服务器,使用一个负载均衡调度服务器进行调度),使用分布式缓存服务器,分布式文件服务器,数据库使用读写分离,写入主数据库,读取从数据库,主从数据库之间会进行数据复制:
(本文的图片是从其他地方偷来的,不是很清晰,但基本能看。)
用户量多了之后,不同地区用户访问网站时,速度差异较大。故使用反向代理和CDN加速网站响应(二者基本原理都是缓存,区别在于CDN部署在提供商机房):
当用户量更大,读写更多时,数据库就会出现瓶颈,需要使用分布式数据库服务器(单表数据量异常庞大时使用,常见的数据库拆分手段是业务分库):
下一步,使用NoSQL和搜索引擎:
下一步,业务拆分(如大型购物网站会将首页、商铺、订单、卖家、买家等拆分到不同的产品线,分归不同的业务团队负责):
最后,把一些各个业务拆分模块中的公共部分(如用户管理、商品管理)提取出来单独部署:
网站技术是为了业务而存在的,不能一味追求时髦的技术,因为可能将网站技术发展引入崎岖小道。
有时候,出问题的可能不一定是技术架构,有可能是业务架构,比如12306在 2012年年初的故障事件。
本文是李智慧的《大型网站技术架构》的笔记。