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

标签 cassandra

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

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

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

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

    关于Cassandra - 客户端时间戳和冲突识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9432505/

    相关文章:

    java - Cassandra Datastax 连接池监视器/指标

    cassandra - 是否支持条件是不等式表达式的 Cassandra Update IF 语句?

    cassandra - 将节点添加到集群后,Cassandra 中的数据丢失

    cassandra - 在正在运行的节点中将 cassandra 快照文件复制到 sstable 文件上是否安全?

    node.js - 绘制通过 node.js 获取的 cassandra 数据

    java - cassandra 重新安装在 ubuntu 上不起作用

    cassandra - 如果表被删除,SSTables 永远不会在磁盘上被删除

    cassandra - 配置 cassandra-rackdc 和 cassandra-topology

    java - NoClassDefFoundError:spark-cassandra-connector 中的 org/apache/spark/sql/DataFrame

    用于存储支付信息的 Cassandra