码迷,mamicode.com
首页 > Web开发 > 详细

浅谈网站架构演变

时间:2019-03-07 00:53:09      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:用户   行数据   架构   搭建   vpc   apache   分享   分布式数据库   安全性   

浅谈网站架构

 

 

 

作为一个从事后台开发已经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

 

分布式服务架构

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

技术图片

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

 

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

 

 

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

 

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

 

技术图片

 

浅谈网站架构演变

标签:用户   行数据   架构   搭建   vpc   apache   分享   分布式数据库   安全性   

原文地址:https://www.cnblogs.com/fanyi0922/p/10486943.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!