Cassandra DB - 节点已关闭并请求获取该节点中的数据

Cassandra DB - Node is down and a request is made to fetch data in that Node

如果我们以没有副本节点的方式配置复制因子(数据仅存储在一个 place/Node 中)并且如果包含请求数据的节点已关闭,将如何处理请求通过 Cassandra 数据库?

它会 return 没有数据或其他节点闲聊并以某种方式从故障节点(存储)中获取数据并发送所需的响应吗?如果数据被拾取,节点之间的数据传输是否会在节点关闭(GOSSIP 协议)或发出请求后立即发生?

已经研究了很长时间关于 GOSSIP 如何发生和 Cassandra 的高可用性,但想知道在 "No Replicas" 情况下数据的可用性,因为我不想同时为偶尔的故障浪费额外的存储空间,我需要可用性和无数据丢失(虽然延迟)

我假设当您说有 "no replica nodes" 时,您的意思是您已将复制因子设置为 1。在这种情况下,如果请求是读取,那么它将失败,如果请求是写入,它将被存储为提示,直到最大提示时间,然后将被重放。如果节点停机时间超过提示时间,则该写入将丢失。 Hinted Handoff: repair during write path

通常,在您的 C* 集群中只有一个数据副本违背了 C* 使用方式的一些基本设计,并且是一种反模式。数据复制是使用 C* 的正常和预期的部分,并且允许它的高可用性方面。 RF=1 会在系统中引入单点故障,因为包含该数据的服务器可能会因各种原因(包括维护等原因)而出现故障,这将导致请求失败。

如果你真的在寻找一个提供高可用性和无数据丢失的解决方案,那么你需要增加你的复制因子(我通常看到的标准是 RF=3)并以这样的方式设置你的集群硬件reduce/remove 潜在的单点故障。