当前位置: 首页 > 知识库问答 >
问题:

没有最终一致性的事件来源?

宋宇
2023-03-14
void ExecuteCommand(Command cmd) {
   // validate and stuff...
   var events = GenerateEvents(cmd);
   PersistAllSync(events);
   ApplyProjectionsSync(events);
   PublishAsync(events)
}

共有1个答案

柯捷
2023-03-14

我不是专家,但无论如何我可以试着回答这个问题。

为了获得事务一致性,我对生成的事件(在相同的聚合/事务范围内)进行分组,并将它们原子地应用到我的读取模型中。我还发布分组为事务的事件。它对我来说很好,所以这当然是可能的。

为了避免最终在本地读取模型中保持一致(这样我就可以在命令响应中返回新的、一致的状态),我还在事务中本地应用事件。只要你没有太多的阅读模型要更新,我想这应该不是一个问题。如果需要的话,您可以将其用于一些需要最终更新的已读模型,并以“正常”的方式处理其余的模型。

 类似资料:
  • 我经常在关于NoSQL,数据网格等的不同演讲中听到最终一致性。似乎最终一致性的定义在许多来源中有所不同(甚至可能取决于具体的数据存储)。 谁能简单解释一下最终一致性是什么,与任何具体的数据存储无关?

  • 我在网上找到两个定义: 顺序一致性——任何执行的结果都是相同的,就像所有处理器的操作都是按某种顺序执行的一样,每个处理器的操作按程序指定的顺序出现在这个顺序中。 最终一致性——如果没有对给定的数据项进行新的更新,最终对该项的所有访问都将返回最后更新的值。 定义对我来说很清楚。但是,当最终一致性不是顺序时,我没有得到。例如:mem 中的初始值为 0。水平轴是时间。 因此,有一些顺序,如果我们在 (x

  • 使用CQRS和事件存储,微服务之间的编排提供了最终的一致性,其中一个微服务中的更改需要一点时间传播到其他相关的下游系统(本质上是其他微服务)。如果数据非常关键,以至于两个微服务都应该具有很强的数据一致性,那么有什么选择呢?我能想到的一个选择是像数据网格那样的直写缓存,但这非常脆弱,特别是在分布式系统中。

  • 问题内容: 我在运行Jellybean(4.1-4.3)的设备中遇到HttpUrlConnection的一些问题,其中连接未关闭,并且执行多次后导致SocketException“打开的文件过多”。 我确实调用了HttpUrlConnection.disconnect()并在finally块中关闭了所有Inputstream,Outputstream,Reader和Writers。 转到adb s

  • 在我的应用程序中,有几个组件将生成各种不同类型的特定于应用程序的事件。这些事件将发布到代理并传递给N个客户端。其中一些客户端是我的服务器端应用程序中的其他Java类,但主要消费者是我的基于javascript的WebUI。 到目前为止,我目前的方法是定义一个抽象事件基类来封装一些公共字段,然后为每个事件实现一个特定的事件类。 这一直工作正常,只是现在我需要在javascript和java端维护事件

  • 因此,我遵循了一个关于创建Discord机器人的Python Discord教程。当我运行代码时,它说“AttributeError:module'discord.client'没有属性'event'”。当我在网上搜索时,大多数答案都令人困惑。我正在使用repl。现在就开始,在Pycharm上试一试。两者都以相同的错误结束 仅供参考:我删除了,这样就不会显示令牌。