这是一个设计级问题,
我有一个节点设置,如节点N1,N2和N3,我的应用程序和数据库(现在认为是Cassandra)在所有3个节点中运行。
我需要为以下场景提供数据一致性,有人可以提供答案吗?
在这种情况下,Cassandra会发生什么?
有没有办法通过application / Cassandra数据库提供并发?或任何算法?
除了Cassandra的LWT。
答案 0 :(得分:1)
Cassandra提供tunable consistency。在您的情况下,这仅意味着,如果您为写入提供CL=QUORUM
,它将同步到3个节点中的2个节点。读取将与CL=QUORUM
一致,因为您将从3个节点中的2个中获得结果,因此存在重叠。
对于写作,Cassandra提供了last-write-wins机制。这意味着独立于一致性级别,读取器将看到T1或T2线程的写入,具体取决于读取发生的时间。稍后读者只会看到最新的写作。
如果您需要锁定机制,可以在应用层使用offline concurrency patterns,例如optimistic或pessimistic offline lock。 一些持久性管理框架提供了开箱即用的这些模式实现。