大型网站架构 - 1.架构的演变过程

1. 第一阶段:单服务器架构

这一阶段是我们的起步阶段,比如我们创业的时候刚购买了一台云主机。

在这一阶段,为了节约成本,我们将所有的应用程序,数据库,文件全部放在这台服务器上。

然后,CPU或者内存的成本在开发阶段也使用最小能接受的成本,然后开始我们的服务器开发之路。

 

2. 第二阶段:应用服务和数据服务分离

随着网站的第一次上线,我们的网站如果运营得不错的话,在这之后应该会逐渐积累人气,业务

也会随着人气的发展而进一步发展。

这个时候,1台服务器显然不能满足需求了,越来越多的用户访问导致性能变差,与此同时,数据也逐渐

变多,我们考虑增加硬盘。

这个时候,首先想到的就是:将应用和数据分离


于是,网站架构变成3台服务器:应用服务器(Web Server), 文件服务器(Resource Server), 数据库服务器(Database Server)

对于3台服务器的配置要求不太一样:

Web Server: 需要处理大量的业务,需要更快的CPU

Database Server: 需要快速检索数据和存放更多的数据,需要更大更快的硬盘,硬盘最好也是固态硬盘为主。

Resource Server: 需要存放用户上传的文件,如照片,视频等等,需要更大的硬盘,硬盘大一点,但是普通硬盘即可。

 

3. 第三阶段:使用缓存改善网站性能

网站业务遵循二八原则,80%的业务集中在20%的数据上。

因此,如果把这一小部分数据缓存起来,就可以i暗哨数据库访问的压力。

在初始阶段可以使用一些本地服务器的内存缓存,随着业务的扩展,

可以增加远程分布式的缓存服务器,应用一些成熟的框架,如: Redis

 

4. 第四阶段:应用服务器集群增加并发处理能力

集群已经显然成为现代网站处理高并发,海量数据的常规手段。

当1台服务器性能不足时,我们首先考虑的不应当是更换强大的服务器,而是应该增加服务器。

这个时候,我们的架构中应该引入负载均衡调度服务器,然后请求经过负载均衡服务器,分发到位于集群上的各个

应用服务器。

 

5. 第五阶段:数据库读写分离

缓存并不能解决所有的数据库问题,仍有很大一部分数据由于某些原因(缓存不命中,缓存过期)需要访问数据库。

通过设置数据库的主从备份结构,可以将主数据库的数据同步更新到另外的数据库上。

从而架构改为,将数据写入主数据库,而从数据库负责读取数据。

 

6. 第六阶段:使用反向代理和CDN加速网站响应

CDN和反向代理的基本原理都是缓存。

区别:

CDN部署在网络提供商的机房,用户可以从距离自己最近的网络提供商机房获取数据。

反向代理部署在网站的中心机房。

 

7. 第七阶段:使用分布式文件系统和分布式数据库

数据库需要进行拆分,拆分一般根据业务进行拆分,

将不同的数据库部署在不同的物理服务器上。

再进一步,我们可以引入NoSql和搜索引擎。

 

posted @ 2016-11-12 17:47  Master HaKu  阅读(360)  评论(0编辑  收藏  举报