大型网站架构演化
1. 大型网站软件系统的特点:
1). 高并发,大流量
2). 高可用:7*24
3). 海量数据
4). 用户分布广泛,网络情况复杂
5). 安全环境恶劣
6). 需求快速变更,发布频繁
7). 渐进式发展
2. 大型完整架构演化发展历程
1). 初始阶段的网站架构
2). 应用服务和数据服务分离:
a. 应用服务器需要处理大量的业务逻辑,因此需要更快更强大的CPU
b. 数据库服务器需要更快速磁盘检索和数据缓存,因此需要更快的磁盘和更大的内存
c. 文件服务器需要存储大量的用户上传的文件,因此需要更大硬盘
3). 使用缓存改善网站性能:二八定律,本地缓存与远程分布式缓存
4). 使用应用服务器集群改善网站的并发处理能力
5). 数据库读写分离
6). 使用反向代理和CDN加速网站相应
7). 使用分布式文件系统和分布式数据库系统
8). 使用NoSQL和搜索引擎
9). 业务拆分
10). 分布式服务
3. 大型网站架构演化的价值观
1). 大型网站架构技术的核心价值是随网站所需灵活应对
2). 驱动大型网站技术发展的主要力量是网站的业务发展
4. 网站架构设计的误区:
1). 一味追随大公司的解决方案
2). 为了技术而技术
3). 企图用技术解决所有问题:技术是用来解决业务问题的,而业务问题,也可以通过业务的手段去解决。
大型网站架构模式
1. 网站架构模式:
1). 分层 : 各层可以部署在独立的服务器上
2). 分割
3). 分布式 : 分布式应用和服务,分布式静态资源,分布式数据和存储,分布式计算
4). 集群 :多台服务器部署相同的应用构成一个集群
5). 缓存:CND,反向代理,分布式缓存
6). 异步:提高系统可用性,加快网站相应速度,消除并发访问高峰
7). 冗余:冷备份,热备份,灾备数据中心
8). 自动化:发布过程自动化,自动化代码管理,自动化测试,自动化安全检测,自动化部署,自动化监控,自动化报警,自动化失效转移,自动化失效恢复,自动化降级,自动化分配资源
9). 安全
大型网站核心架构要素
1. 性能
2. 可用性
3. 伸缩性
4. 扩展性
5. 安全性
瞬时响应:网站的高性能架构
1. 网站性能测试:
1). 不同视角下的网站性能
a. 用户视角的网站性能:用户计算机,网站服务器通信时间,网站服务器处理时间,用户浏览器解析时间等。
b. 开发人员视角的网站性能:
c. 运维人员视角的网站性能:优化主干网,利用虚拟化技术优化资源利用等
2). 性能测试指标
a. 响应时间
b. 并发数:系统同时处理请求的数目
c. 吞吐量:单位时间内系统处理的请求数量
d. 性能技术器
3). 性能测试方法:
a. 性能测试
b. 负载测试
c. 压力测试
d. 稳定性测试
网站日常运行区间,系统的最大负载点,系统的崩溃点
4). 性能测试报告
5). 性能优化策略
a. 性能分析
b. 性能优化
2. Web前端性能优化
1). 浏览器访问优化:
a. 减少http请求
b. 使用浏览器缓存
c. 启用压缩
d. CSS放在页面最上面、JavaScript放在页面最下面
e. 减少Cookie传输
2). CDN加速
3). 反向代理
3. 应用服务器性能优化:
1). 分布式缓存
a. 缓存的基本原理:缓存指将数据存储在相对较高访问速度的存储介质中,以供系统处理。
b. 合理使用缓存:频繁修改的数据(不适合),没有热点的访问(不适合),数据不一致与脏读(注意),缓存可用性(缓存崩溃后,数据库直面访问能否承受),缓存预热(提前将缓存数据加载出来),
缓存穿透(一个简单的对应策略是敬爱给你不存在的数据也缓存起来(其值为null))
c. 分布式缓存机构
d. memcached : 简单的通信协议,丰富的客户单程序,高性能的网络通信,高效的内存管理,互不通信的服务器集群架构
2). 异步操作
3). 使用集群
4). 代码优化:
a. 多线程:将对象设计成无状态对象,使用局部变量,并发访问资源时使用锁
b. 资源复用:主要有两种模式:单例和对象池
c. 数据结构:hash等
d. 垃圾回收
4. 存储性能优化:
1). 机械硬盘 VS 固态硬盘
2). B+树 VS LSM树
3). RAID VS HDFS
原文:http://www.cnblogs.com/Jtianlin/p/5123018.html