CQRS在领域驱动中的重要作用
如果无法正常显示,请先停止浏览器的去广告插件。
1. CQRS在领域驱动中的重要作用
王君明/业务研发-机票主系统
2. 个人介绍
姓名:王君明
部门:业务研发/机票主系统
简介:2014年入职去哪儿网,现在业务研发机票主系统,
对技术有较高的热情,不断引入新的技术栈提高开发效率,
最早引入Spring Boot落地实践并在全司推广,负责的流控
系统哨兵系统,现已成为公司基础的限流熔断TC基础组件。
3. 认识CQRS
CONTENTS 目录
CQRS与常见架构
CQRS架构模型详解
CQRS案例分享
4. 01
认识CQRS
5. 认识CQRS
01 什么是CQRS?
02 CQRS的特征
03 CQRS的使用场景
04 CQRS的挑战
6. 什么是CQRS?
CQRS解释
Command Query Responsibility Segregation
命令查询职责分离
CQRS概念
CQRS 将系统中的操作分为「命令」(Command) 与
「查询」(Query)两类。
命令是对会引起数据发生变化操作的总称,即我们常
说的新增,更新,删除这些操作,都是命令。
而查询则和字面意思一样,即不会对数据产生变化的
操作,只是按照某些条件查找数据。
7. CQRS
8. CQRS的特征
Command部分
接收外部所有的Insert、Update、Delete命令,转化为
Command,每一个Command修改一个Aggregate的状态
Query部分
接受所有查询请求,直接返回数据
9. CQRS使用场景
查询数据复杂
写入数据通常聚焦在一个领域或聚合内
查询的数据结构复杂,跨域多个聚合的数据组合
读写分离
读数据比写数据频繁的多
通过读写分离提高系统的性能,可以灵活的使用不同的数
据库技术实现
10. CQRS的挑战
数据一致性
数据的写入与事件触发更新不在同一个事务
两份数据可能异构存储如何保证最终一致性
基础实施不成熟
CQRS大多是通过手工的读写分离实现
缺少具有统治地位的成熟框架
11. 02
CQRS与常见架构
12. CQRS与常见架构
01 事件溯源Event Sourcing
02 清晰架构
13. 事件溯源Event Sourcing
14. Event Sourcing
15. 整洁架构
16. 03
CQRS架构模型详解
17. CQRS架构模型详解
01 Axon Framework
02 基于Axon的CQRS
18. Axon Framework
Axon Framework号称 “CQRS框架For Java ”
支持开发人员落地命令查询责任隔离(CQRS)架构模式
帮助构建可伸缩,可扩展和可维护的应用程序
DDD
Event
sourcing
CQRS
Microservices
Spring Boot
Open source
19.
20. Axon实现CQRS
21. 聚合(@Aggregate):BankAccount
22. 命令:CreateBankAccountCommand
23. 命令:CreateBankAccountCommand
24. 命令处理器(@CommandHandler)
25. 命令处理器(@CommandHandler)
26. 发布事件 (@BankAccountCreatedEvent)
27. 事件处理器(@EventHandler)
28. 事件处理器(@EventHandler)
29. 事件溯源(@EventSourcingHandler)
EventSorcingHandler
Event Store
30. 事件溯源(@EventSourcingHandler)
31. 查询(Query)
Query
32. 04
CQRS案例分享
33. CQRS使用场景
查询数据复杂
写入数据通常聚焦在一个领域或聚合内
查询的数据结构复杂,跨域多个聚合的数据组合
读写分离
读数据比写数据频繁的多
通过读写分离提高系统的性能,可以灵活的使用不同的数
据库技术实现
34. 机票订单CQRS
C端用户接口层
服务运营/呼叫中心
交易生单写入
订单状态查询
服务平台售后系统
机票核心交易处理
我的订单查询
公共订单中心
消息队列
服务平台订单库
ElasticSearch
Binlog同步
机票订单MySql
公共机票订单
MySql
35. 机票服务订单库同步
36.