我们有一个RF = 2的3节点Cassandra集群。读写一致性设置为1。我们也使用Vnodes。可以将这些节点标记为N1,N2和N3。假设N3下降。我的印象是,无论节点何时关闭,其他节点都会存储提示,并且每当N3出现时,提示就会发送到N3,从而确保数据在副本之间保持一致。但是,当我浏览文档时,我遇到了参数max_hint_window_in_ms
,默认为3小时。所以,如果一个节点死了超过3个小时,它被认为是永久死亡,并且没有提示被存储。到现在为止还挺好。理解Cassandra中的指示性切换和数据复制
所以,我现在的理解是,如果一个节点停下来说了10个小时,那么前3个小时的提示会在它返回时转移到这个节点,但是这个7小时的写入会对于这个节点会丢失。此外,如果为特定的令牌范围启动读取查询,并且由于此节点也可以为读取令牌范围的请求提供服务,它将返回空值而不是存储在某个其他节点中的实际数据。我的理解是否正确?那么,应该做什么?
这是被测试和行为是意想不到的?或者,如果情景发生,您是否在寻找预期的行为?由于您的一致性级别设置为“1”,因此所有读取/写入都应成功(假设吞吐量不大)。 – daniel
我想评估一下,如果我的某个节点发生故障超过3小时(默认值为max_hint_window_in_ms),那么行为将会是什么。 – Ankush92