写点什么

领域事件与最终一致性

  • 2015-10-08
  • 本文字数:1085 字

    阅读完需:约 4 分钟

领域事件代表了领域中发生的某些事情, 当 Eric Evan 原创的 DDD 书本发行的时候并没有把它定义为一种领域驱动设计 (DDD) 模式,但现在在DDD 中已经是一种战术元素,而且是一个完整的领域模型成员。 最终一致性 是一种改进规模和性能的设计方法,而且领域事件能作为触发器承载领域信息进而协助实现, Florin Preda 在最近的博客文章 中作出了解析。

对于多数开发者都很熟悉的事务型一致性工作流中,客户在系统中执行一个命令,这个系统为维护事务中的领域一致性的需要而运行所有操作。当操作全部成功或全部失败的时候客户会收到反馈,没有中间地带。

对于常见于分布式系统的最终一致性工作流中,客户同样在系统中执行一个命令,但这个系统只为维护事务中的领域一致性运行部分的操作。剩余的操作在系统前后一致后运行。

Preda 指出虽然事务型一致性看起来更加直观和容易使用,但他觉得某些场景中最终一致性有一点优势。在他描述的四种场景中,用 A 操作之后进行 B 操作来作为例子:

  1. 操作 B 执行时间长。
  2. 操作 B 本来就是异步的,例如依赖了一个异步机制。
  3. 操作 B 是通过在相同的 有界上下文 中使用不同于操作 A 的聚合
  4. 操作 B 在不同于操作 A 的有界上下文中执行。

Preda 将场景 3 和 4 关联到领域驱动设计(DDD),他相信在这两种场景中选择最终一致性将引导到比使用传统事务工作更好的设计。领域事件在这里可以很有用。领域事件是在领域专家相关的领域中发生的某些事情的代表,它们通过作为触发器启动工作流的下一个步骤和承载领域信息需求来促进最终一致性。

写同一主题的 Mike Mogosanu 声称在现实世界的用例中 事务型一致性工作流很罕见;一个业务流程经常包含一系列的用例和使用 Unit of Work (UoW) 模式去持久化一组更改,从技术观点来看,它幼稚的解决方案会将事情复杂化,尤其是在分布式应用中。

Mogosanu 相信一个包含不同有界上下文的业务流程应该考虑变为最终一致性,其在每个有界上下文中有最少一个领域用例。领域用例负责让聚合保持始终如一,在这里 UoW 模式会很有用,而且公布触发其它用例启动的领域事件,最终可以把整个系统带到一致的状态。

为了举例说明他的想法,在实现用 Azure Service Bus 消息系统来做事件传送的 C# 应用 中,Preda 使用了 Vaughn Vernon 在书本 实现领域驱动设计 中提到的设计的一个简化版本。

查看英文原文: Domain Events and Eventual Consistency


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-10-08 19:005197

评论

发布
暂无评论
发现更多内容

如何使用 NFTScan NFT API 在 Gnosis 网络上开发 Web3 应用

NFT Research

API NFT\ NFTScan

喜讯|极狐GitLab 通过信通院汽车软件研发效能成熟度模型能力评估,荣获全面级!

极狐GitLab

企业云桌面解决方案

青椒云云电脑

云桌面 云桌面解决方案

ARBT阿尔比特质押挖矿系统开发丨源码详情

l8l259l3365

Authing 分级管理员重磅上线,实现权限超细粒度分级管控

Authing

权限管理 Authing 管理员

跟着坚果构建首个蓝河应用

坚果

坚果派 蓝河应用 蓝哥OS

Linux升级指南:保持系统安全和高效运行

不在线第一只蜗牛

Linux 架构 运维 前端

LockBit勒索攻击大杀四方,超千家企业被攻击,金融、能源等成重灾区

德迅云安全_初启

深入探究音视频开源库WebRTC中NetEQ音频抗网络延时与抗丢包的实现机制 | 主赛道

开发人员都在用的数据可视化工具

2D3D前端可视化开发

大数据 数据分析 数据可视化 数据可视化工具 可视化图表

大数据、人工智能与大模型:技术融合的未来趋势

liang

关于 K8s 的一些基础概念整理

EquatorCoco

Kubernetes K8s 多集群管理 多集群

【第七在线】为什么智能商品管理是对传统商品管理模式的颠覆?

第七在线

基于图卷积神经网络和卷积注意力模块的癫痫检测

统一入口,全面提升工作效率,WorkPlus超级APP引领数字化办公新潮流

WorkPlus

移动图形工作站有哪些价格实惠的推荐?

青椒云云电脑

图形工作站

客户说|PolarDB分布式版助力韵达“客户管家”全面上线

阿里云瑶池数据库

数据库 阿里云 云原生 韵达

借贷协议 Tonka Finance:铭文资产流动性的新破局者

股市老人

2024新趋势下的“电力行业数字化转型建设方案”

优秀

数字化转型 电力 电力可视化

移动图形工作站电脑配置攻略

青椒云云电脑

图形工作站

2023锐炫显卡全面发展,让“英特尔蓝”成为GPU市场中的一抹亮色

E科讯

SD-WAN:解决Office 365卡顿问题的新途径

Ogcloud

网络 组网

WorkPlus:实现即时通讯的理想之选,专为企业打造的高效工具

WorkPlus

WorkPlus局域网即时通讯软件的领航者,连接高效协作的利器

WorkPlus

冠赢互娱基于 OpenKrusieGame 实现游戏云原生架构升级

阿里巴巴云原生

阿里云 云原生

AI赋能金融创新:技术驱动的未来金融革命

EquatorCoco

人工智能 金融 AI赋能

QCN9274 QCN6274|A Comprehensive Guide for Wallys WiFi7 Offering

wallyslilly

领域事件与最终一致性_语言 & 开发_Jan Stenberg_InfoQ精选文章