NOSQL中节点之间的数据一致性

时间:2017-11-23 04:31:53

标签: cassandra nosql consistency data-consistency

这是一个设计级问题,

我有一个节点设置,如节点N1,N2和N3,我的应用程序和数据库(现在认为是Cassandra)在所有3个节点中运行。

我需要为以下场景提供数据一致性,有人可以提供答案吗?

  • 线程(T1)尝试编辑节点N1
  • 中的数据
  • 线程(T2)尝试编辑来自Node N2的相同数据
  • 只有一次写入才能成功

在这种情况下,Cassandra会发生什么?

有没有办法通过application / Cassandra数据库提供并发?或任何算法?

除了Cassandra的LWT。

1 个答案:

答案 0 :(得分:1)

Cassandra提供tunable consistency。在您的情况下,这仅意味着,如果您为写入提供CL=QUORUM,它将同步到3个节点中的2个节点。读取将与CL=QUORUM一致,因为您将从3个节点中的2个中获得结果,因此存在重叠。

对于写作,Cassandra提供了last-write-wins机制。这意味着独立于一致性级别,读取器将看到T1或T2线程的写入,具体取决于读取发生的时间。稍后读者只会看到最新的写作。

如果您需要锁定机制,可以在应用层使用offline concurrency patterns,例如optimisticpessimistic offline lock。 一些持久性管理框架提供了开箱即用的这些模式实现。