• 使用 CRUD,当您通过创建、更新、删除进行状态更改时,您并没有明确捕获它发生的原因。例如,如果您正在对客户执行更新,为什么会发生这种情况?他们的地址变了吗?他们的贴现率有变化吗?使用基于 CRUD 的方法,您并不确切知道,您必须根据所做的更改来暗示它。使用 CQRS,您的所有命令都
  • 我一直觉得事件溯源很吸引人。我们在开发人员的大部分时间里都在将数据保存在数据库表中——以一种完全不同的方式来做这件事似乎几乎是深不可测的。然而,这就是事件溯源。它有明显的好处,但还有许多潜在的问题。首先,您需要确定事件溯源是否适合您要解决的问题。为您的系统决定是使用事件源还是基于 C icon
  • 这是软件架构中一个鲜为人知的模式,值得更多关注。一个 Josh icon
  • 使用Spring Boot和EventStoreDB的Event Sourcing:案例展示了基本的事件追溯流程。它使用EventStoreDB进行事件存储,使用Spring Data JPA支持PostgreSQL进行读取模型。 所展示的 icon
  • 项目的结构与讨论空格与制表符或缩进大小一样敏感。当我们进入某人的公寓时,即使它是根据宜家的默认设置进行装饰的,它看起来也总是有些不同。这是绝对合理的。不同的公寓大小和房间布局会有所不同。它类似于我们的软件项目。每个都有略微不同的假设和特征,但可以区分出一些共同的特征,对吗?和 icon
  • MediatR是由 Jimmy Boggard 介绍的一个流行的 C# 库,它为我们提供了一个在 .Net中的 icon
  • CQRS(命令查询职责分离)的核心有一个简单的目标:将读取和写入分离为单独的模型。这个简单的想法可以采用多种形式,具体取决于使用它的上下文以及所使用的实现选择。这篇文章试图分析 CQRS 的各种形状,以及所有这些形状如何支持解耦读写的中心思想。世界变得复杂了。信息系统不再只是简单的 icon
  • Akka Serverless 是一种平台即服务,它结合了 API 优先、无数据库编程和无服务器运行时。开发人员不必设置和调整数据库、维护和供应服务器、配置或运行计算集群。开发人员唯一负责的是构建无服务器服务。相比之下,Akka Serverless 提供了高级数据访问模式,如 icon
  • 展示了如何使用两种不同的代码路径实现 CQRS: 命令部分通过Spring Data JPA 实现 通过jOOQ的查询部分 用例是一个银行应用程序,它提供了一个 REST 层,允许客户端调用任何部分。在同一个项目中创建另一个带注释@SpringBoo icon
  • Materialize 是一个流式数据库,它获取来自不同来源(如 Kafka、PostgreSQL、S3 存储桶等)的数据,并允许用户编写聚合这些数据的物化视图,并允许您使用纯 SQL 查询这些视图。与传统的物化视图不同,Materialize 旨在将数据保持在连续状态并保持视图增量 icon
  • 这篇文章将介绍一种使用DDD和Clean Architecture构建应用程序的观点性方法。我所说的 "观点 "是指,我将论证解决应用程序设计和架构中几个众所周知的问题的特定方式。当然,这并不意味着这是实现这些问题的唯一正确方法。然而,它是DDD和架构领域长期以来的研究过程和 icon
  • ECommerce Microservices是一个虚构的电子商务,基于不同的软件架构和技术,如微服务架构、垂直切片架构、CQRS 模式、领域驱动设计、事件驱动架构、收件箱和发件箱模式,并使用 Postgres 写入端和 MongoDb 读取端等。该项目正在进行中,随着时间的推移将添 icon
  • 在某些情况下,我们只需要检索实体的选定属性。本教程解释了如何以不同的方式实现这一目标。一个 API 返回包含所有属性的所有客户的列表。但通常情况下,不需要获取所有属性。从数据库中只检索所需的数据始终是一个好习惯。这样做的主要原因是为了提高应用程序的性能。下面,我将展示如何以不同的方式 icon
  • 在本教程中,我们将学习实现一个简单的 SpringBoot 应用程序,该应用程序实现了 CQRS 原理。在这个用例中,我们将使用 Axon 4 框架。为了存储事件,我们将使用 icon
  • 我们将设计一个基于经典遗留应用程序的进化事件驱动系统,类似于在世界各地的许多组织中可以找到的系统。这个练习将向我们展示事件驱动架构的潜力。 消息驱动与事件驱动区别让我们考虑两个需要通过信号相互传递信息的松散耦合组件。在这两种范式中,组 icon
  • 事件溯源从业者使用事件捕获方法(如事件风暴和事件建模)设计他们的领域。这项工作的输出通常是真实或数字白板上的大量便利贴。从这个模型中,开发人员必须填写很多关于命令、事件和读取模型的细节来构建一个工作系统。这个映射过程是手动的,发生在他们的脑海中。人工检查和测试套件可确保代码与即时贴匹配。这个 icon
  • 结论:如果我正在应用 CQRS 和垂直切片,这意味着在命令方面我将使用存储库来构建和返回聚合。聚合是一致性边界,负责由不变量控制的状态更改。在查询方面,由于我没有进行任何状态更改,因此我不需要聚合。聚合可能是我可能需要将更多数据转换为我需要创建的结果的方式。查询是返回数据的特定用例。 icon