【问题标题】:Axon Framework vs JPA table update ComparisionAxon Framework 与 JPA 表更新比较
【发布时间】:2020-04-19 19:53:12
【问题描述】:

我是轴突框架的新手。我研究了CQRS模式的理论。我知道 CUD 与读取操作是分开的,它们都构成了 2 个不同的服务。我的假设是我将有 2 个具有相同表和关系的数据库(CUD 将具有非索引表,读取将具有完全索引表)必须同步。现在我开始看CQRS命令部分的执行,完全理解成了一场噩梦。我运行了几个示例,发现创建的数据库表完全不同。如果有人经历过同样的情况,请您用简单的话解释一下轴突框架在我的理解方面有何不同

【问题讨论】:

    标签: spring-boot spring-data-jpa cqrs axon


    【解决方案1】:

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

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

    同步问题又是一个完全不同的问题要解决,您再次有多种选择。就目前而言,我对 Axon 有很好的了解,所以让我从它的角度分解选择了什么:

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

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

    模型同步:如前所述,有几种可以想象的选择。 Axon 选择的选项是事件驱动架构。因此,命令模型接收命令(意图执行某些操作的请求)并根据请求做出决定。作为结果,将发布一个事件,有效地“实​​现”决策。然后,此事件会异步传播到对其感兴趣的每个组件。例如,这些“组件”是更新您在应用程序中派生的查询模型的类。

    希望这能解决您可能遇到的 Darshu 问题!

    【讨论】:

    猜你喜欢
    • 2017-08-25
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多