【发布时间】:2016-12-22 04:19:14
【问题描述】:
我对 cassandra 在向集群添加新节点时如何确保一致性感到有点困惑。我知道 cassandra 会进行范围移动并将数据流式传输到新添加的节点。问题是 cassandra 是否也将辅助副本的数据流式传输到新添加的节点。
例如,我们在集群中有 4 个节点,RF=3 (A,B,C,D) A(x=1, y=2), B(x=1, y=3), C(x=1), D(y=2)。分区键“x”将由 A、B、C 持有,而分区键“y”将由 D、A、B 持有。如果我在 A 和 B 之间添加一个新节点 A'。我认为它会从 A 流式传输分区“x”。但它还会从 B 或 D 流式传输分区“y”吗?
如果它确实流分区“y”,cassandra 会选择从哪个节点流式传输?来自official document。它将从 D 的主副本流式传输。如果是这种情况,当 D 有陈旧数据时(在添加新节点之前可以,因为 A 和 B 以及满足法定人数的最新数据),流式传输后,有可能从 D 和 A' 中查询出陈旧的数据。我说的对吗?
【问题讨论】:
标签: cassandra consistency