领域驱动设计DDD和CQRS架构模式落地实践

在领域驱动架构中,通常会将查询和命令操作分开,我们称之为CQRS(命令查询职责分离Command Query Responsibility Segregation)。这张图是来自Martin Fowler大师的文章CQRS(https://www.martinfowler.com/bliki/CQRS.html)。

上图中读模块Query Model和写模块Command Model只是逻辑分离,物理层面还是使用了同一个数据库。我们可以进一步将数据库改成读库和写库做到物理分离,这时候就需要同步读写库。

如果数据量不大,可以采用简单的处理方式,物理层面还是使用一个数据库,查询的时候部分数据直接从数据库读取,部分数据使用到了Elasticsearch,数据同步可以采用两种方案:

  • 当数据库发生更改时,主动发送领域事件(Domain Event)通知Elasticsearch进行更新,可以参考《COLA 4.x架构入门和项目实践》技术专栏中的领域事件入门实践部分的内容。
  • 直接监听MySQL的binlog更新Elasticsearch。关于Elasticsearch的详细使用,可以参考《Elasticsearch 7.x从入门到精通》技术专栏。

COLA开源架构,就是基于DDD领域建模思想、DDD分层架构和CQRS架构,可以帮助开发人员快速落地DDD应用项目。

《COLA 4.x架构入门和项目实践》技术专栏首先介绍了COLA框架的使用入门,以及与IDEA开发工具的集成等等;然后基于COLA架构,创建DDD经典示例项目-货物运输系统,详细介绍了DDD领域建模、适配层、应用层、领域层和基础设施层的代码开发、防腐层(ACL)设计与实现、领域事件(Domain Event)建模和落地实践、以及基于Kafka消息中间件的消息发布和订阅等等。内容由浅入深,从开发实战出发,逐步掌握基于COLA架构和DDD领域建模思想构建复杂业务应用系统。

Original: https://www.cnblogs.com/rickie/p/15086519.html
Author: Rickie
Title: 领域驱动设计DDD和CQRS架构模式落地实践

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/553300/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Git统计代码修改行数

    通过 Git 的命令可以统计自己在一段时间内的代码更改数量,具体代码如下: git log –author="username" –pretty=tform…

    技术杂谈 2023年7月24日
    084
  • 查找文本文件中重复的汉字

    查找文本文件中重复的汉字,找到在所在行号 文本文件格式 大 小 多 少 前 后 左 …… text.py import os import re list = [] sam…

    技术杂谈 2023年5月31日
    0137
  • 有向图计数与GGF/2022.8.10闲话II

    《コバルトメモリーズ》海岸线は半透明半透明的海岸线,カモメが鸣いた,海鸥声声鸣叫着,ノイズまみれのラジオが歌うよ,掺杂着噪音的收音机正唱着歌,结构前の话,在很久以前,世界が全员喧哗…

    技术杂谈 2023年7月23日
    077
  • 2.1插入排序

    一、概述 1、适用场景:对少量元素进行排序,当元素数量较多时,插入排序的效率低 2、算法过程的描述:现有n个无序的数,依次将第1,2,3……n个数插入到有序…

    技术杂谈 2023年7月10日
    081
  • ORACLE数据恢复方法(提交事务也可以)

    今天在操作数据库的时候,发现数据操作错误,想要恢复,但是没有用事务,按理说,设置成不默认提交事务,此时所做的各种操作都没有反应到数据库中。这时,你可以rollback事务,撤销所有…

    技术杂谈 2023年5月31日
    083
  • Who is using Asio?

    https://think-async.com/Asio/WhoIsUsingAsio Original: https://www.cnblogs.com/my_life/p/48…

    技术杂谈 2023年5月31日
    0103
  • 某连锁酒店泄露数据的分析

    声明 不提供任何下载,不提供任何指引,无需问我怎么得到,我不会回答。 前言 这个分析纯粹是我喜欢数据挖掘,周末闲来无事练一下手。 源文件 源文件是一个SQL Server数据库备份…

    技术杂谈 2023年5月31日
    089
  • 猪齿鱼2.0版本重磅发布,解锁更多新特性,提升研发管理效率!

    2022年5月21日,数智化开发管理平台猪齿鱼 Choerodon 发布2.0版本。新增项目计划导入导出、知识库在线协同、需求交付周期统计、钉钉集成等多项功能,全面提升团队工作效能…

    技术杂谈 2023年7月23日
    084
  • 从Spring中学到的【1】–读懂继承链

    最近看了一些 Spring 源码,发现源码分析的文章很多,而底层思想分析的文章比较少,这个系列文章准备总结一下Spring中给我的启示,包括设计模式思想、SOLID设计原则等,涉及…

    技术杂谈 2023年7月25日
    0114
  • 解决云服务器响应慢,网页加载慢的问题

    问题: 本文接上一次博客,云服务发布springboot项目踩过的坑 自从上次,一咬牙买了阿里云的服务器(虽然是白嫖的15天试用期)。 但是有一个问题一直困扰着我,如鲠在喉! 非常…

    技术杂谈 2023年7月23日
    076
  • js原型继承

    转自:http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/0014…

    技术杂谈 2023年5月30日
    0120
  • 六、IDEA安装

    一、IDEA下载与安装 1.1、下载IDEA安装包 博主在这里给大家准备了一个64位操作系统的IDEA以便大家下载(使用的是迅雷)点击此处下载提取码:dgiy 如果其他小伙伴的电脑…

    技术杂谈 2023年6月21日
    096
  • Codeforces Round #616 (Div. 2) A Even But Not Even 水题

    A. Even But Not Even time limit per test1 secondmemory limit per test256 megabytes Let&#82…

    技术杂谈 2023年6月1日
    071
  • 将知识变成你的技能点

    学习的东西,只有经过多次使用和尝试后,才能成为你的技能点。一个事情,从你学懂它,到它成为你的技能点,这个过程是很漫长的。学习之后,还需要大量的训练和练习。 本文谈谈俺点亮过或正在点…

    技术杂谈 2023年6月1日
    082
  • manim 无法导入bug

    突然无法导入manim了,Jupyter中提示__init__.py文件有问题,但是我没有动过 无奈,最后只能在manimce中pip uninstall然后再install ma…

    技术杂谈 2023年7月24日
    098
  • IOC常用的创建对象方式

    1、User.java public class User { private String name; public User() { System.out.println(&q…

    技术杂谈 2023年7月11日
    058
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球