【问题标题】:Does MNesia support synchronization after disconnected operation?MNesia 是否支持断线操作后同步?
【发布时间】:2011-06-29 11:55:23
【问题描述】:

我开始构建一个具有以下要求的项目:

  • 整个系统将分布在 WAN 上的多个物理节点上
  • 每个节点都将使用和操作一组通用的数据记录
  • 对这些记录的操作必须能够应对网络中断

我正在考虑使用 Mnesia/Erlang 作为该项目的基础平台,但我想知道它 (Mnesia) 在处理数据集上同时断开连接的冲突操作方面的能力如何。

一个说明性场景:

  1. 节点 A 和 B 具有连通性和空数据集。
  2. 节点 A 添加记录 (1, ABC)。
    • 在这里,记录集应该透明地同步,现在节点 B 也有记录 (1, ABC)。
  3. 它们之间的网络连接丢失。
  4. 节点 A 将记录更改为 (1, DEF)。
  5. 节点 B(稍后的时间戳)将记录更改为 (1, GHI)。
  6. 网络连接已恢复
    • 预期:透明同步后,两个节点都包含记录 (1, GHI)。

为简化起见,我们假设不需要完整的更改历史记录(例如,记录 1 曾经包含 ABC 或 DEF 并不重要,重要的是它现在包含 GHI)。

这是 Mnesia 的开箱即用(或易于实现)功能吗?

【问题讨论】:

    标签: architecture synchronization erlang distributed mnesia


    【解决方案1】:

    Ulf Wiger 上一次在旧金山的 Erlang 工厂(2010 年)就这个主题进行了一次演讲。你可以在这里找到他的幻灯片:http://www.erlang-factory.com/upload/item/7/UlfWiger-10minutetalk.pdf

    它们包含对问题的概述,还指向一些可能对您有用的源代码。

    【讨论】:

      【解决方案2】:

      步骤 1-5 应该有效。自动解决冲突(第 6 步):否。

      【讨论】:

      • 第 6 步的行为是什么?如果网络连接恢复,它将如何应对冲突?
      • @Greg:答案在另一个答案中链接的幻灯片中:Mnesia 检测条件 Mnesia 检测条件 – 发出“运行分区网络”事件 – 拒绝合并表
      猜你喜欢
      • 2012-07-05
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多