传统架构与分布式架构的设计

从今以后,咱们只有死别,不再生离。——《我们仨》

1、服务器配置方案

目前,在IT系统架构设计中,对于服务器的配置方案主要有两种。

(1) 分散式,即根据业务功能、模块设计或行政部门及机构的不同,采用相对分散的中小型服务器;

(2)集中式,即将所需的主机资源集中到少数的几台大型服务器中。

这两种方式,在投资成本、业务支撑及扩展能力、维护管理、方案拓展等方面,存在着比较显著的差异。

(1) 业务支撑及扩展能力

采用三层结构设计的系统中,数据库层和应用层一般支持横向和纵向两种扩展方式。其中,横向指通过增加服务器台数来扩展某一层次的处理能力,纵向指通过对单台主机的CPU、内存等配件扩充来提高某一层次的处理能力。

  • 分散式结构下,由于单台主机的处理能力比较有限,所以数据库层和应用层将主要依赖于横向扩充方式来支撑业务的扩展。横向扩充方式的实现,并不等同于简单地增加机器,有两个前提必须要满足。一是多台数据库服务器必须能够并行运行,这就要求使用并行版数据库软件。二是应用系统必须基于并行数据访问方式进行开发。

  • 集中式结构下,除了可以采用横向方式进行扩充外,由于单台主机具备较好的扩充能力,因此可以采用纵向方式进行处理能力的扩充。纵向扩充方式,仅涉及硬件配件的增加,数据库软件和应用软件不需调整,实现起来相对容易。

(2) 使用灵活性

分散式结构中,所有主机的功能单一,若需要变换功能,需要对系统进行较大调整。

集中模式下,各分区的功能可以根据需要进行调整,如果将来有业务扩充或者功能增加时,实现起来比较容易。相比而言,集中模式的灵活性更强。

2、架构设计

传统的B/S架构设计可抽象为以下简图:
传统架构与分布式架构的设计
在传统的B/S 架构的系统里,技术架构往往是一个工程项目,各个逻辑分层都是该工程的业务逻辑模块,但是有些网站,如电商系统或全国性服务平台,用户群庞大,网站并发量高,且需求变化大,以及网站处于对安全的考虑,以上的逻辑分层在技术架构上的实现也会复杂的多。

那么考虑采用分布式架构,将系统拆分成三个字项目:前端项目、服务端项目和缓存项目。
传统架构与分布式架构的设计
前端项目:页面、静态资源和控制层;
服务端项目包含业务层和数据库操作层;
memcache项目缓存前端项目和服务端项目公用的数据。

在系统部署上,前端项目和服务端项目都采用分布式方式,用户请求进入前先通过负载均衡设备进行请求分发,前端和服务端之间以及服务端和数据库之间有防火墙保证系统的安全性,前端的集群和服务端集群分属到不同网络环境里,前端集群可以访问外网,服务端集群和数据库所在网络不能直接访问外网,但是前端网络环境和服务端网络环境之间可以进行通信。

3、电商网站分布式架构实例

以B2C电商网站为例:

传统架构与分布式架构的设计

这种设计的缺点有以下几点:
1、 模块之间耦合度太高,其中一个升级其他都得升级
2、 开发困难,各个团队开发最后都要整合一起
3、 系统的扩展性差
4、不能灵活的进行分布式部署。

解决方法:

优点:
把模块拆分成独立的工程,单点运行。如果某一个点压力大可以对这一个点单独增加配置。其他的点不受影响。
缺点:
系统之间交互需要额外的工作量来进行接口的开发。

把系统拆分成多个工程,要完成系统的工程需要多个工程协作完成。这种形式叫做分布式。

考虑使用分布式架构:
传统架构与分布式架构的设计

分布式架构:
把系统按照模块拆分成多个子系统。

优点:
把模块拆分,使用接口通信,降低模块之间的耦合度。
把项目拆分成若干个子项目,不同的团队负责不同的子项目。
增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。
可以灵活的进行分布式部署。

缺点:
系统之间交互需要使用远程通信,接口开发增加工作量。

下一篇将介绍针对具体项目开发中,服务端、前端客户端之间的交互设计。