Lagom零时:CQRS概念

2024-04-30 12:08
文章标签 概念 cqrs 零时 lagom

本文主要是介绍Lagom零时:CQRS概念,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CQRS代表Command Query Responsibility Segregation。

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

如果不考虑用户界面,您无法真正享受CQRS的优势。创建它可以明确地捕获用户目的,同时考虑到客户端验证和命令结构也可以稍微平衡。

传统方法

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

CRUD方法的问题

多层表示的这种结构将变得相当复杂,然而,人们可以做的仍然是将其解析为一个概念表示,其充当所有显示之间的概念集成点。

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

CQRS方法

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

CQRS的好处

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

CQRS中的写入侧与读取侧

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

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

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

谨慎使用CQRS

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

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

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

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

这篇关于Lagom零时:CQRS概念的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/948826

相关文章

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo

【MRI基础】TR 和 TE 时间概念

重复时间 (TR) 磁共振成像 (MRI) 中的 TR(重复时间,repetition time)是施加于同一切片的连续脉冲序列之间的时间间隔。具体而言,TR 是施加一个 RF(射频)脉冲与施加下一个 RF 脉冲之间的持续时间。TR 以毫秒 (ms) 为单位,主要控制后续脉冲之前的纵向弛豫程度(T1 弛豫),使其成为显著影响 MRI 中的图像对比度和信号特性的重要参数。 回声时间 (TE)

计算机网络基础概念 交换机、路由器、网关、TBOX

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、VLAN是什么?二 、交换机三、路由器四、网关五、TBOXTelematics BOX,简称车载T-BOX,车联网系统包含四部分,主机、车载T-BOX、手机APP及后台系统。主机主要用于车内的影音娱乐,以及车辆信息显示;车载T-BOX主要用于和后台系统/手机APP通信,实现手机APP的车辆信息显示与控

01 Docker概念和部署

目录 1.1 Docker 概述 1.1.1 Docker 的优势 1.1.2 镜像 1.1.3 容器 1.1.4 仓库 1.2 安装 Docker 1.2.1 配置和安装依赖环境 1.3镜像操作 1.3.1 搜索镜像 1.3.2 获取镜像 1.3.3 查看镜像 1.3.4 给镜像重命名 1.3.5 存储,载入镜像和删除镜像 1.4 Doecker容器操作 1.4

【机器学习-一-基础概念篇】

机器学习 定义分类算法 应用 定义 机器学习最早是被Arthur Samuel 提出的一个概念,指计算机无需明确编程即可学习的研究领域。1950年他发明的跳棋程序,这个人机对弈游戏让他的声名鹊起,机器学习这个概念才进入大众的是视线。 在这个跳棋程序里,他编程了一种算法,这个程序与Arthur下了数万次跳棋,计算机逐渐学会了下在哪里有更大的可能会赢得比赛,哪里会输,通过这种方法,最

【吊打面试官系列-Redis面试题】说说 Redis 哈希槽的概念?

大家好,我是锋哥。今天分享关于 【说说 Redis 哈希槽的概念?】面试题,希望对大家有帮助; 说说 Redis 哈希槽的概念? Redis 集群没有使用一致性 hash,而是引入了哈希槽的概念,Redis 集群有 16384 个哈希槽,每个 key 通过 CRC16 校验后对 16384 取模来决定放置哪个槽, 集群的每个节点负责一部分 hash 槽。

AI辅助编程里的 Atom Group 的概念和使用

背景 在我们实际的开发当中,一个需求往往会涉及到多个文件修改,而需求也往往有相似性。 举个例子,我经常需要在 auto-coder中需要添加命令行参数,通常是这样的: /coding 添加一个新的命令行参数 --chat_model 默认值为空 实际上这个需求涉及到以下文件列表: /Users/allwefantasy/projects/auto-coder/src/autocoder/auto

读软件设计的要素04概念的关系

1. 概念的关系 1.1. 概念是独立的,彼此间无须相互依赖 1.1.1. 一个概念是应该独立地被理解、设计和实现的 1.1.2. 独立性是概念的简单性和可重用性的关键 1.2. 软件存在依赖性 1.2.1. 不是说一个概念需要依赖另一个概念才能正确运行 1.2.2. 只有当一个概念存在时,包含另一个概念才有意义 1.3. 概念依赖关系图简要概括了软件的概念和概念存在的理

【生物信息学算法】图算法1:概念和算法

文章目录 1. 图的定义、分类、表达方式图的定义图的分类表达方式Python实现 2.相邻节点和度概念定义python实现 3.路径、距离和搜索路径和距离搜索环 4.图论中的欧拉定理 1. 图的定义、分类、表达方式 图的定义 图G可以由两个集合来定义,即G=(V,E)。其中,V是对象的集合,称为图的顶点或节点; E是V中(u,v)顶点对的集合,称为边或弧,表示u和v之间的关系

数据库系统原理概念整理(备考)

基本概念 数据模型 描述数据的概念和工具 关系数据模型 用关系描述数据 数据模型 包含三个方面 结构 操作 约束 对应于 关系数据模型 关系(表) 关系代数 主外键约束,断言 逻辑数据模型:详尽的描述数据,不关心具体的物理层实现,如关系数据模型中,设计实体及实体间的关系,属性,约束等等。业务逻辑的体现。 逻辑模型 --------查询处理----------物理模型 逻辑方面:SQL结构化查询