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

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

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

整洁架构

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

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

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

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

image.png

职能划分

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

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

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

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

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

六边形架构

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

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

职能划分

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

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

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

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

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

架构模型对比分析

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

image.png

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


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


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


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


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


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


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


目录
相关文章
|
5月前
|
人工智能 API 数据安全/隐私保护
Apifox 与 Apipost 的 API 文档引擎对比:底层架构、性能与可扩展性分析
深入探索市场上两大主流API工具——Apifox和Apipost的文档能力时,发现了令人惊讶的差距。这不仅仅是功能多寡的问题,更关乎开发效率与团队协作的质变。
|
1月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
2月前
|
Java API 开发工具
灵码产品演示:软件工程架构分析
本演示展示灵码对复杂软件项目的架构分析与文档生成能力。通过Qwen3模型,结合PlantUML,自动生成系统架构图、微服务时序图,并提取API接口文档,实现高效、智能的代码理解与文档输出。
220 5
|
2月前
|
存储 JSON 数据处理
ClkLog埋点与用户行为分析系统:架构升级与性能全面提升
随着越来越多企业在实际业务中使用 ClkLog,数据规模和分析需求也不断提升,部分用户日活已经超过10万,为了顺应这一趋势,ClkLog 秉持 “开放透明、持续演进”的理念,推出了迄今为止最重要的一次性能优化升级。新版本在大规模数据处理与复杂查询场景中,性能表现实现了跨越式提升。经过多轮研发与严格测试,新版本现已正式上线:在原有付费版 1.0 的基础上架构全面升级,并同步发布全新的 2.0 版本。为用户带来更强的性能与更广的适用场景。
|
7月前
|
人工智能 自然语言处理 数据可视化
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
|
3月前
|
存储 前端开发 JavaScript
如何开发设备管理系统中的经验分析报表板块 ?(附架构图+流程图+代码参考)
设备管理系统(EMS)助力企业高效管理设备生命周期,涵盖采购、维护到报废全流程。本文详解经验分析报表模块设计与开发,涵盖动态看板、点检、巡检、维修、保养及库存统计功能,提供代码示例与架构设计建议,提升设备管理效率与决策水平。
|
6月前
|
机器学习/深度学习 人工智能 算法
大型多模态推理模型技术演进综述:从模块化架构到原生推理能力的综合分析
该研究系统梳理了大型多模态推理模型(LMRMs)的技术发展,从早期模块化架构到统一的语言中心框架,提出原生LMRMs(N-LMRMs)的前沿概念。论文划分三个技术演进阶段及一个前瞻性范式,深入探讨关键挑战与评估基准,为构建复杂动态环境中的稳健AI系统提供理论框架。未来方向聚焦全模态泛化、深度推理与智能体行为,推动跨模态融合与自主交互能力的发展。
486 13
大型多模态推理模型技术演进综述:从模块化架构到原生推理能力的综合分析
|
4月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
248 0
|
5月前
|
运维 监控 数据可视化
一文详解:工业软件“低代码开发平台”技术架构研究与分析
本文围绕工业软件低代码开发平台的机遇与挑战,提出基于自动化引擎的技术架构,由工具链、引擎库、模型库、组件库、工业数据网关和应用门户组成。文章分析了其在快速开发、传统系统升级中的应用模式及价值,如缩短创新周期、降低试错成本、解决资源缺乏和提升创新可复制性,为我国工业软件产业发展提供参考和支持。

热门文章

最新文章