我正在设计一个分布式系统,其中包含一定的数据流。我想保证在任何给定时间至少有N个节点具有几乎当前的数据。 我不需要完全一致性,只需要最终的一致性(t.i.任何时刻,数据的当前快照最终应该出现在至少N个节点上。在这里定义术语“当前”是很棘手的,但仍然)。节点可能会失败并随时返回,并且没有单个“中央”节点。
O溢出者!请给我一些描述复制方案的好文章。到目前为止,我发现了一篇:Consistency Management in Optimistic Replication Algorithms以及同一作者撰写的更为广泛的近期文章:Optimistic Replication。
答案 0 :(得分:1)
很多诀窍就是找到你的确切要求,你的听起来仍然很模糊。你只需要支持这样的操作吗?
你提到你需要最终的一致性。因此,如果您进行单个更新,它最终将在任何地方复制。如果你做了两个几乎同时发生的更新,你关心哪一个获胜?如果一个副本报告已成功完成更新,您是否关心如果该副本在之后不久暂时崩溃,该值是否会丢失?或者,如果该副本被永久销毁?
最近有多精确?如果有netsplit或其他东西,查找可能会返回一个非常陈旧的结果或只是失败。你关心哪个?
你是否需要支持像......这样的高级运营?
您是否有严格的可靠性,延迟和/或带宽要求?您的副本/网络之间的距离有多远?如果您可以在每次更新甚至每次查找时进行跨副本通信,则会产生这种影响;或者即使您可以/应该将操作故障转移到远程副本,如果本地的副本似乎已关闭。
根据您在这里的答案,我使用了几种可能符合您要求的不同方案。它们有几种可能的变化。
答案 1 :(得分:0)
不与RDBMS无关,但SQL Server 2008(2005年起)支持Peer-To-Peer Replication