读书笔记(一)
大型网站架构演化
1,应用服务与数据服务分离
- 应用服务器需要强大CPU
- 数据库服务器需要更快的硬盘和更大的内存
- 文件服务器需要更大的硬盘
2,使用缓存,减轻数据库压力
- 缓存分应用服务器本地缓存和专门的远程缓存
- 本地缓存访问速度快,但是受应用内存大小的限制
- 远程分布式缓存可以使用集群的方式,理论上无限容量
3,使用应用服务器集群改善网站并发处理能力
- 通过负载均衡调度服务器将请求分发到应用服务器集群中的任何一台服务器
4,数据库读写分离
- 应用服务器使用专门的数据访问模块,使数据库读写分离对应用透明
- 利用数据库的主从热备功能,实现读写分离
5,使用反向代理和CDN加速网站响应
- CDN和反向代理的基本原理都是缓存
- CDN和反向代理的区别在于CDN部署在网络提供商的机房,使用户可以就近获取数据;反向代理服务器部署在网站的中心机房
- CDN和反向代理服务器缓存着用户请求的资源,将其直接返回给用户
- 反向代理服务器部署在负载均衡服务器之前(书上的图标识)
6,使用分布式文件系统和分布式数据库
- 单表数据规模非常庞大的时候才使用分布式数据库,分布式数据库是数据库拆分的最后手段
- 一般的数据库拆分是根据业务进行分库,将不同的业务部署在不同的物理服务器上
7,使用NoSQL和搜索引擎
- NoSQL对可伸缩性具有更好的支持
8,业务拆分
- 将业务进行拆分,每个业务单独部署
- 业务之间可以用远程调用或消息队列进行通信
9,分布式服务
- 业务拆分到最后会导致应用整体复杂度指数增加,数据库链接资源不足,因此需要分布式服务
- 分布式服务是将一些可以复用的业务独立出来,提供共用业务服务
别让生活压力挤走快乐~