gpt4 book ai didi

Cassandra 的原子性和 "rollback"

转载 作者:行者123 更新时间:2023-12-03 17:49:23 25 4
gpt4 key购买 nike

Cassandra 2.0 documentation包含以下关于原子性的段落:

For example, if using a write consistency level of QUORUM with a replication factor of 3, Cassandra will replicate the write to all nodes in the cluster and wait for acknowledgement from two nodes. If the write fails on one of the nodes but succeeds on the other, Cassandra reports a failure to replicate the write on that node. However, the replicated write that succeeds on the other node is not automatically rolled back.



所以,写请求被发送到 3 个节点,我们正在等待 2 个 ACK​​。假设我们只收到 1 个 ACK​​(超时前)。所以很明显,如果我们以一致性 ONE 读取,我们可以读取值,好的。

但以下哪项陈述也是正确的:
  • 可能会发生,写入已在第二个节点上持久化,但节点的 ACK 丢失了? (注意:即使读取一致性为 QUORUM,这也可能导致读取值!)
  • 可能会发生,写入将稍后持久保存到第二个节点(例如,由于暗示切换)? (注意:即使读取一致性为 QUORUM,这也可能导致读取值!)
  • 这是不可能的,写入是在第二个节点上持久化的,并且写入的值最终会通过 ReadRepair 从节点中删除?
  • 不可能将写入持久保存在第二个节点上,但有必要执行手动“撤消”操作?
  • 最佳答案

    我相信您正在混合原子性和一致性。不保证跨节点的原子性,而保证一致性。只有写入单个节点中的一行才是真正意义上的原子性。

    Cassandra 写入失败的唯一时间是当协调器接收到请求时存活的副本太少,即无法满足一致性级别。否则你的第二个陈述是正确的。它会提示故障节点(副本)需要复制该行。

    本文描述了不同的故障条件。
    http://www.datastax.com/dev/blog/how-cassandra-deals-with-replica-failure

    关于Cassandra 的原子性和 "rollback",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24514110/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com