【发布时间】: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 点吗?如果节点死亡,我如何配置它以仍然获取我的信息?
谢谢
【问题讨论】: