【问题标题】:Cassandra - Client Timestamp and Conflict RecognitionCassandra - 客户端时间戳和冲突识别
【发布时间】:2023-04-07 06:04:01
【问题描述】:

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

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

【问题讨论】:

    标签: cassandra


    【解决方案1】:

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

    如果由于某种原因不能选择 ntp,您可以将时间戳设置为您想要在客户端上使用的任何值,但您必须设计自己的方式来同步该值(让 ntp 工作几乎总是更容易)。

    【讨论】:

    • 旧时间戳的更新将被忽略?
    • 如果已经存在具有相同名称和较新时间戳的列,则可以。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-02-08
      • 1970-01-01
      • 2016-11-22
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-15
      • 2017-03-12
      相关资源
      最近更新 更多