大型网站的特点
- 以用户为中心,用户多,分布广泛
- 流量大,并发高,数据量大
- 安全环境恶劣,容易受到网络攻击
- 需求多,频繁发布
- 系统从小到大,渐进发展
大型网站的架构目标
- 高性能:提供快速访问体验(响应时间短,兵法处理能力强,吞吐量高)
- 高可用:网站服务一直可以正常访问(负载均衡,冗余备份)
- 可伸缩:可通过增加或减少服务器来提高或降低处理能力
- 扩展性:方便的通过新增/移除方式,增加/减少新的功能/模块
- 安全性:提供网站安全访问和数据加密,安全存储等策略
大型网站的架构演变历程
1.所有的应用服务器,数据库和文件都在同一台服务器上。
.在网站刚刚开始的时候,并没有很多的访问量,所以只需要一台服务器就足够了,这时候的网站架构如下图所示:
2.进行数据和应用的分离
随着网站的业务发展,增加的访问导致性能降低,增加的数据导致存储空间不足,这时候就需要进行数据和应用的分离:
分离后的服务器:
- 应用服务器:需要处理大量的业务逻辑,所以需要更强大的CPU;
- 文件服务器:要存储更多的静态文件,所以需要更大的硬盘;
- 数据库服务器:需要快速磁盘检索和数据缓存,所以需要更快的硬盘和更大的内存;
应用和数据的分离,提高了网站的并发处理能力和数据存储空间,使网站的性能得以改善。
3.使用缓存改善网站性能
网站的数据访问满足二八定律,即80%的业务访问集中在20%的数据上,例如微博热搜,因此最好的办法就是将这一部分数据进行缓存,降低数据库的访问压力。
而缓存又分为两种: - 缓存在应用服务器上的本地缓存:访问速度更快,但因为内存限制,存储量有限;
- 缓存在分布式缓存服务器上的远程缓存:可以使用集群的方式,部署大内存的服务器作为专门的缓存服务器;
4.使用服务器集群改善网站的并发处理能力
在网站访问并发很高的时候,应用服务器就成为了整个网站的瓶颈,
那么缺什么就补什么,多来点应用服务器就好了。
但是,这么多应用服务器,工作该怎么分配呢?这就要用到负载均衡调度服务器了,在访问到达应用服务器之前,使用负载均衡调度服务器将访问平均的发送至各应用服务器,这样大家干的活一样多就不会抱怨了。
5.数据库读写分离
随着用户的增多,仍有一部分读操作(访问没命中,缓存过期等)和全部的写操作要通过数据库来完成,此时数据库因为压力过大成为了网站瓶颈,这时就要采取数据库的读写分离
6.使用反向代理和CDN加速网站响应
随着网站业务不断发展,用户规模越来越大,由于不同地区网络情况各不相同,用户访问网络时,速度差别极大,网站访问越慢,用户越容易失去耐心而离开。为了提供更好的用户体验,留住用户,网站需要加速网站访问速度。主要手段有使用CDN和反向代理。
CDN部署在网络提供商的机房里,网站要向网络提供上交费。
而反向代理部署在网站的中心机房,当用户请求到达中心机房后,首先访问的服务器是反向代理服务器,如果反向代理服务器中有缓存着用户所请求的数据,就将数据直接返回。
使用CDN和反向代理的目的都是尽早返回数据给用户,一方面加快用户访问速度,另一方面也减轻后端服务器的负载压力。
7使用分布式文件系统和分布式数据库系统
当网站用户持续增站,业务变得更多,读写分离后的数据库也不能满足需求了,这是需要采用使用分布式文件系统和分布式数据库系统:
8.使用搜索引擎和NOSQL
随着网站业务越来越复杂,对数据存储和检索的需求也越来越复杂,网站需要采用一些非关系数据库技术,如NoSQL和非数据库查询技术,如搜索引擎。
9.业务拆分
大型网站为了应对日益复杂的业务场景,就对整个网站的业务进行了不同产品线的拆分,如大型购物交易网站就会将首页、商铺、订单、卖家、买家等拆分成不同的产品线,分归不同的业务团队负责。
具体到技术上,也会根据产品线划分,将一个网站拆分成许多不同的应用,每个应用独立部署维护。应用之间可以通过一个超链接建立联系,也可以通过消息队列进行数据分发,当然最多的还是通过访问同一数据存储系统来构成一个关联的完整系统。
10.分布式服务
随着业务拆分越来越小,存储系统越来越庞大,应用系统的整体复杂度呈指数级增加,部署维护越来越困难。可以将这些共用的业务提取出来,独立部署。由这些可复用的业务连接数据库,提供共用业务服务,而应用系统只需要管理用户界面,通过分布式服务调用共用业务服务完成具体业务操作。
来源:CSDN
作者:monster_hahaha
链接:https://blog.csdn.net/qq_42806574/article/details/104387787