首页 > 其他分享 >DDD分层架构

DDD分层架构

时间:2024-09-22 21:19:51浏览次数:10  
标签:服务 -- 分层 架构 六边形 DDD

DDD分层架构、整洁架构、六边形架构都是以领域模型为核心,实行分层架构。内部核心业务逻辑与外部应用、资源隔离并解耦。从而设计出“高内聚、低耦合”的微服务,以实现微服务的架构演进。DDD分层架构使得微服务的架构边界变得清晰。

六边形架构

提到微服务架构,一定会涉及到六边形架构。六边形架构(Hexagonal Architecture),也被称为端口与适配器架构。其将业务逻辑封装在核心内部,与外部基础设施隔离。

ps, 画图工具不直接支持六边形图形,用圆形替代。

DDD分层架构

DDD分层架构

DDD分层

用户接口层

用户接口层,完成后端微服务与前端不同用户的接口和数据适配

用户接口层主要由facade接口、DTO以及DO数据的组装和转换。

应用层

应用层,协调领域层内多个聚合,面向用例和业务流程以完成服务的组合和编排。很薄的一层。

微服务之间通过应用层完成互相调用。

应用层主要有应用服务、事件订阅和发布。

领域层

领域层,实现领域模型的核心业务逻辑,体现领域模型的业务能力。

领域模型的业务逻辑主要由实体和领域服务实现。实体采用充血模型实现与其相关的业务功能。领域服务是组合聚合内多个实体,以实现复杂业务逻辑。

基础层

基础层,为其他层提供通用的技术和基础服务。基础层实现与各种技术的对接,包括数据库、缓存、消息中心和第三方服务等。

DDD分层代码模型

--root
    --adapter: 适配器层
       --rpc: RPC层,Domain层中port中依赖的外部的接口实现,调用远程RPC接口
       --mq: 消息队列sender模块
       --translate: 将外部数据结构映射为内部的DTO/model
       --task: 任务,主要是调度任务的适配器
       --controller: springMVC提供的controller
    --app: 应用层是组合domain提供的能力,从而实现业务用例
        --cases: 应用服务
    --domain: 领域层
       --service: 领域服务
       --facotry: 工厂,创建复杂对象
       --event: 事件驱动
       --model: 对象和实体
       --translate: 对象实体映射转换
    --infrastructure: 基础设施层
       --repository: 持久化层,包括db模型,sql读写等
       --cache: 缓存读写
       --producer: MQ消息生成,即发送MQ消息。
       --config: 配置信息,例如应用配置、数据库、缓存配置等
       --translate: 将存储层的数据结构DO映射为内部的DTO/model
       --utils: 工具集合
       --do: 存储层数据
    --common: 公共层
       --exception: 自定义异常
       --enums: 枚举类
       --constants: 全局公共常量池
       

参考

《中台架构与实现–基于DDD和微服务》–欧创新
从混乱到优雅:基于DDD的六边形架构的代码翻新指南

标签:服务,--,分层,架构,六边形,DDD
From: https://blog.csdn.net/shuz0612/article/details/142440094

相关文章

  • 如何在自动化测试中应用装饰器、多线程优化自动化架构?
    1、装饰器概念        装饰器是Python中用于修改函数或类的语法结构的工具。它以函数作为输入参数,并返回一个函数作为一个输出函数,在不改变原有函数的代码情况下,给函数增加功能或改变函数行为。        装饰器的使用方式是在函数定义的上方使用@decorator_n......
  • 数据中台陨落,数据飞轮崛起:新时代的数据架构选择
    在科技迭代的潮流中,企业对数据的处理和利用已经从单纯的存储转变为如何高效提升业务决策和操作效率。数据中台曾经作为企业数据管理的救星受到了极大的推崇,旨在统一企业内部数据的收集、存储和管理,实现数据资产的集中控制和高效利用。然而,现实往往与理想有差距,数据中台在实际运用中......
  • 数据中台难题与数据飞轮的崛起:探索未来数据架构的变革
    在近年的数据管理领域,数据中台一度被视为企业解决数据孤岛、提升数据利用效率的利器。然而,随着时间推移,数据中台的光环有所褪色,不少企业开始面临新的挑战。原因多端,包括但不限于高成本投入、实施复杂、以及数据活用的实际效果不佳。企业投入巨大,期望通过构建中台来整合各类数据资源......
  • 浅谈OB高可用架构下的RTO与RPO
    OB从4.x.x版本开始提供了两副本加仲裁节点的高可用架构,比对三副本架构可以将第三个zone(机房)的成本降到极低,仅需要一个小规格的虚拟机即可。对于没有三个数据副本部署要求的业务来说,可以节约三分之一的服务器资源。因此对于同城多机房部署下的数据库架构,三副本架构和两副本加仲裁节......
  • 数据飞轮与数据中台:未来数据架构的进化论
    在数据驱动的商业世界中,‘数据中台’与‘数据飞轮’是两个高频出现且深受关注的概念。然而,这两者之间具有本质的连接与区别,通过深入分析和对比,我们可以更好地悟出数据驱动战略的核心要义。本文将探讨数据飞轮是否为数据中台的高阶形态,并通过具体的业务实践—特别是增长营销及用户流......
  • 十三 系统架构设计(考点篇)
    1软件架构的概念一个程序和计算系统软件体系结构是指系统的一个或者多个结构。结构中包括软件的构件,构件的外部可见属性以及它们之间的相互关系。体系结构并非可运行软件。确切地说,它是一种表达,使软件工程师能够:(1)分析设计在满足所规定的需求方面的有效性:(2)在......
  • 【java面经】微服务架构速记
    目录由来是什么本质和单体架构的区别适用项目开发框架SpringCloud(流行)DubboDropwizardConsul,etcd&etc(微服务的模块)由来独立系统,SOA服务切换时间长,成本高,不够稳定是什么一套小服务来开发单个应用,每个服务运行在自己的进程中,使用HTTPAPI等轻量级机制通信服务可......
  • JAVA毕业设计|(免费)Springboot和BS架构宠物健康咨询系统包含文档代码讲解
    收藏点赞不迷路 关注作者有好处编号:springboot509Springboot和BS架构宠物健康咨询系统开发语言:Java数据库:MySQL技术:Spring+SpringMVC+MyBatis工具:IDEA/Ecilpse、Navicat、Maven1.万字文档展示(部分)2.系统图片展示第5章系统详细设计5.1管理员功能模块的实现5......
  • SaaS业务架构:业务能力分析
    大家好,我是汤师爷~今天聊聊SaaS业务架构的业务能力分析。业务能力概述简单来说,业务能力是企业“做某事的能力”。业务能力描述了企业当前和未来应对挑战的能力,即企业能做什么或需要做什么。业务能力建模的关键在于定义了企业做什么,而不是如何做(由业务流程描述)。以人才招聘为......
  • 软件开发的山顶是国学和DDD
    DDD领域驱动设计批评文集做强化自测题获得“软件方法建模师”称号《软件方法》各章合集最近听说领域驱动设计圈子提出了“设计国学”的思想,受启发得到此文。**********领域驱动设计(DDD)是革命性的创新和划时代的洞见,国学则是中华五千年文明的积累。二者的结合如同双剑合璧......