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


    单体架构

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

    优点:

    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以前的架构都是一个包一个模块,微服务则是,一个包多个模块,每个模块又是一个包

    示例图:

    优点:

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

    缺点:

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

  • 相关阅读:
    c# 添加指定扩展名的系统右键菜单(Windows11以前)
    k8s资源对象service-四层负载均衡详解
    Java--异常
    常用颜色的英文和十六进制
    Clion 初始化 QT
    若依ruoyi-nbcio如何做一个仿钉钉流程设计器的思考
    pytest学习和使用12-Unittest和Pytest参数化详解
    vue3 中使用 jsx 开发(语法差异)
    Vue3-provide 和 inject 跨组件传递数据
    第八章认识Express框架
  • 原文地址:https://blog.csdn.net/q66562636/article/details/126571342