燃爆上海 5·23-24,AICon 大模型实战风暴,50+ 干货一网打尽,100% 日程上线 了解详情
写点什么

体验构建反应式事件驱动的 CQRS 应用

  • 2014-08-03
  • 本文字数:1143 字

    阅读完需:约 4 分钟

Duncan DeVore 在一次近期的演讲中谈到,设计一个不变的领域模型并与之进行反应式(Reactive)编程对我们的新架构而言是非常重要的需求,Duncan 在演讲中还对他构建分布式应用的体验进行了分享。该分布式应用基于 CQRS 最终一致性事件溯源 event sourcing ),并且是采用 Akka Scala 编写的,

Duncan 是一家能源公司的工程副总裁,他对 Command Query Responsibility Separation (CQRS,即命令查询职责分离) 进行了描述:将命令与查询分离到两个对象中,使它们在其他方面可以进行单独的优化,根据 Duncan 的经验,这是一种非常常见的需求。对于命令(Commands)而言,虽然它们会改变状态,但是它们并不涉及数据的编辑,它们只是行为,是一个对执行某个任务或某个动作的请求,它们更适合作为一条消息进行传递。而查询(Queries)则是位于数据存储之上的一层很轻薄的读取层,它并不是领域的映射,相反,数据通常是基于抓取(fetch)和页面结构(screen structure)存储的,并且拥有一个可以读取所有需要数据的键。将写和读分离的一个重要挑战是最终一致性,它会使得在写发生一段时间后,读取才可能展示出相同的数据。

当今大多数的业务应用都依赖对当前状态的存储,而 Duncan 认为这是由于采用了关系型数据库系统( RDBMS )的副作用。相比而言,事件溯源是针对事件的捕获,这是一种贴合自然的行为,它不会保持当前的状态,它保持的是状态的根源。我们来讲一个可以阐述这种方式优势的例子,有一个这样的需求,我们需要现有的购物车能够报告所有用户在购物车(取出商品后)所产生的订单。如果一个系统只是跟踪当前的状态,那么它只能报告新的订单,而对于基于事件的系统,所有订单的事件都保留在系统里,唯一需要做的就是向系统添加报告这项功能。

在成熟的业务模型中,行为跟踪的概念很常见。举一个例子,在一个银行账户中,每一比交易事务,比如存款和提款都会被记录下来。我们之所以信任当前的状态是因为该状态可以通过重放所有前面的交易事务来重新创建,而且该状态也可以通过对账来确认有效性。

Duncan 强调了与事件打交道的两个技术性影响,第一个是存储系统成为了一种只有追加操作(译者注:即没有更新)的架构,这种架构更加容易分发,第二个是水平分区变得更加容易,因为抓取数据时使用的只是一个单独的键。

Duncan 最后引用了他自己的一段话进行了总结:

我相信将 CQRS 和事件溯源结合可以为构建遵循反应式宣言( Reactive Manifesto )的分布式应用提供一种清晰且简明的方式。

反应式宣言 Reactive Manifesto )于 2013 年九月发布,目前已经有 6,300 人签署了该宣言。

Duncan 是一本即将出版的名为《构建反应式应用》(“Building Reactive Applications”)的图书的联合作者。

查看英文原文: Experiences Building a Reactive Event-Driven CQRS Application

2014-08-03 02:103167
用户头像

发布了 52 篇内容, 共 23.6 次阅读, 收获喜欢 5 次。

关注

评论

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

OpenAI Dall - E 进化之路:从1到3,图像生成的震撼变革之旅

测试人

人工智能

《计算机组成及汇编语言原理》阅读笔记:p86-p115

codists

计算机组成及汇编语言原理

测试人生 | 招聘严峻期从面试无力感,到一天2个offer的一些经验分享(内附美团、字节、快手等面试题)

测吧(北京)科技有限公司

测试

ES已死,文本检索永生

Zilliz

elasticsearch 混合检索 Milvus 2.5 Sparse-BM25 文本检索

腾讯不愧是大厂,面试太难了

王中阳Go

Go 腾讯 面试

小红书运营:流量增长秘籍全解析

科普小能手

小红书 运营干货 营销技术

低代码开发平台哪些好用?推荐这六款!

优秀

低代码 低代码开发平台 低代码平台

CIKM 2024 | 京东电商搜索:深度强化学习的探索与落地

京东零售技术

算法 京东 论文

火山引擎边缘云全面升级智能边缘,推动 AI 应用场景拓展与技术创新

火山引擎边缘云

火山引擎 AI 大底座 大模型、 边缘智能

Axure RP 8 for Mac(好用的交互原型设计软件)v8.1.0.3400中文激活版

小玖_苹果Mac软件

2025年AI产业发展十大趋势

易观分析

应用场景多元化探索,雏形初现 ——《2025年AI产业发展十大趋势》应用篇总结

易观分析

IT资产管理与IT库存管理的区别

ServiceDesk_Plus

资产管理 IT资产管理

软件测试一天2个offer经验分享(附美团、字节、快手等面试题)

测试人

软件测试

核心大应用发布效率提升70%,宿主机容器先缩后扩模型分享

Qunar技术沙龙

后端

体验构建反应式事件驱动的CQRS应用_Scala_Jan Stenberg_InfoQ精选文章