软件架构:有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。?
一特点?
高并发、大流量?
google的日PV是35亿,日均IP是3亿。QQ最大在线数1.4亿(2011),淘宝双11一天交易额191亿(2012)?
高可用?
7×24,?
99%,网站年度不可用时间小于88小时?
99.9%,小于9小时?
99.99%,小于53分钟?
99.999%,小于5分钟?
海量数据?
facebook 1350亿条/月?
用户分布广泛、网络情况复杂?
不同的网络运营商,GFW防火墙?
安全环境恶劣?
需求快速变更,发布频繁?
渐进式发展?
所有大型网站,都不是一天弄出来的。都是从小型网站演化、进化而来。12306虽然那么牛逼,也是弄了两三年不是??
二大型网站架构演化?
初始阶段?
WEB应用和数据库部署在同一台服务器上?
应用服务器和数据服务分离?
WEB应用服务器和数据库系统部署在2台服务器上?
使用缓存?
有独立的缓存服务器?
应用服务器集群?
开发无状态应用,部署多个应用服务器?
数据库读写分离?
数据库系统成为瓶颈,使用读写分离,提高数据库系统的并发处理能力?
反向代理和CDN?
缓存静态文件,减少应用服务器的压力?
分布式文件系统和分布式数据库?
进一步提高文件服务器的容量和处理能力,数据库的规模进一步扩大。?
NOSQL和搜索引擎?
使用hbase,mongoDB等NoSQL技术,使用搜索引擎提高处理能力。?
业务拆分?
分库、分表、分区。?
将不同业务模块进行独立,拆分业务。?
分布式服务?
将业务开发成服务,即:SOA架构。
原文:http://bobohenda.iteye.com/blog/2247232