CQRS(Command Query Responsibility Segregation)
2023-11-22 10:13:23 0 举报
CRQS 既是一种流行的业务架构,又是一种设计思维。
作者其他创作
大纲/内容
消息队列
View
Agg Repository
View Repository
底层实现不同
主要基于 DB 实现
基于 DB、Redis、ES 等多种存储引擎
方法复杂性不同
提供仅有的少量方法并足以支持大多数场景,比如 save、update、getById 等
根据业务场景进行定制,方法多种多样(单条、批量、分页、排序、统计等),维度多种多样(id、user、status)
返回值不同
直接返回装配完整的富对象
根据业务场景定制返回值
发布事件
Agg
应用服务层拆分
ElasticSearch
读
模型层拆分
CommandService
QueryService
依赖组件不同
ValidateService 验证服务;LazyLoaderFactory 延迟加载服务;CommandRepository 不带缓存的仓库;EventPublisher 事件发表器
QueryRepository 带缓存功能的仓库;JoinService 数据聚合服务;Converter 数据转换服务
核心流程不同
验证、加载、业务操作、同步、发布事件
验证、加载、数据组装、转换
功能加强不同
事务管理器
缓存组件
Command
Query
要求不同
一致性
高性能查询、数据分析
产品不同
关系型数据库
redis、elastic、tidb
find
拆分依据
仓库层拆分
View Repository
数据库
读/写
TiDB
数据层拆分
Sync
Agg Repository
Web接入层
订阅事件
场景不同
Command 场景需要保障严谨的业务逻辑,通常复杂性偏高
Query 场景需要更灵活的数据组装能力作为支持,通常比较简单
实现策略不同
DDD
事务脚本
redis
0 条评论
下一页