Web应用架构的演进

2019/12/16 Web架构

随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。

image

单一应用架构

当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。

此时,用于简化增删改查工作量的数据访问框架(ORM)是关键

单一应用架构

特点:

  1. 所有的功能集成在一个项目工程中。
  2. 所有的功能打在一个war包部署到服务器。
  3. 通过部署应用集群和数据库集群来提高系统的性能。

优点:

  1. 项目架构简单,前期开发成本低,周期短,小型项目的首选。
  2. 开发效率高,模块之间交互采用本地方法调用。
  3. 容易部署,运维成本小,直接打包为一个完整的包,拷贝到web容器的某个目录下即可运行。
  4. 容易测试:IDE都是为开发单个应用设计的、容易测试——在本地就可以启动完整的系统。

缺点:

  1. 全部功能集成在一个工程中,对于大型项目不易开发、扩展及维护。
  2. 版本迭代速度逐渐变慢,修改一个地方就要将整个应用全部编译、部署、启动,开发及测试周期过长。
  3. 通过集群的方式来实现水平扩展,无法针对某业务按需伸缩。

垂直应用架构

当访问量逐渐增大,单一应用增加机器(集群)带来的加速度越来越小,提升效率的方法之一是将应用拆成互不相干的几个应用,以提升效率。

此时,用于加速前端页面开发的Web框架(MVC)是关键。

垂直应用架构

特点:

  1. 按业务垂直拆分成一个一个的单体系统。
  2. 系统与系统之间的存在数据冗余,耦合性较大。
  3. 系统之间的接口多为实现数据同步,如上图中四个项目要同步客户信息。

优点:

  1. 通过垂直拆分,每个子系统变成小型系统,功能简单,前期开发成本低,周期短。
  2. 每个子系统可按需伸缩。
  3. 每个子系统可采用不同的技术。

缺点:

  1. 业务逻辑与页面无法分离,公共资源无法复用。
  2. 子系统之间存在数据冗余、功能冗余,耦合性高。

分布式服务架构

当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。

此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。

分布式服务架构

特点:

  1. 将核心业务抽取出来,作为独立的服务。
  2. 服务之间采用webservice、rpc等方式进行通信。

优点:

  1. 将核心业务抽取为服务,提高开发效率,提高系统的可重用性、可维护性。
  2. 可以针对不同服务的特点按需伸缩。

缺点:

  1. 系统与服务的界限模糊,会导致抽取的服务的粒度过大,系统与服务之间耦合性高。
  2. 虽然使用了服务中心,但是服务的接口协议不固定,种类繁多,不利于系统维护。

流动计算架构

当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。

此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。

SOA( Service-Oriented Architecture )是一种面向服务的架构,它基于分布式架构将不同业务功能(服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。

计算架构

特点:

  1. 基于SOA的架构思想,将重复共用的功能抽取为组件,以服务的方式向各个系统提供服务。
  2. 将服务注册到调度中心,由调度中心对资源进行统一管理。

优点:

  1. 系统之间的服务采用松耦合的方式更易维护。
  2. 将应用程序服务的可重用性最大化 。
  3. 服务提供者可以彼此独立地进行调整,更好的伸缩性。

缺点:

  1. 开发的复杂性增加,因为一个业务流程需要多个服务通过网络交互来完成。
  2. 服务过多,服务治理成本高。

Search

    Table of Contents