大型网站软件系统的特点:
1.高并发、高流量
2.高可用
3,海量数据
4.用户分布广泛,网络情况复杂
5.安全环境恶劣
6.需求快速变更,发布频繁
7.渐进式发展
大型网站的技术挑战
1.庞大的用户量
2.高并发的访问量
3.海量的数据
网站架构演化过程
高访问导致性能越来越差,海量数据导致存储空间不足,解决办法:将应用和数据分离
网站访问特点和现实世界的财富分配一样遵循二八定律:80%的业务访问集中在20%的数据上,解决办法:将小部分数据缓存在内存中,以此来减少数据库的访问压力,提高整个网站的数据访问速度,改善数据库的写入性能
单一应用服务器能够处理的请求连接有限,在网站访问高峰期,应用服务器成为整个网站的瓶颈,解决办法:使用应用服务器集群改善网站的并发处理能力,持续增加服务器不断改善系统性能,实现系统的可伸缩性;通过负载均衡调度服务器进行请求分发
数据库读写分离
一部分读操作(未缓存或缓存过期)和全部的写操作需要访问数据库,用户到了一定规模,数据库因为负载压力过高成为网站瓶颈
数据库本身特性:主从热备,通过配置两台数据库主从关系,将数据同步更新至另一台服务器上,一般利用这个实现读写分离,改善数据库负载压力
为了便于应用程序访问读写分离后的数据库,通常在应用服务器端使用专门的数据访问模块,使数据库读写分离对应用透明
使用反向代理和CDN加速网站响应
网站业务扩大,用户规模越来越大,由于中国复杂的网络环境,不同地区的用户访问网站时,速度差别很大,网络访问延迟和用户流失率有关,为了提高用户体验,需要加快网站访问速度,解决办法:使用CDN和反向代理
基本原理都是缓存,目的是尽早返回数据给用户,一方面加快用户访问速度,另一方面也减轻后端服务器的负载压力
CDN:部署在网络提供商的机房,使用户在请求网站服务时,可以从距离自己最近的网络商机房获取数据
反向代理:部署在网站的中心机房,当用户请求到达中心机房后,首先访问的服务器是反向代理服务器,如果反向代理服务器中缓存着用户请求的资源,就直接将其直接返回给用户
使用分布式文件系统和分布式数据库系统
随着网站业务的发展,数据库读写分离也无法满足需求,需要使用分布式数据库;文件系统也一样,需要使用分布式文件系统;分布式数据库是网站数据库拆分的一级,只有在单表数据十分庞大的时候才使用,一般处理手段是业务分库,将不同业务的数据库部署在不同的物理服务器上
使用NoSQL和搜索引擎
随着网站业务越来越复杂,对数据存储和检索需求也越来越复杂,网站需要采用一些非关系数据库技术和非数据库查询技术,对可伸缩性的分布式特性具有更好的支持;应用服务器通过一个统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦
业务拆分
为了应对复杂的业务场景,会拆分多个产品线,分归不同的业务团队负责,技术也会拆分,独立部署维护,应用之间可以通过一个超链接建立关系,也可以通过消息队列进行数据分发,最多的是通过访问同一个数据存储系统来构成一个关联的完整系统
来源:https://www.cnblogs.com/icy88/p/11938426.html