【问题标题】:how does cassandra reacts when a write is being performed in node and node went down当在节点中执行写入并且节点关闭时,cassandra如何反应
【发布时间】:2016-04-10 12:50:06
【问题描述】:

我们有 2 个节点的 Cassandra 集群。复制因子为 1,一致性级别为 1。我们没有使用复制,因为我们插入的数据对于每条记录来说都非常庞大。 当在该节点中执行写入时节点关闭时,Cassandra 如何做出反应?我们正在使用来自 Java 客户端的 Hector API。 我的理解是 Cassandra 将对正在运行的其他节点执行写入操作。

【问题讨论】:

    标签: cassandra hector


    【解决方案1】:

    不,如果插入的数据属于故障节点的令牌范围,则使用 CL.ONE 不会执行写入。一致性级别定义了必须响应多少副本节点才能接受请求。

    如果你想能够写,即使副本节点宕机,你也需要使用 CL.ANY。 ANY 将确保协调器存储请求的提示。提示存储在 System.Hints 表中。副本再次恢复后,所有提示将被处理并发送到即将到来的节点。

    编辑

    您将收到以下错误:

    com.datastax.driver.core.exceptions.UnavailableException: Not enough replica available for query at consistency ONE (1 required but only 0 alive)
    

    【讨论】:

    • 换句话说,写请求会在OP描述的情况下返回错误。
    • 感谢 Zerd 和 Brandon。 Hector API 没有抛出任何异常,但日志显示有关节点关闭状态的警告消息。当我关闭节点 2 时,Hector API 抛出异常。我使用的是 cassandra 2.0.5 版本和 hector 1.1 版本
    猜你喜欢
    • 2021-11-30
    • 2015-01-12
    • 2018-06-17
    • 2016-11-26
    • 2014-11-27
    • 2013-12-29
    • 2019-03-13
    • 2020-04-18
    • 2021-08-25
    相关资源
    最近更新 更多