1. 概述

CQRS(Command Query Responsibility Segration:命令查询职责隔离

其中:
Command包括增、删、改; Query只包含查

它是一种读写分离思想的架构

常用解决方案就是对数据库进行读写分离。
让主数据库处理事务性的增、删、改操作,让从数据库处理查询操作,然后主从数据库之间进行同步。

这只是从DB角度处理了读写分离,从业务或者系统层面上来说,读和写的逻辑仍然是存放在一起的

CQRS架构:

2. 实现方式

CQRS可以有两种实现方式。

2.1 CQ两端数据库共享,只是在上层代码上分离。

这样做的好处是可以让我们的代码读写分离,更容易维护,而且不存在CQ两端的数据一致性问题,
因为是共享一个数据库的。这种架构是非常实用的(也就是我上面画的那种)

2.2 CQ两端不仅代码分离,数据库也分离,然后Q端数据由C端同步过来。

同步方式有两种:同步或异步,如果需要CQ两端的强一致性,则需要用同步;如果能接受CQ两端数据的最终一致性,则可以使用异步。

C端可以采用EventSourcing(简称ES)模式,所有C端的最新数据全部用DomainEvent表达即可
而要查询显示用的数据,则从Q端的ReadDB(关系型数据库)查询即可。

通俗易懂,CQRS概念浅析相关推荐

  1. DDD - CQRS 概念

    1 背景 1988 年,Bertrand Meyer 在面向对象的软件设计一书中设计了 CQS 原则.简单来说,这个原则是说程序应当要么修改系统(Command),要么返回查询结果(Query),软件 ...

  2. 【释义】NP complete概念浅析(涵盖:P问题,NP问题,NP完全问题,NP难问题)

    文章目录 前言 正文 1.P问题 2.NP问题 3.NP-complete问题(即:NP完全问题) 4.NP完全问题可能不会长久存在 5.示例 6.NP-Hard问题(即:NP难问题) 7.关系 小结 ...

  3. QCOW2/RAW/qemu-img 概念浅析

    目录 目录 扩展阅读 RAW QCOW2 QEMU-COW 2 QCOW2 Header QCOW2 的 COW 特性 QCOW2 的快照 qemu-img 的基本使用 RAW 与 QCOW2 的区别 ...

  4. 前端路由的概念与原理

    前端路由router的概念与原理 1. 什么是路由 路由(英文:router)就是对应关系. 2. SPA 与前端路由 SPA 指的是一个 web 网站只有唯一的一个 HTML 页面,所有组件的展示与 ...

  5. 时雨月五| AI机器学习实战の电磁导航智能车中神经网络应用的问题与思考

    "不愤不启,不悱不发.举一隅不以三隅反,则不复也". – <论语·述而> 再次将论语中的这句"不愤不启,不悱不发"引用在这里,说明学生的学习的活动部 ...

  6. GraphQL 初探—面向未来 API 及其生态圈

    什么是 GraphQL ?第一次看到这个名词未免让人联想到数据库查询语言 SQL .但本质上,这是两个完全不同的东西, GraphQL 在官方文档里的定义如下: GraphQL is a query ...

  7. java disruptor压测_Java并发框架Disruptor实现原理与源码分析(二) 缓存行填充与CAS操作...

    ##缓存行填充 关于缓存行填充在我个人的印象里面第一次看到是在Java的java.util.concurrent包中,因为当时很好奇其用法背后的逻辑,所以查了很多资料才明白到底是怎么回事*(也许事实上 ...

  8. java线程安全问题之静态变量、实例变量、局部变量

    转载 java多线程编程中,存在很多线程安全问题,至于什么是线程安全呢,给出一个通俗易懂的概念还是蛮难的,如同<java并发编程实践>中所说: 写道 给线程安全下定义比较困难.存在很多种定 ...

  9. 阿里开发规范文档_华为阿里等技术专家15年开发经验总结:SSM整合开发实战文档...

    前言 Spring自2002年诞生至今,已有近20年的历史,虽然几经变迁,但始终在继续发展和精进.Spring目前由Pivotal维护和开发. Pivotal是PaaS(平台即服务)的领导者,也是消息 ...

最新文章

  1. PHP和js判断访问设备是否是微信浏览器实例
  2. python爬虫小说代码示例-Python从零开始写爬虫-4 解析HTML获取小说正文
  3. intellijidea课程 intellijidea神器使用技巧 6-1 Spring的关联
  4. springboot学习笔记1:springboot入门
  5. [NewLife.XCode]分表分库(百亿级大数据存储)
  6. Windows 软件安全---注入安全
  7. Linux环境下通过gstack命令查看进程的运行堆栈信息
  8. (网页)JS实现alert中显示换行的方法
  9. jQuery实现文本框回车键转tab键
  10. c51语言编程实验报告,C51单片机实验报告程序.doc
  11. java jxls导出excel
  12. R语言 判别分析:线性判别、K最邻近、有权重的K最邻近、朴素贝叶斯
  13. 学术-几何-维-四维几何:超正方体(几何中的思维方体)
  14. EMV(一):初步了解EMV和EMV的分层结构
  15. KEIL工程文件打不开
  16. 充分利用 cpu_充分利用设计学校(已更新)
  17. 解决“com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536”问题
  18. ubuntu 进不去界面解决方案
  19. 学GIS开发怎么入门,GIS专业的学生应该掌握什么知识 ?
  20. java 模板转 PDF

热门文章

  1. C++ 常见崩溃问题分析
  2. ElasticSearch探索之路(三)分布式原理:分布式路由、存储、搜索原理
  3. 数据结构与算法 | 直接选择排序、双向选择排序
  4. 第26讲:模拟登录爬取实战案例
  5. scrapy 解决Redirecting 301 302重定向问题
  6. 面试官:要不讲讲 Cookie、Session、Token、JWT之间的区别?
  7. 【线上分享】云游戏面对低延迟挑战的实践
  8. 美摄 - 助力打造完善的音视频解决方案
  9. 深度学习赋能视频编码
  10. IPv6下CDN和网络的最佳实践