NOSQL 中跨节点的数据一致性

Data consistency across nodes in NOSQL

这是一道设计题,

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

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

这样的话,Cassandra会发生什么?

有没有办法通过应用程序/Cassandra 数据库提供并发性?或者任何算法?

除了 Cassandra 中的 LWT。

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

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

如果你想要锁定机制,你可以使用offline concurrency patterns in your application layer, like optimistic or pessimistic offline lock。 一些持久性管理框架提供了这些开箱即用的模式实现。