【问题标题】:Write consistency not met while writing in Cassandra在 Cassandra 中编写时未满足写入一致性
【发布时间】:2018-06-18 02:43:37
【问题描述】:

我无法理解在写入过程中无法满足所需的写入一致性级别的情况。例如假设我有 3 个节点,2 个在一个数据中心(dc1),其余一个在另一个数据中心(dc2)。网络拓扑策略。现在,如果我使用一致性级别 3 编写并且其中一个节点已关闭,究竟会发生什么? 由于有2个节点up,他们将能够完成写入过程,但是由于无法满足一致性级别,因此协调节点将向客户端返回写入错误。 写入 2 个节点的数据会发生什么变化?客户端不会期待任何节点中的任何数据,因为他收到了写入错误。

There is no rollback in Cassandra, then how does Cassandra remove failed writes? 根据上面的链接,Cassandra 不会回滚写入。

Does Cassandra write to a node(which is up) even if Consistency cannot be met? 上述链接中接受的答案指出“在写入成功的节点上,实际写入了数据,并且最终将回滚。”

【问题讨论】:

    标签: cassandra cassandra-3.0


    【解决方案1】:

    如果协调器无法写入足够的副本来满足 请求的一致性级别,它抛出一个不可用的异常和 不执行任何写入。

    如果协调器事先不知道副本失败,即副本在写入期间失败,那么协调器将抛出超时异常,客户端将不得不处理它。 (重试策略)

    Cassandra Write Request

    【讨论】:

    • 根据文章,“写入一致性级别决定了有多少副本节点必须响应成功确认,才能认为写入成功”。在我正在考虑的场景中,一些节点已向协调节点成功确认响应,但是,该数字小于所需的一致性。因此,协调节点会给出“写错误”。但是写入这些节点的数据会发生什么?
    • If the coordinator cannot write to enough replicas to meet the requested consistency level, it throws an Unavailable Exception and does not perform any writes.你错过了这个
    • 我正在考虑协调节点不知道某些节点关闭/没有响应的情况。因此在这种情况下,协调节点不会立即抛出异常,而是会等待接收满足一致性级别所需的节点数量的确认。而如果不满足一致性级别,那么写入部分节点的数据会怎样?
    猜你喜欢
    • 2019-02-16
    • 2015-08-09
    • 2021-05-07
    • 2020-04-25
    • 2014-03-14
    • 2021-11-13
    • 1970-01-01
    • 2014-10-02
    • 1970-01-01
    相关资源
    最近更新 更多