【问题标题】:Trouble with Cassandra and ConsistencyLevel (Redundancy)Cassandra 和 ConsistencyLevel(冗余)的问题
【发布时间】:2011-04-20 22:42:33
【问题描述】:

所以,我一直在玩 Cassandra,并设置了一个包含三个节点的集群。我试图弄清楚冗余如何与 ConsistencyLevels 一起工作。目前,我正在使用 ConsistencyLevel.ALL 写入数据,并正在使用 ConsistencyLevel.ONE 读取数据。从我一直在阅读的内容来看,这似乎是有道理的。我有三个 Cassandra 节点,我想给这三个节点都写信。我只关心从其中一个人那里阅读,所以我会采取第一个回应。为了测试这一点,我编写了一堆数据(同样,使用 ConsistencyLevel.ALL)。然后我杀死我的一个节点(不是“种子”或“listen_address”机器)。

然后,当我尝试阅读时,我希望,也许在延迟一段时间后,我能取回我的数据。最初,我得到一个 TimeoutException... 我期望的。这就是 Cassandra 试图处理意外的节点丢失时得到的结果,对吧?大约 20 秒后,我再次尝试,现在收到 UnavailableException,描述为“并非所有需要的副本都可以创建和/或读取”。

好吧,我不关心所有的副本...只有一个(如我的 get 声明中的 ConsistencyLevel.ONE 中的),对吗?

我在这里错过了 ConsistencyLevel 点吗?如果节点死亡,我如何配置它以仍然获取我的信息?

谢谢

【问题讨论】:

    标签: java nosql cassandra


    【解决方案1】:

    听起来您将复制因子 (RF) 设置为 1,这意味着只有一个节点拥有任何给定的行。因此,当您关闭一个节点时,无论您使用何种一致性级别,您都无法读取或写入 1/3 的数据。您的期望与 RF = 3 应该发生的情况相符。

    【讨论】:

    • 你是对的!我没有在键空间级别设置我的复制因子,我想这是我必须设置它的地方。我认为读取和写入单独处理数据的复制方式。我更新了我的密钥空间,现在它似乎工作正常。谢谢!!
    猜你喜欢
    • 2021-02-25
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    相关资源
    最近更新 更多