Cassandra集群:如何解决单个时间戳更新?

时间:2019-03-24 07:49:35

标签: cassandra

在Cassandra群集中,我有twp个节点,现在客户端正好在同一时间发送同一记录(具有不同值)的更新, Cassandra群集的两个不同节点。由于Cassandra在少主模式下工作,并且两个节点都可以接受更新请求, 我的问题是,在最终的一致性期间如何解决该冲突,以及哪个值最终会优先?

这是示例场景

Initial data: KeyA: { colA:"val AA", colB:"val BB"}

Client 1 sends update:  `update data set colA:"val C1_ColA" where 
colB="val BB"` and data becomes below at node_1

KeyA: { colA:"val C1_ColA",  colB:"val BB"}

Client 2 `update data set colA:"val C2_ColA" where 
colB="val BB"` and data becomes becomes below at node_2

KeyA: { colA:"val C2_ColA",  colB:"val BB"}

现在colA的值最终将在这里解析吗?

1 个答案:

答案 0 :(得分:2)

最后一次写入始终会获胜,我怀疑时间戳是否相同-它们具有微秒级的分辨率,因此时间戳具有相同值的可能性很小。

如果要防止这种情况,可以使用lightweight transactions来允许在插入/更新/删除中添加条件,但是请记住它们非常耗费资源,并且会增加给集群带来很大的负担。

相关问题