写点什么

体验构建反应式事件驱动的 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:103306
用户头像

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

关注

评论

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

重塑商品热度洞察:关键字搜索API返回值中的深度商品热度分析新视角

代码忍者

API 接口 API 测试

fabric.js 实现服装/商品定制预览效果

秦少卫

开源项目 FabricJS Fabric.js 开源项目介绍

​​万界星空科技低代码云mes,更适合中小企业的mes系统

万界星空科技

低代码 低代码平台 mes 云mes 万界星空科技

单条记录大小增长倍数和ibd文件大小的增长倍数不成正比

GreatSQL

数据库 greatsql

“JVM” 上的AOP:Java Agent 实战

阿里技术

Java spring 阿里 aop

华为云重磅参会 KubeCon China 2024,精彩议程揭晓 !

华为云原生团队

云计算 容器 云原生

火山引擎ByteHouse助力车企实现高性能数据分析

字节跳动数据平台

大数据 数据仓库 云原生 Clickhouse

Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI项目落地进程

汀丶人工智能

人工智能 大模型 xinference

亚信安慧AntDB-M聚合下推—加速你的数据分析查询

亚信AntDB数据库

AntDB

【技术分享】用AWS EC2搭建WordPress

伊克罗德信息科技

亚马逊云科技 EC2 MYSCALE

智谱AI与和鲸科技签署战略合作协议,共拓大模型产业应用与人才培养新未来

ModelWhale

人工智能 大模型 ChatGLM

新增姿态估计标注,以及模型应用优化|ModelWhale 版本更新

ModelWhale

鉴权 模型应用 模型服务

非扁平网络场景下,基于开源istio治理CCE多集群

华为云开发者联盟

开源 CCE 企业号 8 月 PK 榜 企业号2024年8月PK榜

【ACL2024】面向Stable Station的交互式多轮Prompt生成模型DiffChat

阿里云大数据AI技术

人工智能 阿里云 acl 论文 DiffChat

1688代采集运系统:跨境电商世界的神奇魔法棒

tbapi

1688代采系统 1688代采集运系统

从0到1:AI与低代码如何推动企业创新

天津汇柏科技有限公司

低代码 AI 人工智能

AI驱动的商品企划软件 零售企业市场致胜的智能化利器

第七在线

数业智能心大陆 AI解答如何应对焦虑

心大陆多智能体

智能体 焦虑 AI大模型 心理健康 数字心理

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