Cassandra - 客户时间戳和冲突识别

时间:2012-02-24 14:38:48

标签: cassandra

Cassandra的最后一次写入策略基于时间戳,这是客户端时间戳。 客户端之间的时间可能不同步 - 这可能会导致更新丢失。我想知道流动场景中会发生什么:

  • 客户端时钟延迟了几年 - 在这种情况下,与已经存在的值(由“普通”客户端创建)相比,从这个几乎没有延迟的客户端的列更新发送始终具有较旧的时间戳。 Cassandra会忽略这样的更新吗?此更新是否会覆盖现有列值,并设置较旧的时间?
  • 客户获得几年 - 在这种情况下,如果从另一个“正确”的客户端执行并发写请求,这个客户端的更新总是会胜利吗?

2 个答案:

答案 0 :(得分:3)

是的,时间戳用于解决冲突,因此新的时间戳总是赢。一般建议是在所有机器上运行ntp。

如果由于某种原因ntp不是一个选项,你可以将时间戳设置为你想要的客户端值,但你必须设计自己的方法来同步该值(让ntp工作几乎总是更容易)。

答案 1 :(得分:1)

我刚才写了一篇关于Cassandra Timestamps的帖子。它讨论了冲突情况。