Cassandra - CF = 1的死节点上的数据丢失

时间:2017-04-06 18:14:41

标签: cassandra

我是Cassandra的新手,对提交日志有一个问题,该日志配置为使用定期模式(10秒)。

假设我们有一个节点处理CF = 1且RF = 3的请求。如果节点处于提交日志尚未刷新到磁盘并且数据复制也未决的状态,我们是否会如果节点在此状态下崩溃,数据是否松动?

另一个后续问题,哪个节点负责根据RF = 3复制其他节点上的数据?是协调器节点还是根据一致性级别处理请求的其他节点?

2 个答案:

答案 0 :(得分:2)

当协调器崩溃并且不正常地关闭时,CL = 1有一个窗口,在将变异发送到副本并刷新提交日志之前,数据可能会丢失。它非常小的窗口,不太可能,但如果它的关注使用本地仲裁或批处理模式。

协调员将数据发送到所有副本并存储有关未执行任何操作的提示。

答案 1 :(得分:2)

我认为以下链接可能对您有用: https://www.ecyrd.com/cassandracalculator/

是的,在这种情况下可能会丢失数据,因为数据无法到达其他节点,因此不存在副本。好像数据不存在。事实是这个窗口实际上非常小,因为对于RF 3,其他节点将在毫秒内接收插入(除非节点上有一些非常重的负载)。

所有RF请求(每个客户端请求)由协调器处理。此外,如果协调器需要复制时节点可能不存在,则将数据存储在提示中。

总而言之,数据丢失是可能的,但概率非常小。