大型网站技术架构(二)模式和核心

一 模式
分层
应用、服务、数据。就是业务的水平切分。

分割
不同业务模块独立。业务的垂直切分。

分布式
应用,计算,存储

集群

缓存
本地缓存、分布式缓存、反向代理、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
开放平台

安全

猜你喜欢

转载自phl.iteye.com/blog/2080599