.NET现代化应用开发 - CQRS&类目管理代码剖析
九月MASA Framework 进行了第四次课程直播,课程主题为类目管理的开发,直播中进行了理论讲解和实战演练(CQRS实践的演示可直达推文底部观看直播回放)
开始环节我们围绕三个点介绍CQRS的原理
首先,我们先对之前的事件流概念进行简单的回顾
事件风暴回顾 - 事件流
接下来到我们本节课的主题内容
CQRS
命令查询职责分离
大白话:读和写分开
信息来源:https://docs.microsoft.com/zh-cn/azure/architecture/patterns/cqrs
优势
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
发布者把事件发布到Even Bus
▼
关系链表支持特性Handler中间件分布式事务UoW更多...
▼
发送到订阅者
本次课程内容到这里就全部结束,CQRS实战演示部分可以点击下方链接,观看直播回放。
如果你对我们MASA感兴趣,无论是代码贡献、使用、提 Issue,欢迎联系我们
WeChat:MasaStackTechOps
QQ:7424099

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
华为 EROFS 为 Linux 6.1 提供基于 FSCache 的共享域支持
EROFS 是 Enhanced Read-Only File System 的首字母缩写,是由华为开发的增强型只读文件系统。在 2018 年年中,EROFS 就首次被引入到 Linux 内核 4.14 版本的暂存区,随后经过一年的持续开发,EROFS 文件系统驱动程序在 Linux 内核 5.4 版本中被合并进了主线。 EROFS 与其他只读文件系统不同,该系统旨在构建一个新的文件管理系统,从而提高磁盘性能和速度,同时节省磁盘空间以减少不必要的占用。据华为介绍,EROFS 文件系统的随机读取速度平均可以提升 20%,最高甚至可达 200%,与传统的 EXT4 相比大幅提升了系统效率。 作为一项最初为 Android 设备所准备的只读文件系统,如今该技术则是扩大了其适用范围。近日工程师(看邮箱是来自于阿里、字节)为 EROFS 提供了代码更新,此次更新带来了基于 FSCache 的共享域支持,目的是为了能够在 EROFS 文件系统镜像之间共享数据 blob(同一个 blob 在多个 EROFS 文件系统中共享)。 对于 EROFS 和 Linux 6.1 来说,这个基于 FSCache...
- 下一篇
实时营销引擎在vivo营销自动化中的实践 | 引擎篇04
作者:vivo 互联网服务器团队 本文是《vivo营销自动化技术解密》的第5篇文章,重点分析介绍在营销自动化业务中实时营销场景的背景价值、实时营销引擎架构以及项目开发过程中如何利用动态队列做好业务流量隔离,动态发布,使用规则引擎来提升营销规则的配置效率等几种关键技术设计实践。 《vivo营销自动化技术解密》系列文章: vivo营销自动化技术解密|开篇 设计模式如何提升 vivo 营销自动化业务扩展性 | 引擎篇01 状态机引擎在vivo营销自动化中的深度实践 | 引擎篇02 工作流引擎在vivo营销自动化中的应用实践 | 引擎篇03 一、背景 营销自动化的触达场景按照时效性划分主要有两大类: 1. 离线目标用户群发。 通过对业务离线数据的分析决策,制定合适的运营策略对目标用户进行群发触达。典型的场景有:新品推荐、活动预热、定期关怀、用户召回等。 2.实时个性化触达。 通过分析单个用户在一段指定时间内的行为轨迹,进行个性化的实时性营销触达。典型的场景有:支付提醒,满足活动条件触达等。 离线目标用户群发一般根据活动规则,T+n或者周期性对大数据离线用户数据进行批处理分析查询,获取满足条件的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路