首页 > 图灵资讯 > 技术篇>正文

Lagom零时:CQRS概念

2023-05-31 09:12:15

CQRS代表Command代表Commandd Query Responsibility Segregation。

个人与数据系统交互的方法是将其视为CRUD数据存储。通过这个,我的意思是我们有一些记录结构的心理模型。我们考虑在完成后生成新的记录,扫描记录,更新和删除现有记录。在最简单的情况下,我们的交互是关于存储和检索这些记录的。

如果你不考虑用户界面,你就不能真正享受CQRS的优势。考虑到客户端验证和命令结构也可以稍微平衡,创建它可以清楚地捕捉用户的目的。

传统方法

当这种情况发生时,我们开始可视化各种知识表达。移动数据后,您可以使用此信息的各种显示,所有这些都可能是完全不同的表示。开发人员通常构建自己的抽象模型来控制模型的核心组件。如果您使用域模型,这通常是域的复杂描述。您通常会在抽象模型的点上创建一个持久的存储。

CRUD方法的问题

多层表示的结构将变得相当复杂。然而,人们所能做的仍然是将其分析为概念表示,作为所有显示器之间的概念集成点。

随着我们的需求变得更加先进,我们倾向于逐渐摆脱这种模式。我们倾向于以与记录完全不同的方式查看知识,并可能将多个记录合并为一个或通过组合信息形成虚拟记录。在更新中,我们倾向于注意到验证规则,它们可以保持知识的结合,甚至推断出要保留的知识,这与我们提供的完全不同。

CQRS方法

Lagom零时:CQRS概念_ci

通过分离模型,我们通常意味着完全不同的对象模型最有可能在几个逻辑过程中或不同的硬件上运行。在线示例将是查看用户查看使用查询模型执行的互联网页面。如果他们开始更改,他们将修改路由到单独的命令模型进行处理,并将更改传递给查询模型以显示更新状态。

CQRS的好处
  • CQRS允许您将负载与读取和写入分开,并允许您独立扩展每一个。如果您的应用程序在读写之间看到增益不平等,通常非常方便。即使没有这个,你也会对双方采取完全不同的改进方法。
  • CQRS用于不匹配域,会增加复杂性,从而降低生产力,增加风险。
CQRS中的写入侧和读取侧

这种模式的优点是写入和读取之间的关注点分离。然后,实体可以专注于更新命令,并优化各种查询和报告操作的读取侧。试图包装阅读和写入操作的单个概念模型可能不是很好。 重要的是要意识到写入侧和读取侧有完全不同的需求,并将这些注意力分开,以便独立地为写入侧和读取侧提供最佳体验。

这种分离对可伸缩性也很有用,因为读取端可以独立于写入端扩展到许多节点,通常在读取端需要大量的可伸缩性。

分离读取侧的结果最终是一致的,即在读取侧看到写入侧的更新可能需要几秒钟。

使用CQRS要谨慎

不是银弹,每个案例都不适合这种CQRS方法。

很多系统都适合CRUD心理模型,应该从这种风格中消失。CQRS可能是所有相关人员的重要精神飞跃,所以除非利润绝对值得跳跃,否则不应该解决。CQRS应该只用于系统的特定部分,而不是整个系统。

Lagom是基于Akka和Play框架构建的开源微服务框架。Lagom Perstence利用Evententence 帮助实现解耦架构的Sourcing和CQRS。

您可以在以下博客中找到Lagom如何处理事件采购和CQRS的真实例子:

上一篇 集合简概
下一篇 视频剪辑软件哪个好

文章素材均来源于网络,如有侵权,请联系管理员删除。