一 模式?
分层?
应用、服务、数据。就是业务的水平切分。?
分割?
不同业务模块独立。业务的垂直切分。?
分布式?
应用,计算,存储?
集群?
缓存?
本地缓存、分布式缓存、反向代理、CDN(注意:不光可以做缓存,也有加速的功能)?
异步?
需要使用Q,改造业务来支撑。?
可以提高系统可用性,加快网站相应速度,消除并发访问高峰。?
冗余?
冷备、热备、灾备?
自动化?
自动部署,自动化测试,自动代码管理,自动安全检测,分布式配置管理,自动化监控,自动化失效转移,自动化失效恢复,自动化降级,自动化资源分配.....?
安全?
不安全,一切都白搭?
二 核心要素?
性能?
google的日PV是35亿,日均IP是3亿。QQ最大在线数1.4亿(2011),从2009到2013,0.5、9.36、52、191、350,“双十一”交易额狂涨.?
响应时间、并发数、吞吐量(TPS,QPS,HPS)、操作系统负载?
性能测试(最佳运行点)、负载测试(最大负载点)、压力测试(系统崩溃点)、稳定性测试?
前端优化、应用优化、存储优化?
可用性?
7×24,?
提供服务时间:99%,网站年度不可用时间小于88小时?
提供服务时间:99.9%,小于9小时?
提供服务时间:99.99%,小于53分钟?
提供服务时间:99.999%,小于5分钟?
应用:失效转移(负载均衡)、session共享?
服务:分级管理、超时设置、异步调用、服务降级、幂等性设计?
数据:CAP原理、一致性(强、用户、最终)、备份、失效转移?
软件保证:发布(飞行中的飞机更换引擎)、自动化测试、预发布验证、自动化发布(火车发布模型)、灰度发布
监控:用户行为日志、服务器日志、客户端行为日志、性能日志、报警、失效转移、自动降级?
伸缩性?
定义:?
指系统能够通过增加(减少)自身资源规模的方式增强(减少)自己计算处理事务的能力。如果这种增减是成比例的,就被称作现性伸缩性。在网站架构中,通常指利用集群的方式增加服务器数量、提高系统的整体事务吞吐能力。?
架构:不同功能进行物理分离、单一功能通过集群规模?
应用:?
负载均衡1)HTTP重定向负载均衡;2)DNS域名解析负载均衡;3)反向代理负载均衡;4)IP负载均衡;5)数据链路层负载均衡;?
负载均衡算法:轮询(Round Robin)、加权轮询、随机、最少连接、源地址散列(IP_HASH)?
缓存:一致性HASH + 虚拟节点?
关系数据库:proxy、读写分离?
NOSQL数据库:HBase?
扩展性?
定义:?
指对现有系统影响最小的情况下,系统功能可持续扩展或提升能力。表现在系统基础设施稳定不需要经常变更,应用之间较少耦合,对需求变更可以敏捷响应。它是架构设计层面的开闭原则。架构设计考虑未来功能扩展,当系统增加新功能时,不需要对现有系统的结构和代码进行修改。?
分布式消息队列?
分布式服务?
可扩展的数据结构:NoSQL?
开放平台?
安全
原文:http://bobohenda.iteye.com/blog/2247233