第一章:
- 大型网络软件系统特点:高并发,大流量;高可用;海量数据,用户分布广泛,网络情况复杂;安全环境恶劣;需求快速变更,发布频繁;渐进式发展
- 网站架构演化历程:
- 应用程序,数据库,文件等所有资源在同一台服务器上常见:LAMP,LNMP(liunx,apache/nginx,mysql,php)瓶颈点:用户增多,存储空间不足
- 一分三:应用服务器(高cpu),文件服务器(大硬盘),和数据库服务器(大内存和快硬盘)。瓶颈点:用户使用频率增加,数据库压力过大。
- 使用缓存:应用服务器上的本地缓存和专门的分布式缓存服务器上的远程缓存。瓶颈点:高并发下应用服务器处理能力,和数据库负载压力过大
- 应用服务器方面,使用集群,通过负载均衡将用户请求分发到应用服务器集群中的一台服务上。
- 数据库负载过大方面,使用读写分离。应用服务器写操作,访问主库;读操作,访问从库。
6.不同地区用户访问网站时,速度差别极大。使用反向代理和CDN缓存,CDN 部署在网络提供商的机房,使用户可以从距离自己最近的网络提供商机房获取数据,当请求到达中心机房后,先访问反向代理服务器,若服务器中缓存请求资源,直接将其返回。此方案提高用户访问速度,减轻后端服务器压力。 - 使用分布式文件系统,和分布式数据库系统,业务分库,不同业务数据库部署在不同的物理机上。
- 使用NoSQL和搜索引擎。解决复杂的业务对数据存储和检索的复杂需求。
- 面对复杂的业务场景,使用分而治之的手段,将业务拆分为不同应用,每个应用独立部署维护
- 在数万台服务器规模的网站中,对数据库连接规模增大,导致数据库连接资源不足。将业务中需要相同操作的业务提权出来,独立部署。其他服务调用共用服务完成具体业务操作。
- 网站架构设计误区:一味追随大公司的解决方案,为了技术而技术,企图用技术解决所有问题