Cassandra DB -节点已关闭,并请求在该节点中提取数据

hpxqektj  于 2022-11-05  发布在  Cassandra
关注(0)|答案(1)|浏览(161)

如果我们配置了复制因子,使得没有副本节点(数据仅存储在一个位置/节点),并且如果包含请求数据的节点关闭,Cassandra DB将如何处理请求?
它会不会不返回数据,或者其他节点是否会闲聊,并以某种方式从故障节点(存储)获取数据并发送所需的响应?如果数据被获取,节点之间的数据传输会不会在节点关闭(GOSSIP协议)后立即发生,或者在发出请求后发生?
我已经研究了很长时间GOSSIP是如何发生的,以及Cassandra的高可用性,但我想知道在“无副本”的情况下数据的可用性,因为我不想为偶尔的故障浪费额外的存储,同时,我需要可用性和无数据丢失(尽管延迟)

euoag5mw

euoag5mw1#

我假设当您说“没有副本节点”时,您的意思是您已经将复制因子设置为1。在这种情况下,如果请求是读取,则它将失败;如果请求是写入,则它将被存储为提示,直到最大提示时间,并将被重放。如果节点停机的时间长于提示时间,则该写入将丢失。Hinted Handoff: repair during write path
一般来说,在C* 群集中只有一个数据副本会违背C* 使用的一些基本设计,是一种反模式。数据复制是使用C* 的正常和预期的一部分,也是它的高可用性方面的考虑因素。有一个RF= 1会在系统中引入单点故障,因为包含该数据的服务器可能会因各种原因而停止运行(包括维护等),这将导致请求失败。
如果您确实在寻找一个提供高可用性和无数据丢失的解决方案,那么您需要增加复制因子(我通常看到的标准是RF=3),并以减少/消除潜在单点故障的方式设置群集硬件。

相关问题