互联网主流微服务架构模型对比分析(上)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 互联网主流微服务架构模型对比分析(上)

本文将对比分析DDD分层架构、整洁架构、六边形架构。

整洁架构

又名“洋葱架构”(看图就懂),体现了分层思想。

同心圆代表应用软件的不同部分,由内到外依次是

  • 领域模型
  • 领域服务
  • 应用服务
  • 容易变化的内容
    比如用户接口和基础设施。

该架构最主要原则:依赖原则,它定义了各层依赖关系,越往内依赖越低,代码级别越高,能力越核心。外圈代码依赖只能指向内圈,内圈无需知道外圈任何情况。

image.png

职能划分

  • 领域模型
    实现领域内核心业务逻辑,封装了企业级业务规则。领域模型的主体是实体(可以是一个带方法的对象,也可以是一个数据结构和方法集合)。
  • 领域服务
    实现涉及多个实体的复杂业务逻辑。
  • 应用服务

实现与用户操作相关的服务组合与编排,包含了应用特有的业务流程规则,封装和实现了系统所有用例。最外层

主要提供适配的能力,分为主动适配和被动适配。

  • 主动适配主要实现外部用户、网页、批处理和自动化测试等对内层业务逻辑访问适配
  • 被动适配主要是实现核心业务逻辑对基础资源访问的适配,如DB、缓存、文件系统和MQ等。

红圈内的领域模型、领域服务和应用服务一起组成软件核心业务能力。

六边形架构

又名“端口适配器架构”。

  • 核心理念
    应用通过端口与外部交互
  • 红圈内的核心业务逻辑(应用程序和领域模型)与外部资源(包括APP、Web应用以及数据库资源等)完全隔离,仅通过适配器交互。它解决了业务逻辑与用户界面的代码交错问题,很好实现前后端分离。六边形架构各层的依赖关系与整洁架构一样,都是由外向内依赖。
  • image.png

职能划分

系统分为内六边形和外六边形:

  • 红圈内六边形
    实现应用的核心业务逻辑
  • 外六边形

    完成外部应用、驱动和基础资源等的交互和访问,对前端应用以API主动适配方式提供服务,对基础资源以依赖反转被动适配的方式实现资源访问

该架构的一个端口可能对应多个外部系统,不同外部系统也可能使用不同适配器,由适配器负责协议转换。这就使得应用程序能够以一致的方式被用户形式使用。

现在,很多声称使用分层架构的团队实际上使用的是六边形架构。这是因为 很多项目都使用了某种形式的依赖注入。并不是说依赖注入天生就是六边形架 构,而是说使用依赖注入的架构自然地具有了端口与适配器风格。

架构模型对比分析

虽然DDD分层架构、整洁架构、六边形架构的架构模型表现形式不同,但设计思想正是微服务架构高内聚低耦合原则的完美体现,而它们身上闪耀的正是以领域模型为中心的设计思想。

image.png

红色实线边框用于将核心业务逻辑与外部应用、基础资源进行隔离。


红框内部主要实现核心业务逻辑,但核心业务逻辑也有差异,有属于领域模型,有属于面向用户的用例和流程编排能力。按这种功能差异,在这三种架构划分了应用层和领域层,承担不同业务逻辑。


领域层实现面向领域模型,实现领域模型的核心业务逻辑,属原子模型,需保持领域模型和业务逻辑稳定,对外提供稳定的细粒度领域服务,所以是架构核心。


应用层实现面向用户操作相关的用例和流程,对外提供粗粒度API服务。适配前台应用和领域层,接收前台需求,随时做出响应和调整,尽量避免将前台需求传到领域层。应用层作为配速齿轮位于前台应用和领域层间。


这三种架构都考虑了前端需求的变与领域模型的不变。需求变幻无穷,但变化总是有矩可循的,用户体验、操作习惯、市场环境以及管理流程的变化,往往会导致界面逻辑和流程的多变。但核心领域逻辑基本不大变,领域模型相对稳定,用例和流程则会随外部需求而随时调整。


架构模型通过分层控制需求变化从外到里对系统影响,从外向里受需求影响逐步减小。面向用户的前端可以快速响应外部需求进行调整和发布,应用层通过服务组合和编排来实现业务流程的快速适配上线,减少传到领域层的需求,使领域层保持长期稳定。


这样设计的好处,可保证领域层核心业务逻辑不会因外部需求和流程的变动而调整。


目录
相关文章
|
6天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
33 6
|
6天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
19 1
|
2月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
2月前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1
|
1月前
|
存储 分布式计算 API
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
79 0
|
8天前
|
机器学习/深度学习 自然语言处理 C++
TSMamba:基于Mamba架构的高效时间序列预测基础模型
TSMamba通过其创新的架构设计和训练策略,成功解决了传统时间序列预测模型面临的多个关键问题。
27 4
TSMamba:基于Mamba架构的高效时间序列预测基础模型
|
11天前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
6天前
|
消息中间件 供应链 架构师
微服务如何实现低耦合高内聚?架构师都在用的技巧!
本文介绍了微服务的拆分方法,重点讲解了“高内聚”和“低耦合”两个核心设计原则。高内聚强调每个微服务应专注于单一职责,减少代码修改范围,提高系统稳定性。低耦合则通过接口和消息队列实现服务间的解耦,确保各服务独立运作,提升系统的灵活性和可维护性。通过领域建模和事件通知机制,可以有效实现微服务的高效拆分和管理。
23 7
|
13天前
|
运维 NoSQL Java
后端架构演进:微服务架构的优缺点与实战案例分析
【10月更文挑战第28天】本文探讨了微服务架构与单体架构的优缺点,并通过实战案例分析了微服务架构在实际应用中的表现。微服务架构具有高内聚、低耦合、独立部署等优势,但也面临分布式系统的复杂性和较高的运维成本。通过某电商平台的实际案例,展示了微服务架构在提升系统性能和团队协作效率方面的显著效果,同时也指出了其带来的挑战。
50 4
|
1月前
|
机器学习/深度学习 网络架构 计算机视觉
目标检测笔记(一):不同模型的网络架构介绍和代码
这篇文章介绍了ShuffleNetV2网络架构及其代码实现,包括模型结构、代码细节和不同版本的模型。ShuffleNetV2是一个高效的卷积神经网络,适用于深度学习中的目标检测任务。
65 1
目标检测笔记(一):不同模型的网络架构介绍和代码