软件架构的演进过程

一.主流的互联网技术特点

分布式 、高并发、集群、负载均衡、高可用。

分布式:一件事情拆开来做。

集群:一件事情大家一起做。

负载均衡:将请求平均分配到不同的服务器中,达到均衡的目的。

高并发:同一时刻,处理同一件事情的处理能力(解决方案:分布式、集群、负载均衡)

高可用:系统都是可用的。

二.架构演变的过程

软件架构的发展经历了由单体架构、垂直架构、分布式架构到流动计算架构的演进过程,如下图:
软件架构的演进过程_第1张图片

1.单体应用架构

当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。

  • 架构优点:
    架构简单,前期开发成本低、开发周期短,适合小型项目(OA、CRM、ERP)。
  • 架构缺点:
    全部功能集成在一个工程中
    (1)业务代码耦合度高,不易维护。
    (2)维护成本高,不易拓展
    (3)并发量大,不易解决
    (4)技术栈受限,只能使用一种语言开发。

2. 垂直应用架构

当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。

  • 架构优点:
    (1)业务代码相对解耦
    (2)维护成本相对易于拓展(修改一个功能,可以直接修改一个项目,单独部署)
    (3)并发量大相对易于解决(搭建集群)
    (4)技术栈可扩展(不同的系统可以用不同的编程语言编写)。
  • 架构缺点:
    功能集中在一个项目中,不利于开发、扩展、维护。
    代码之间存在数据、方法的冗余

3.分布式服务架构

当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。

  • 架构优点:
    (1)业务代码完全解耦,并可实现通用
    (2)维护成本易于拓展(修改一个功能,可以直接修改一个项目,单独部署)
    (3)并发量大易于解决(搭建集群)
    (4)技术栈完全扩展(不同的系统可以用不同的编程语言编写)。
  • 架构缺点:
    缺少统一管理资源调度的框架

4.流动计算架构

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

资源调度和治理中心的框架:dubbo、spring cloudy
  • 架构优点:
    (1)业务代码完全解耦,并可实现通用
    (2)维护成本易于拓展(修改一个功能,可以直接修改一个项目,单独部署)
    (3)并发量大易于解决(搭建集群)
    (4)技术栈完全扩展(不同的系统可以用不同的编程语言编写)。

三.图解说明

1.单体应用架构-也称为集中式架构。

软件架构的演进过程_第2张图片

2.分布式架构

软件架构的演进过程_第3张图片

3.SOA架构

垂直架构 演变 分布式架构
软件架构的演进过程_第4张图片软件架构的演进过程_第5张图片

4.SOA架构:

面向服务的架构(SOA)是一个组件模型,全称为:Service-Oriented Architecture,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。

接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互.

可以使用dubbo作为调度的工具(RPC协议)

5.微服务架构

将系统服务层完全独立出来,抽取为一个一个的微服务。

抽取的粒度更细,遵循单一原则,数据可以在服务之间完成数据传输(一般使用restful请求调用资源)。

采用轻量级框架协议传输。(可以使用springcloudy)(http协议)

每个服务都使用不同的数据库,完全独立和解耦。

6.演变过程:

从单体应用架构(集中式架构)–>分布式架构–>SOA架构

现在还在继续演变,服务之间也可以完成调用

即:微服务架构(服务之间也可以调用)。

特点1:使用restful的http请求完成服务调用

特点2:每个服务都使用不同的数据库,完全独立和解耦

你可能感兴趣的:(JavaEE)