Axon框架与JPA表更新比较

问题描述 投票:0回答:1

我是轴突框架的新手。我研究了CQRS模式的理论。我知道,CUD与读取操作是分开的,它们都构成2种不同的服务。我的假设是我将有2个具有相同表和关系的数据库(CUD将具有未索引表,read将具有完全索引表),这些数据库必须同步。现在,我开始着眼于CQRS命令的实现部分已经完全理解成为一场噩梦。我运行了一些示例,发现创建的数据库表是完全不同的。如果有人经历过同样的情况,请尊重我的理解,请简单用词解释在轴突框架中有何不同

spring-boot spring-data-jpa cqrs axon
1个回答
0
投票

[CQRS指示您将在一个“应用程序领域” /上下文中拥有两个不同的模型,即命令模型和查询模型。

从存储角度来看,两种模型的表示方式完全取决于实现细节,而您假设您将使用带/不带索引表的常规RDBMS。

同步问题再次是一个完全不同的问题,在该问题上,您又有几种选择。就目前而言,我对Axon有很好的理解,所以让我分解一下从其角度来看的选择:

命令模型存储:您可以选择按原样存储命令模型,也可以选择通过事件源存储。第一个解决方案(Axon首选将其称为“状态存储方法”)意味着您将拥有命令模型的相对简单的实体格式。另一方面,事件源解决方案强制使用事件存储。从命令模型Repository中检索后,将创建命令模型的空实例,并且该实例已发布的所有事件将针对该空版本进行重放。每次您检索命令模型时,都会有效地重新创建它。

查询模型存储:

您可能已经注意到,Axon在这里根本没有做出选择。用户使用哪种存储机制完全取决于用户。

Model Synchronization:

如前所述,可以想象有几个选项。 Axon选择的选项是事件驱动的体系结构。因此,命令模型接收命令(执行某种操作的意图请求)并决定该请求。结果,将发布事件,有效地“事实化”决策。然后,此事件异步传播到对该事件感兴趣的每个组件。例如,这些“组件”是更新您在应用程序中派生的查询模型的类。
希望这对您可能遇到的Darshu问题有道理!

© www.soinside.com 2019 - 2024. All rights reserved.