cassandra:如果集群的一部分与整体完全断开,那么只有最大的一组节点仍然可以满足查询

a8jjtwal  于 2021-06-13  发布在  Cassandra
关注(0)|答案(1)|浏览(365)

作为datastax的cassandra开发人员培训的一部分,我有一个问题:“在一个完整的网络分区中,也就是说,集群的一部分与整体完全断开,只有最大的一组节点仍然可以满足查询。”
我在这里回答“是的”。因为即使我们破坏了cassandra集群,最大的组仍然可以重置自己以满足一致性级别并服务于请求。
但我看我的答案是错的。谁能解释一下原因吗?

92dk7w1h

92dk7w1h1#

因为我们称之为“数据”的小东西
这个问题没有提到具体的节点数量,也没有提到定义键空间的复制因子(rf)。因此,您无法保证特定的令牌范围(及其副本)也可能被关闭。在这种情况下,完整的数据副本集很可能会关闭。
最大的群体仍然可以自我重置
我想我明白你的意思。当节点被解组或移除时,其余节点会调整其令牌范围分配,以确保100%的数据覆盖率。那是真的。但是,与这些范围相关联的数据不会自动随这些范围移动。
直到修复操作运行后才会发生这种情况。如果多个节点(同样)关闭,包括完整的数据副本集,您可能没有流式传输某些数据所需的节点。
例子:
假设我们有一个12节点的集群(在单个dc中),键空间定义为rf=3,节点被“拆分”为2(a组)、3(b组)和7(c组)。
如果c组仍在提供查询,则会有一些数据分区,这些分区最初是:
c组所有复制品。这些查询仍然会成功。
a组和b组各有1个复制品。这些查询仍将成功@ QUORUM 或者更少,但现在会失败 ALL .
在a组或b组(或两者)中有2个复制品。这些查询仍将成功@ ONE ,但现在所有其他一致性级别都将失败。
在a组和b组的节点上都有数据。对这些分区的所有查询都将失败。
有b组所有节点的数据。对这些分区的所有查询都将失败。

相关问题