初始阶段网站架构(一)

(译)

1、初始阶段

大型网站都是从小型网站发展而来,网站架构也是一样,从小型网站逐步演变而来的。小型网站没有多少人访问,只需一台服务器就绰绰有余,

这个是网站架构如图:

单一服务器中:应用程序、数据库、文件所有的资源都放在一台服务器上。

服务器操作系统一般用 Linux, 应用程序使用php, 部署在apache 上,数据库使用mysql,汇集各种免费开源软件及一台廉价的服务器上,开始网站发展之路。

2、应用服务和数据服务分离

随着业务发展,一台服务器不能满足需求越来越多的用户访问导致性能越差,数据存储空间不足,这时需要将应用和数据分离。应用与数据分离后整个网站使用3台服务器:

应用服务器、文件服务器、数据服务器。这三台服务器对硬件要求不同

应用服务器:需要处理大量的业务逻辑需要更强大的CPU;

数据服务器:需要快速检索磁盘和数据缓存,需要更快的硬盘和更大的内存空间;

文件服务器:需要存储大量用户上传文件,需要更大的硬盘;

应用和数据分离后,不同特性的服务器承担不同的角色,网站的并发和存储能力和数据存储空间得到很大的改善,支持网站业务进一步发展。

随着用户逐渐增多, 数据库压力导致数据访问延迟,影响访问性能,用户体验受到影响,这时还需要对网站进一步优化。

 3、使用缓存

缓存方式有两种:缓存在应用服务器上的本地缓存和缓存专门分布式缓存服务器上的远程缓存。

本地缓存访问速度比较更快些,收到内存限制缓存数据有限。远程分布式缓存可以使用集群方式,部署大内存服务器作为专门的缓存服务器。

使用后,数据访问压力得到有效缓存,但单一应用服务器能够处理请求连接数是有限的,在高峰期,应用服务器会成为瓶颈

4、使用应用服务器集群

   使用集群是网站解决高并发,海量数据的常用手段。当一台服务器处理能力有限,存储空间不足时,不要企图换更强大的服务器。在业务需求不断增长,这种情况下

增加一台服务器分担原有服务器的访问及存储压力。

 

通过负载均衡调度服务器,可将来自浏览器访问的请求发放到应用服务器集群中任意台服务上,

如果用户多,可以加更多的应用服务器,使应用服务器的负载压力不在是瓶颈。

5、数据库读写分离

 使用缓存后,大部分数据可以不需要通过数据库就能完成,但仍有些数据需要通过数据库读写来完成,当访问量有一定规模后,数据库负载压力过高会出现瓶颈。

主流的数据库都会提供主从备热功能,配置服务器主从关系,可以将一台服务器数据同步到另一台服务器上,实现数据读写分离。

应用服务器在写入数据的时候,访问主服务器,主服务器通过主从复制机制将数据更新同步到从服务器,当应用服务器读取数据时候,可以通过从服务区获得数据。

为了便于应用程序访问读写分离数据库,通常在应用服务端使用专门的数据访问模块,使读写分离应用透明。

主从数据分离示意图:

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

CDN和反向代理基本原理都是缓存,区别在于CDN部署在网络提供商机房,用户发送请求时,可以从最近的网络机房获取数据;而反向代理则部署在网站中心机房, 

当用户请求到达中心机房后,首先访问的服务器是反向代理服务器,如果反向代理服务器中缓存用户请求资源,直接将数据返回给用户。

目的加快访问及减轻服务器压力。

7、使用分布式文件及分布式数据库系统

随着大型网站业务需求增长。数据库读写分离后,从一台服务器拆成两台服务器,业务增长依然不能满足需求,这时需要使用分布数据库。文件也是一样,使用分布式文件系统。

分布式数据库拆分是最后手段,将不用的业务数据拆分布同服务器上。

8、使用NoSQL 和搜索引擎

NoSQL搜索引擎对可伸缩的分布式特性有很好的支持,应用服务器通过一个统一的应用服务器模块访问各种数据,减轻应用程序管理诸多数据源麻烦。

9、业务拆分

业务复杂场景,网站业务分成不同的产品线。

10、分布式服务

 既然每一个应用系统都需要执行许多相同的业务操作,比如用户管理、商品管理等,那么可以将这些公用的业务提取出来,独立部署。由这些可复用的业务连接数据库,提供共用业务服务,而应用系统只需要管理用户界面,通过分布式服务调用共用业务服务完成具体业务操作。

原文地址:https://www.cnblogs.com/congxueda/p/7269409.html