synchronization - 离线同步和事件溯源

标签 synchronization crud offline event-sourcing command-pattern

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

  • 离线双向“双向”同步
  • 能够修改数据直到准备好然后“发布”。
  • 审计日志

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

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

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

    最佳答案

    您会想回顾一下 Greg Young 对 CQRS and Occasionally Connected Systems 的看法

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

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

    关于synchronization - 离线同步和事件溯源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35350780/

    相关文章:

    MySQL 错误 1442 使用 2 个触发器更新 2 个不同数据库上的 2 个表的字段

    mysql - 如何将我的查询转换为 Sequelize 查询?

    ruby-on-rails - Rails 更新操作因 rails4、mongoid 而失败。创建好

    android - 如何保存 map 以供离线查看

    javascript - 下载完整的网站(包括 Assets )以供离线使用

    java - 同步块(synchronized block)中的更改何时对其他线程可见

    android - NDK分辨率结果:项目设置:Gradle模型版本= 5.4.1,NDK版本为UNKNOWN错误

    java - 同步器困惑

    functional-programming - 函数式更新

    windows - 在离线 Windows 机器上安装 Python 包(numpy、scipy、statsmodels 等)