后端服务架构的不同与区别

单体架构

所有的代码操作,都集成在一个服务里,并且只使用这个服务进行维护开发,只需要部署在一台服务器即可,也就是共同使用同一个WEB服务器运行。 图片示例:

后端服务架构的不同与区别_第1张图片

优点:

  1. 容易部署与维护
  2. 小型服务容易开发与上线

缺点:

  1. 耦合度极大,如果后期需要扩展,基本扩展不了。
  2. 一个地方出问题,其他地方一样受到牵连。

垂直架构

将单体架构中的每个模块分成多个模块运行在多个服务器,一个单体项目就是一个模块。例如:当前有两个模块分别是首页和评论,如果是单体架构,那么他们都是在同一个服务下。垂直架构就是把他们拆成两个,分别放置不同的单体服务下,运行在两个不同的web服务器上。

示例图;和单体架构的图基本一样,只是垂直变成了多个而已。

优点:

  1. 拆分后每个模块独立运行,扩展和优化都方便。
  2. 并发的能力得到提升。
  3. 出现故障后不影响其他服务

缺点:

  1. 某些业务代码会有重叠,增加了耦合度。
  2. 他们之间不能互相调用,除非开放接口通过HTTP调用
  3. 如果端口发生改变,后续每个服务也要修改端口号。

分布式架构

在垂直架构的基础上,使用了分层概念。例如:前台controller和后台service。

  1. 前台负责对外部的发送消息,接收消息,对后台发送消息和接收消息,前台就是一个中转站。
  2. 后台负责处理逻辑,在把逻辑传给前台。每个服务模块重复的代码也会统一封装,供别的服务调用。

示例图:分布式和垂直架构类似,比垂直架构多了公共模块的抽离,和分层概念。

优点:

  1. 把公共类抽离,去除每个服务上的冗余代码。
  2. 每个服务可以单独优化和扩展
  3. 分层让入口统一发送到一个模块,不需要每个模块都设置接口。
  4. 分层以后架构更多清晰,每个模块功能单一,扩展性更强

缺点:

  1. 耦合度集中在公共模块,分布式还是以传统的http进行交互。
  2. 调用类的关系变得复杂,维护成本变高。

SOA架构

在分布式的基础上,增加服务注册中心,相当于增加一个nacos,对比分布式,可以丢弃老的http发送机制,通过nacos统一调用和获取每个服务的资源。

示例图:和分布式的类似。

优点:

  1. 服务注册中心,可以解决每个服务自动发现,注册,调度问题。
  2. 就算某个服务的地址更改也不影响其他服务对他的请求。

缺点:

  1. 每个服务高度依赖注册中心,如果注册中心宕机,会引起每个服务调用资源失败。
  2. 调用链路变长,如果下游服务发送错误,会导致上游服务调用失败。

微服务架构

是SOA架构的一种扩展,微服务会创建一个大的管理服务,然后在这个服务下创建每个小型服务,每个服务对应一个模块,打包,部署等都是自己完成,不与其他模块耦合。 与以前不同的是,SOA以前的架构都是一个包一个模块,微服务则是,一个包多个模块,每个模块又是一个包

示例图:

后端服务架构的不同与区别_第2张图片

优点:

  1. 服务独立拆分,单独打包,部署,连接不同DB,方便升级。
  2. 服务之间可以通过注册中心,RPC,REST调用。
  3. 每个服务可单独放在不同电脑上,理论上可以无限扩展。

缺点:

  1. 数据一致性问题。
  2. 分布式事务问题。
  3. 各服务调用的时候,因网络可能会抖动,不清楚具体要设置多少时间等待调用。

你可能感兴趣的:(架构,java,数据库)