《大型网站技术架构》--第一章随笔
1.高并发、大流量;
2.高可用;
3.海量数据;
4.用户分布广泛;
5.安全环境恶劣;
6.需求快速变更,发布版本快速;
7.渐进式发展,架构随着业务不停优化深入;
二. 大型互联网站架构演化发展历程:
1. 应用程序(PHP开发部署在Apache上)、数据库(MySQL)、文件都放在一台应用服务器(Linux操作系统)上,即LAMP;
2. 应用服务和数据服务分离----把应用、数据分离
随着业务的发展,一台服务器逐渐不能满足要求:越来越多的用户访问导致性能越来越差,越来越多的数据导致存储空间不足。这时就需要把应用和数据分离,分离后网站使用三台服务器:应用服务器、文件服务器、数据库服务器。应用服务器需要强大的CPU处理逻辑运算,数据库服务器需要更加的硬盘空间和内存,文件服务器需要更大的硬盘空间。
3. 使用缓存改善性能----改善访问数据库频次
这个不多说了,扛住一些经常访问数据的高并发流量冲击减轻访问数据库压力。
缓存分为:本地缓存(应用服务器缓存)和远程缓存(分布式缓存服务器上的缓存)。
本地缓存:速度更快,但是缓存大小有限,而且会和应用程序争用内存。
远程缓存:即分布式缓存,理论上可以做到无限扩容。
4.使用应用服务器集群改善网站的并发处理能力----改善服务器处理性能
通过集群增加网站处理请求的能力,并提高网站的高可用性。通过F5向应用服务器集群分发用户请求,通过水平扩容使应用服务器的负载压力不在成为网站瓶颈
5. 数据库读写分离----改善数据库处理性能
数据库分成主从库,主库负责写入数据及向从库同步数据,从库负责读取数据(没有命中缓存)。
6. 反向代理和CDN加速----本质上仍然是缓存,用来减轻后端服务器的负载压力。
CDN:部署在运营商的机房,用户在请求数据时,先到离自己最近的网络提供商机房获取数据;
反向代理:部署在网站中心机房,当用户请求到达中心机房后,首先访问反向代理服务器,如果反向代理服务器上缓存着用户的请求资源,直接返回给用户;
7. 使用分布式文件和数据库系统----提升文件和数据库可用性
8. 使用NOSQL和搜索引擎----提高搜索效率,解决一些关系型数据库先天性的效率问题
9. 业务拆分----垂直拆分
10. 分布式服务