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

相关文章

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

Java Instrumentation从概念到基本用法详解

《JavaInstrumentation从概念到基本用法详解》JavaInstrumentation是java.lang.instrument包提供的API,允许开发者在类被JVM加载时对其进行修改... 目录一、什么是 Java Instrumentation主要用途二、核心概念1. Java Agent

Kotlin 协程之Channel的概念和基本使用详解

《Kotlin协程之Channel的概念和基本使用详解》文章介绍协程在复杂场景中使用Channel进行数据传递与控制,涵盖创建参数、缓冲策略、操作方式及异常处理,适用于持续数据流、多协程协作等,需注... 目录前言launch / async 适合的场景Channel 的概念和基本使用概念Channel 的

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

一文带你迅速搞懂路由器/交换机/光猫三者概念区别

《一文带你迅速搞懂路由器/交换机/光猫三者概念区别》讨论网络设备时,常提及路由器、交换机及光猫等词汇,日常生活、工作中,这些设备至关重要,居家上网、企业内部沟通乃至互联网冲浪皆无法脱离其影响力,本文将... 当谈论网络设备时,我们常常会听到路由器、交换机和光猫这几个名词。它们是构建现代网络基础设施的关键组成

MySQL 事务的概念及ACID属性和使用详解

《MySQL事务的概念及ACID属性和使用详解》MySQL通过多线程实现存储工作,因此在并发访问场景中,事务确保了数据操作的一致性和可靠性,下面通过本文给大家介绍MySQL事务的概念及ACID属性和... 目录一、什么是事务二、事务的属性及使用2.1 事务的 ACID 属性2.2 为什么存在事务2.3 事务

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle

【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的车辆信息显示与控