通俗易懂,CQRS概念浅析
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概念浅析相关推荐
- DDD - CQRS 概念
1 背景 1988 年,Bertrand Meyer 在面向对象的软件设计一书中设计了 CQS 原则.简单来说,这个原则是说程序应当要么修改系统(Command),要么返回查询结果(Query),软件 ...
- 【释义】NP complete概念浅析(涵盖:P问题,NP问题,NP完全问题,NP难问题)
文章目录 前言 正文 1.P问题 2.NP问题 3.NP-complete问题(即:NP完全问题) 4.NP完全问题可能不会长久存在 5.示例 6.NP-Hard问题(即:NP难问题) 7.关系 小结 ...
- QCOW2/RAW/qemu-img 概念浅析
目录 目录 扩展阅读 RAW QCOW2 QEMU-COW 2 QCOW2 Header QCOW2 的 COW 特性 QCOW2 的快照 qemu-img 的基本使用 RAW 与 QCOW2 的区别 ...
- 前端路由的概念与原理
前端路由router的概念与原理 1. 什么是路由 路由(英文:router)就是对应关系. 2. SPA 与前端路由 SPA 指的是一个 web 网站只有唯一的一个 HTML 页面,所有组件的展示与 ...
- 时雨月五| AI机器学习实战の电磁导航智能车中神经网络应用的问题与思考
"不愤不启,不悱不发.举一隅不以三隅反,则不复也". – <论语·述而> 再次将论语中的这句"不愤不启,不悱不发"引用在这里,说明学生的学习的活动部 ...
- GraphQL 初探—面向未来 API 及其生态圈
什么是 GraphQL ?第一次看到这个名词未免让人联想到数据库查询语言 SQL .但本质上,这是两个完全不同的东西, GraphQL 在官方文档里的定义如下: GraphQL is a query ...
- java disruptor压测_Java并发框架Disruptor实现原理与源码分析(二) 缓存行填充与CAS操作...
##缓存行填充 关于缓存行填充在我个人的印象里面第一次看到是在Java的java.util.concurrent包中,因为当时很好奇其用法背后的逻辑,所以查了很多资料才明白到底是怎么回事*(也许事实上 ...
- java线程安全问题之静态变量、实例变量、局部变量
转载 java多线程编程中,存在很多线程安全问题,至于什么是线程安全呢,给出一个通俗易懂的概念还是蛮难的,如同<java并发编程实践>中所说: 写道 给线程安全下定义比较困难.存在很多种定 ...
- 阿里开发规范文档_华为阿里等技术专家15年开发经验总结:SSM整合开发实战文档...
前言 Spring自2002年诞生至今,已有近20年的历史,虽然几经变迁,但始终在继续发展和精进.Spring目前由Pivotal维护和开发. Pivotal是PaaS(平台即服务)的领导者,也是消息 ...
最新文章
- PHP和js判断访问设备是否是微信浏览器实例
- python爬虫小说代码示例-Python从零开始写爬虫-4 解析HTML获取小说正文
- intellijidea课程 intellijidea神器使用技巧 6-1 Spring的关联
- springboot学习笔记1:springboot入门
- [NewLife.XCode]分表分库(百亿级大数据存储)
- Windows 软件安全---注入安全
- Linux环境下通过gstack命令查看进程的运行堆栈信息
- (网页)JS实现alert中显示换行的方法
- jQuery实现文本框回车键转tab键
- c51语言编程实验报告,C51单片机实验报告程序.doc
- java jxls导出excel
- R语言 判别分析:线性判别、K最邻近、有权重的K最邻近、朴素贝叶斯
- 学术-几何-维-四维几何:超正方体(几何中的思维方体)
- EMV(一):初步了解EMV和EMV的分层结构
- KEIL工程文件打不开
- 充分利用 cpu_充分利用设计学校(已更新)
- 解决“com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536”问题
- ubuntu 进不去界面解决方案
- 学GIS开发怎么入门,GIS专业的学生应该掌握什么知识 ?
- java 模板转 PDF