乐趣区

关于.net:NET现代化应用开发-CQRS类目管理代码剖析

本周 MASA Framework 进行了第四次课程直播,课程主题为 类目治理的开发,直播中进行了实践解说和实战演练(CQRS 实际的演示可中转推文底部观看直播回放)

开始环节咱们围绕三个点介绍 CQRS 的原理

首先,咱们先对之前的事件流概念进行简略的回顾

事件风暴回顾 – 事件流

接下来到咱们本节课的主题内容

CQRS

命令查问职责拆散

大白话:读和写离开

信息起源:https://docs.microsoft.com/zh…

劣势

1. 独立缩放
2. 依据读写别离优化数据结构
3. 更轻松地确保仅正确的域实体对数据执行写入
4. 关注点拆散,读关注读取性能,写关注简单业务逻辑
5. 物化视图的读模型可无效缩小简单的表链接

什么时候用

1. 源于拜访频次、数据量或者是数据模型数量等因素导致查问和更新的需要差距逐步变大
2. 最大限度地进步性能
3. 管制细粒度的缩放
4. 管制不同利用的安全级别
5. 升高多开发者合作抵触,事件的粒度能够足够细

留神

1. 命令应 基于工作 ,而不是数据
2. 命令可入队,应用异步而 非同步
3. 查问 不蕴含 批改动作和畛域常识
4. 事件溯源 反对重播,比方用于告诉读模型

事件溯源

只追加存储来记录对数据采取的残缺系列操作
而不是仅存储域中数据的以后状态

劣势

1. 事件不可变
2. 事件有助于领域专家理解过程
3. 事件只增不改,不须要思考并发抵触
4. 事件存储有助于监控数据变动
5. 事件重播可轻易的对系统状态进行还原,调试,测试
6. 事件可被不同的利用屡次,异步生产

留神

1. 事件驱动是 异步 的,读模型会有肯定水平的提早
2. 批改事件的惟一形式只能通过 弥补事件
3. 事件程序 至关重要,事件存储有责任保障事件程序完整性

不论是下面讲到的 CQRS,还是事件溯源,这些都是为事件驱动做筹备

事件驱动

  

事件驱动的小知识点

事件驱动里有一些值得注意的点

事件不等于 命令

1 事件不会通知订阅者如何做
2. 事件只告诉某个事件产生了
3. 事件是不可变的
4. 事件被执行时,可能会产生新的事件并造成事件流

事件标准化

反对过滤 / 转换 / 查问等

事件其实是须要标准化的,那有没有规范呢?

那就是 CloudEvents

CloudEvents

蕴含了事件产生的上下文和相干数据,事件代表了已产生的事实,不蕴含任何目的地相干信息。音讯可能传播事件内容,从而将事件数据从源头传输到指定的目的地

1. 发送的音讯符合规范,那么它就是一个无效的 CloudEvent
2. 反对的云厂商包含微软,谷歌,阿里,甲骨文等

那咱们来看事件和订阅者的关系,事件和订阅者能够是 一对多、一对一、多对一 ,但事实上事件和订阅者的关系是 多对多

事件驱动的应用场景

微服务解耦,跨集群通信

兼顾遗留,零碎对接

游走在云与非云中

局部 AOP 类场景

流计算

Event Bus

简略来说,Event Bus 次要的性能是接管音讯、解决音讯、转发音讯,作为发布者和订阅者中转站的角色

公布订阅模式

发布者通过调度核心将音讯发送给订阅者。调度核心解决公布与订阅者之间的关系,保障音讯能够送达订阅者手中

最常见的是 并行执行 程序执行

MASA 事件处理

MASA 是如何进行事件处理的?

MASA 事件处理次要分为两局部一个是MASA Dispatcher,另一个是MASA DDD

MASA Dispatcher>>

Event Bus>> 过程内事件总线

Integration Event Bus>> 集成事件总线(跨过程)

MASA DDD>>Domain Event Bus>> 畛域事件总线 (主动协调过程内事件和集成事件调度)

通过后面的学习,咱们曾经理解了 Event Bus 和 MASA 事件处理流程,那 MASA Event Bus 是怎么样的一个事件流程?

MASA Event Bus

发布者把事件公布到

关系链表反对个性 Handler 中间件分布式事务 UoW 更多 …

发送到订阅者

本次课程内容到这里就全副完结,CQRS 实战演示局部能够点击下方链接,观看直播回放。

.NET 现代化利用开发 – CQRS& 类目治理代码分析_哔哩哔哩_bilibili

如果你对咱们 MASA 感兴趣,无论是代码奉献、应用、提 Issue,欢送分割咱们

  • WeChat:MasaStackTechOps
  • QQ:7424099

退出移动版