0

这是一个设计级别的问题,

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

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

  • 线程 (T1) 尝试编辑节点 N1 中的数据
  • 线程 (T2) 尝试从节点 N2 编辑相同的数据
  • 只有一次写入应该成功

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

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

除了卡桑德拉的 LWT。

4

1 回答 1

1

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

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

如果你想要锁定机制,你可以在你的应用层使用离线并发模式,比如乐观悲观的离线锁。一些持久性管理框架开箱即用地提供了这些模式实现。

于 2017-11-23T12:21:38.323 回答