Synchronization 离线同步和事件源

Synchronization 离线同步和事件源,synchronization,crud,offline,event-sourcing,command-pattern,Synchronization,Crud,Offline,Event Sourcing,Command Pattern,我们应用程序中基于CRUD的部分需要: 离线双向“双向”同步 能够修改数据,直到准备就绪,然后“发布” 审核日志 事件源(或“命令模式”)是我用来完成这些项目的工具。我对用这个解决2和3感到满意,但对于第一项,同步,我不清楚 如果每个命令都使用时间戳(如果需要的话),离线命令是否需要应用于主系统,因为它们已经实时(合并)了,或者我可以认为它们是在任何命令的末尾(具有更近的时间戳)应用的吗? 任何基于命令的同步的基本算法描述都会很有帮助。您将想回顾一下Greg Young的观点 命令需要在接收时在

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

  • 离线双向“双向”同步
  • 能够修改数据,直到准备就绪,然后“发布”
  • 审核日志
  • 事件源(或“命令模式”)是我用来完成这些项目的工具。我对用这个解决2和3感到满意,但对于第一项,同步,我不清楚

    如果每个命令都使用时间戳(如果需要的话),离线命令是否需要应用于主系统,因为它们已经实时(合并)了,或者我可以认为它们是在任何命令的末尾(具有更近的时间戳)应用的吗?


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

    您将想回顾一下Greg Young的观点

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


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

    对我来说有用的文章是,这就是我想要的,多亏了你@VoiceOfUnreasone的“简单”问题检查临时事件和从记录系统接收到的事件之间的冲突是,它只识别将产生此类冲突事件的命令。。。但是,其他挂起的命令(它们本身不会产生冲突事件)可能对此类冲突具有某种因果关系,但很难捕捉到这一点,因为人们不知道用户在发出命令时所依赖的信息。那么,您是否将在第一个发生冲突的命令之后发出的每个命令都标记为(可能)不可合并?