【问题标题】:Offline sync and event sourcing离线同步和事件溯源
【发布时间】:2016-05-22 21:43:06
【问题描述】:

我们的应用程序需要基于 CRUD 的部分:

  1. 离线双向“双向”同步
  2. 能够修改数据直到准备好然后“发布”。
  3. 审核日志

事件溯源(或“命令模式”)是我正在寻找完成这些项目的方法。我觉得用这个解决 2&3 很舒服,但不清楚第一项,同步。

如果每个命令都使用时间戳(如果需要),是否需要将离线命令应用到主系统,因为它们本来应该是实时的(合并的),或者我可以认为它们应用在发生在任何命令的结尾(带有更新的时间戳)?

任何基于命令的同步的基本算法描述都会有所帮助。

【问题讨论】:

标签: synchronization crud offline event-sourcing command-pattern


【解决方案1】:

您需要查看 Greg Young 对 CQRS and Occasionally Connected Systems 的评价

命令在收到时需要在记录系统上运行。因此,您的离线客户端可以使用其本地缓存、陈旧、记录副本和排队命令。再次连接时,客户端会更新它的记录系统副本,将其排队的命令与世界的新状态相协调,然后将新命令发送到记录系统。

Greg 的演讲概述了命令协调的工作原理(基本上,通过查看临时命令生成的事件,并查找与记录系统记录的事件的冲突)。该演讲强烈暗示领域专家希望以特定方式解决事件冲突。

【讨论】:

  • 感谢您@VoiceOfUnreason,这就是我要找的东西
  • “简单地”检查临时事件与从记录系统接收到的事件之间的冲突的一个问题是,它仅识别将产生此类冲突事件的命令......但其他未决命令(即本身不会产生冲突事件)可能对这种冲突有某种因果依赖性——但很难捕捉到这一点,因为在发出命令时不知道用户依赖的是什么信息。那么,您是否将在第一个冲突之后发出的每个命令都标记为(可能)不可合并?
猜你喜欢
  • 2020-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-27
  • 2019-01-31
  • 1970-01-01
  • 2021-07-25
  • 1970-01-01
相关资源
最近更新 更多