1

我有一个三节点 Cassandra (DSE) 集群,我不关心数据丢失,所以我将 RF 设置为 1。我想知道如果节点出现故障,Cassandra 将如何响应读/写请求(我有 CL =现在我的请求中的所有)。

理想情况下,如果数据存在,我希望这些请求能够成功——仅在剩余的可用节点上,直到我替换死节点。这个键空间本质上是一个非常大的缓存;如果丢失,我可以替换任何数据。

4

1 回答 1

5

(免责声明:我是 ScyllaDB 员工)

假设您的分区键足够唯一,当使用 RF=1 时,您的 3 个节点中的每一个都包含 1/3 的数据。顺便说一句,在这种情况下 CL=ONE/ALL 基本上与您的数据只有 1 个副本并且没有高可用性 (HA) 相同。

来自 2 个 up 节点的“现有”数据请求将成功。nodetool repair尽管如此,当 3 个节点之一关闭时,1/3 的客户端请求(针对现有数据)将不会成功,因为基本上 1/3 的数据不可用,直到关闭节点出现(请注意使用 RF=1 时无关紧要),所以我猜从快照恢复(如果你有可用的)是唯一的选择。

当节点关闭时,一旦您执行nodetool decommission,令牌范围将在 2 个向上节点之间重新分配,但这仅适用于新的写入和读取。

您可以在此处阅读有关环形架构的更多信息:http: //docs.scylladb.com/architecture/ringarchitecture/

于 2017-11-06T07:16:39.710 回答