写点什么

领域事件与最终一致性

  • 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:005324

评论

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

MySQL 5.7 DDL 与 GH-OST 对比分析

vivo互联网技术

MySQL ddl GH-OST

重磅!华为中国政企明确要把服务打造成为核心竞争力

新消费日报

Downie 4 for Mac v4.7.26中文最新版 苹果视频下载器

理理

Downie 4许可证 Mac视频下载器 Downie 4 下载 Downie 4 Mac版

MacDroid mac中文破解版:实现苹果设备与安卓设备数据传输

理理

数据传输 Mac软件 MacDroid中文 MacDroid mac破解版

Embedding空间中的时序异常检测

百度Geek说

安全 异常检测

聚焦中小企业实际需求,华为云Flexus X实例推动中小企业数字化转型愿转敢转

轶天下事

聚焦中小企业上云用云需求,华为云Flexus X实例带来双倍性能、跃级体验

YG科技

手把手教你如何参与开源,详细实用~

XIAOJUSURVEY

GitHub 开源 PR 贡献者 Issue

飞天发布时刻:大数据AI平台产品升级发布

阿里云大数据AI技术

人工智能 大数据 MaxCompute EMR PAI

哪里有Termius中文安装包?Termius中文汉化破解资源分享

理理

SSH ssh客户端 Termius中文版 Termius使用教程

一站体验沉浸式非遗音乐,华为音乐结合空间音频打造文化潮流专区

最新动态

榜上有名!望繁信科技荣登2023中国最具商业潜力榜

望繁信科技

流程挖掘 流程智能 上海望繁信科技 中国现代企业服务

无缝升级云服务,华为云Flexus X实例带来零门槛极致体验

YG科技

低代码实践:题型物料化设计(四)

XIAOJUSURVEY

低代码 schema 源码解读 配置化 设置器

Mac红巨星粒子插件:Red Giant Trapcode Suite 激活版

你的猪会飞吗

Mac软件 mac破解软件下载 mac插件下载

图片降噪Topaz DeNoise AI中文版下载 Topaz DeNoise AI安装教程 含激活工具

理理

数字转型得力伙伴:华为云Flexus X实例打造云计算应用新标杆

轶天下事

​MES系统如何精准采集与对接设备数据,全面优化设备管理

万界星空科技

数据采集 mes 设备管理 万界星空科技 设备能源管理

专题 | IAM业界热度不减,2024市场持续井喷(一)

芯盾时代

身份安全 iam 统一身份认证 零信任

最好用的markdown写作工具Ulysses for Mac中文直装版

理理

markdown Markdown文本编辑器 Ulysses中文版 Ulysses破解版

实战从零开始实现Raft|得物技术

得物技术

分布式 raft 企业号2024年7月PK榜

告别Hugging Face模型下载难题:掌握高效下载策略,畅享无缝开发体验

汀丶人工智能

人工智能 大模型

休闲手棋游戏:大富翁 10 for Mac 中文原生版可联机

你的猪会飞吗

Mac游戏下载 Mac破解软件 Mac软件下载站

数字化转型正当时!华为云Flexus X实例助力中小企业高效便捷上云

轶天下事

商品搜索API的未来:1688阿里巴巴引领智能化电商新趋势

代码忍者

API 接口 API 文档 API 测试

Bartender 4 for Mac(应用图标管理工具)v4.2.25中/英直装版

理理

Mac软件 Bartender 4 菜单栏应用图标管理

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