读大型网站技术架构---第一篇---第一章---架构演化过程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32924343/article/details/83055509

最近开始读此书,主要为了增加自己知识的广度,首要目的是即使自己没有参与过此类项目,但是也能知道在某些场景或者某些架构处理时应该往哪些方向思考。

大型网站系统特点

1.高并发,大流量

2.高可用

3.海量数据

4.用户分布广泛,网络情况复杂

5.安全环境恶劣

6.需求快速变更,发布频繁

7.渐进式发展(主要是由小到大)

大型网站架构演化发展历程

1.初始阶段

小网站,一台服务器绰绰有余,应用程序,数据库,文件等所有资源放在一台服务器上就行

2.应用服务器和数据服务分离

随着网站业务发展,一台服务器不能满足要求,需要将应用和数据分离,分离后使用三台服务器:应用服务器,文件服务器和数据库服务器。应用服务器需要处理大量的业务,需要强大的CPU;数据库服务器需要快速检索,需要强大的硬盘和内存;文件服务器需要存储文件,需要更大的硬盘。

3.使用缓存改善网站性能

这个阶段数据库压力太大导致访问延迟,影响整个网站的性能。此时使用缓存来减少数据库压力(可见网站结构过程中,缓存是优化的第一步)。使用的缓存分为两种:本地缓存(本地服务器内)和远程缓存(分布式缓存服务器)

4.使用应用服务器集群改善并发处理能力

使用缓存后数据库压力得到缓解,但是单一的应用服务器能够处理的请求连接有限,所以在高峰期,应用服务器成为瓶颈了。

因此就需要考虑集群了,集群是解决高并发,海量数据问题的常用手段。所以当一台服务器处理能力、存储空间不足时,不要企图去更换更强大的服务器。这种情况下,更恰当的做法就是增加一台服务器去分担原有服务器的访问或者存储压力。通过负载均衡调度服务器,将用户请求分发到应用服务器集群中的任何一台服务器上,解决应用服务器的压力。

5.数据库读写分离

网站使用缓存后,使绝大部分数据读操作访问都可以不通过数据库就能完成,但是仍然有一部分读操作(缓存穿透)和全部的写操作需要访问数据库。网站到达一定规模之后,数据库因为负载压力过高而成为瓶颈。

因此可以利用数据库的主从热备功能,配置两台数据库主从关系,实现读写分离。应用服务器在写数据时访问主库,主数据库通过主从复制机制将数据更新同步到从数据库,这样应用服务器读数据时,通过从库获取即可。

6.使用反向代理和CDN加速网站响应

随着网站业务不断发展,用户规模越来越大,由于中国复杂的网络环境,不同地区的用户访问网站时,速度差别也极大,因此可以利用CDN和反向代理

CDN:部署在网络提供商的机房,使得用户在请求网站服务时,可以从距离自己最近的网络提供商机房获取数据;

反向代理:部署在中心机房,用户请求到达中心机房,首先访问的是反向代理服务器,返回所需数据资源。

7.使用分布式文件系统和分布式数据库系统

数据库经过读写分离之后,最后还是不能满足需求,所以需要使用分布式数据库,文件系统也一样,使用分布式文件系统。

分布式数据库:网站数据库拆分的最后手段,常用的数据库拆分手段是业务分库,将不同业务的数据库部署在不同的物理服务器上。

8.使用NoSQL和搜索引擎

随着网站业务越来越复杂,对数据存储和检索的需求也越来越复杂。因此需要采用一些非关系数据库技术如NoSQL和非数据库查询技术如搜索引擎。

9.业务拆分

通过分而治之将整个网站业务拆分成不同产品线,如大型购物交易网站就可以分为首页,商铺,订单,买家,卖家等拆分成不同的产品线,分归不同的业务团队负责。

具体一点到技术点来说,将一个网站拆分成许多不同的应用,每个应用独立部署维护,通过超链接,通过消息队列进行数据分发。

10.分布式服务

通过手段9的的业务拆分之后,会发现业务约拆越小,存储系统越来越庞大,应用系统的复杂度呈指数级增长,由于所有的应用要和数据库系统连接,此处就会导致数据库资源不足,成为瓶颈。

那么既然每一个应用系统都需要执行许多相同的业务操作,比如用户管理,商品管理,就可以将这些共用业务提取出来,独立部署,对外提供业务服务即可。

到此,基本上就是一个网站的演变过程,总的来说,需要解决的几个地方,比如应用服务器的瓶颈,数据库处的瓶颈,业务细分整治等等一些问题。

猜你喜欢

转载自blog.csdn.net/qq_32924343/article/details/83055509