浅谈网站架构演变

浅谈网站架构程序员

 

 

 

做为一个从过后台开发已经2年的程序员来说,大部分时间都忙于业务逻辑分析,每每忽略了业务之上的架构层面的设计。数据库

本文做为网站架构知识的补充,不只开拓了眼界,也对之后的程序设计益处多多。下面咱们就一块儿来看看网站架构的演变历史。缓存

 

网站架构的演变大体分为以下几个阶段:安全

 

1服务器

 

初始阶段的网站架构网络

网站在最初开始时没有太多人访问,用一台服务器就彻底能够胜任,此时的网站架构以下图所示。架构

应用程序,文件存储,数据库全部的资源都在一台服务器上。也就是经典的LAMP架构模型(Linux操做系统+部署在Apache上+MySql存储+PHP开发)。负载均衡

 

2分布式

 

应用服务和数据服务分离性能

网站有了愈来愈多的用户,不断增加的访问量致使网站性能愈来愈差,数据库存储空间也愈来愈不足,此时由初始架构演变为应用程序与数据服务分离的架构,以下图所示。

各个服务器对硬件的资源要求各不相同:

  1. 应用服务器因为处理大量业务逻辑,所以须要更强大的CPU;

  2. 数据库服务器须要快速磁盘检索和数据缓存,所以须要更快的硬盘和更大的内存;

  3. 文件服务器须要存储大量的文件,所以须要更大的硬盘。

 

3

 

缓存改善网站性能

网站访问也遵循二八定律:80% 的业务访问集中在 20% 的数据上。

既然大部分的业务访问集中在一小部分数据上,那么把这一小部分数据缓存在内存中,天然能够提升网站性能,加入缓存后的网站架构以下图所示。

网站使用的缓存分为两种:

  1. 缓存在应用服务器上的本地缓存;

  2. 缓存在专门的分布式缓存服务器上的远程缓存。

那二者的区别有哪些呢?

本地缓存访问速度更快,可是受本地服务器内存限制,缓存数据有限。

远程分布式缓存通常使用集群的方式,部署大内存服务器做为专门的缓存服务器,能够理论上作到不受内存容量限制的缓存服务。

 

4

 

应用服务器集群

加入缓存后,数据访问压力缓解,可是单一服务器能够处理的请求有限,在访问高峰期,这会成为网站的瓶颈。

因此对于网站来讲,既然能够经过增长一台服务器的方式改善负载压力,那就能够以一样的方式持续增长服务器不断改善系统性能,从而实现系统的可伸缩性。应用服务器集群则应运而生。此时网站架构以下图所示。

经过负载均衡将请求分发到应用服务器集群,若是用户访问量持续增加,那么就在集群中加入更多的服务器,使服务器的负载压力再也不成为整个网站的瓶颈。

 

5

 

数据库的读写分离

随着网站用户不断增多,服务器搭建了集群便再也不是网站的瓶颈,数据库反而会由于负载太高而成为瓶颈。

因为大部分主流数据库都有主从热备的功能,经过配置两台数据库的主从关系,但是实现数据库之间的数据复制,从而实现数据库的读写分离,减轻数据库压力。

此时网站架构以下图所示。

   

读写分离:

应用服务器在写数据时,访问数据库,主数据库经过主从复制机制将数据更新到从数据库,当应用服务器读数据的时候就可用经过从数据库读取数据。

 

6

 

CDN和反向代理

CDN和反向代理本质也是缓存。加入CDN和反向代理会有效加速网站访问速度。此时网站架构以下图所示。

CDN通常部署在网络提供商的机房,使得用户在请求网站服务时,可从最近的网络提供商机房获取数据。

反向代理则部署在网站的中心机房,当用户请求到达中心机房后,先访问反向代理服务器,获取反向代理服务器中的缓存的资源,直接返回给用户。

 

7

 

分布式文件系统和分布式数据库

单一服务器都知足不了大型网站持续增加的需求,这时数据库要使用分布式数据库,文件系统使用分布式文件系统。此时网站架构以下图所示。

分布式数据库是网站数据库拆分的最后手段,只有在单表数据特别大时才使用。通常更经常使用的是业务分库,将不一样业务的数据库部署在不一样机器上。

 

8

 

使用NoSQL数据库和搜索引擎

随着网站运营愈来愈久,业务增加愈来愈大,数据的产生也就愈来愈大。此时对数据的检索和存储也就愈来愈复杂,那就须要采用非关系数据库技术-NoSQL数据库和数据库查询技术-搜索引擎。此时网站架构以下图所示。

 

9

 

业务拆分

大型网站业务日益复杂,会使用拆分的手段将整个网站分为不一样的产品线。在技术角度上讲,就是讲网站拆分红许多不一样的应用,每一个应用都要独立部署。此时网站架构以下图所示。

 

应用之间能够经过超连接创建关系,如在首页导航栏添加各个应用的连接地址。也能够经过消息队列进行数据分发,进行业务调用。

 

10

 

分布式服务架构

随着业务拆分愈来愈细,存储系统则愈来愈大,可能会出现不一样的应用系统须要执行许多相同的业务操做的状况。那将这些共用的业务提出出来,独立部署。经过分布式服务调用共用业务服务完成具体的业务操做。此时网站架构以下图所示。

大型网站架构演化到这一步,也就是时下流行的分布式架构。但架构发展并不会止步于此,目前许多大型网站都开始有本身的云计算平台,将计算做为一种资源出售。一些中小网站不须要再关心技术架构问题,将来的网站架构确定还会继续发展下去,会继续适应将来持续增加的业务需求。

 

网站架构概述大体分为以上几个阶段,后续咱们会针对网站架构优化方面再作分享,主要从网站的性能、可用性、伸缩性、扩展性、安全性这几个方面入手,继续讨论网站架构方面所遇到的问题,分享架构优化的知识。

 

 

参考资料:《大型网站技术架构》----李智慧 

 

关注一下,我写的就更来劲儿啦 

 

相关文章
相关标签/搜索