假设我有一个3节点集群。
我写信给节点#1。
如果该群集中的节点#2出现故障,然后重新启动并重新同步来自其他节点的数据,并且我继续写入节点#1,那么数据是否会同步复制到节点#2?也就是说,该写入的复制因子是同步还是在重新同步后的队列后面?
由于 史蒂夫
答案 0 :(得分:3)
是的,因为您正在以一致性级别进行读写,可以处理1个节点变得不可用。
考虑以下情况:
如果发生读取且协调cassandra节点检测到节点缺少数据/不一致,则可能执行'read repair'
如果节点2长时间停机,则节点1和节点3可能不会保留所有发往它的提示。在这种情况下,运营商应考虑按计划运行repairs。
另请注意,在执行读取操作时,如果Cassandra在摘要请求期间发现数据不匹配,它将始终将具有最新时间戳的数据视为正确的数据(请参阅'Why cassandra doesn't need vector clocks')。
答案 1 :(得分:0)
Node2将立即开始接受新写入以及其他人为此节点存储的任何提示。最好在节点恢复后在节点上运行读取修复,这将确保数据与其他节点一致。
请注意,每个列都有一个存储时间戳,这将有助于cassandra确定运行节点修复时最新的数据。