领域驱动设计DDD架构解析和绘图模板分享

  • DDD整洁架构

DDD整洁架构为了解决强调用的关系,出现了洋葱架构(六边形)架构,就是为了实现依赖倒置

它的思想就是把领域模型放到核心的位置,领域模型是独立的,不会直接强依赖其他层,而通过适配器来完成领域模型和外层的数据交换。

  • DDD分层架构和三层架构的区别与关系

DD分层架构和三层架构的区别与关系DDD代码分层架构与传统三层架构对比,可以发现传统三层架构被看成是一个贫血模式的领域驱动设计

  • DDD分层接口调用时序逻辑关系

DDD分层接口调用时序逻辑关系下面是基于DDD领域模型设计的系统中常用接口调用时序交互流程

  • CQRS架构

CQRS架构CQRS,中文名为命令和查询职责分离

CQRS 将系统中的操作分为两类,即「命令」(Command)  与「查询」(Query) 。命令则是对会引起数据发生变化操作的总称,即我们常说的新增,更新,删除这些操作,都是命令。而查询则和字面意思一样,即不会对数据产生变化的操作,只是按照某些条件查找数据。

CQRS 的核心思想是将这两类不同的操作进行分离,然后在两个独立的「服务」中实现。这里的「服务」一般是指两个独立部署的应用。在某些特殊情况下,也可以部署在同一个应用内的不同接口上。

Command 与 Query 对应的数据源也应该是互相独立的,即更新操作在一个数据源,而查询操作在另一个数据源上。当然查询和命令对应的数据源虽然不一样,但是肯定是需要同步的,那我们该怎么实现数据源的同步呢?

从图上可以看到,当 command 系统完成数据更新的操作后,会通过「领域事件」的方式通知 query 系统。query 系统在接受到事件之后更新自己的数据源。所有的查询操作都通过 query 系统暴露的接口完成。

从架构图上来看,CQRS 的实现似乎并不难,许多开发者觉得无非是「增删改」一套系统一个数据库,「查询」一个系统一个数据库而已,有点类似「读写分离」,并没有什么特别的地方。但是真正要使用 CQRS 是有许多问题与细节要解决的。

备注:以上架构图都使用PDDON在线画图工具免费制作,有需要要的朋友可以到官网上找到类似的架构图模板哦,免费克隆模板,根据自家业务克隆模板进行调整就可以使用了,工具和模板地址:https://pddon.com

posted @ 2023-05-18 17:28  PDDON  阅读(424)  评论(0编辑  收藏  举报