Cassandra:解释不符合所需一致性级别的写入

Cassandra:解释不符合所需一致性级别的写入,cassandra,Cassandra,在看了卡桑德拉DS220的视频后,我通过了一个测验,我遇到了一个关于卡桑德拉的真实陈述: 不满足一致性要求的写入不会被回滚 背 这不是我实际期望的,所以我有一些问题: 1) 这种情况还会发生吗?我认为他们可以,如果一两个节点在中间失败。否则C*将需要两阶段提交 2) 以后写的值会发生什么变化?我从C*文档中了解暗示切换的工作原理: 当群集无法满足 客户端,Cassandra不存储提示 但是阅读修复会做什么呢?例如,如果旧值为A而新值为B,则将读取修复放弃B,或者A将被B覆盖? 3) 如果我使用仲

在看了卡桑德拉DS220的视频后,我通过了一个测验,我遇到了一个关于卡桑德拉的真实陈述:

不满足一致性要求的写入不会被回滚 背

这不是我实际期望的,所以我有一些问题:

1) 这种情况还会发生吗?我认为他们可以,如果一两个节点在中间失败。否则C*将需要两阶段提交
2) 以后写的值会发生什么变化?我从C*文档中了解暗示切换的工作原理:

当群集无法满足 客户端,Cassandra不存储提示

但是阅读修复会做什么呢?例如,如果旧值为A而新值为B,则将读取修复放弃B,或者A将被B覆盖?

3) 如果我使用仲裁级别进行读取,并且其中一个节点包含B(未完全写入以满足一致性级别),那么读取将返回什么?

当您使用高于一致性级别1的任何内容时,如果您未能满足一致性要求,则不会丢弃写入操作,而是保留在成功写入的节点上。 有两种机制可以解决这个问题。第一个是修复,它将副本节点的Merkle树作为反熵过程的一部分进行比较。第二种是读取修复,它以定义的读取百分比触发,并执行类似的操作:比较来自所有副本的数据,并在需要时进行更新。 如果您使用QUORUM进行读取,那么如果您在向数据库写入数据时遇到问题,但它仍然不是100%可靠,那么您获得最新数据的可能性更高

写入请求的一致性级别会影响提示是否正确 已写入,写入请求随后失败。如果集群 由两个节点(A和B)组成,每个节点的复制因子为1 行仅存储在一个节点上。假设当一行K为空时,节点A为空 以一致性级别1写入。在这种情况下 无法满足指定的一致性级别,并且由于节点A是 协调器,它无法存储提示。节点B无法写入数据, 因为它没有作为协调器接收数据,也没有提示 已存储。协调器检查已启动的复制副本的数量 如果一致性级别 无法满足客户端指定的。发生暗示的切换失败 并将返回一个不可用的异常。写入请求 失败,提示未写入


有关更多信息,请参阅

对不起,问题2)和3)尚未完全回答-在这两种情况下哪个值将“获胜”?旧值A或新值B?2)有两种机制可以解决此问题。第一个是修复,它将副本节点的Merkle树作为反熵过程的一部分进行比较。第二种是读取修复,它以定义的读取百分比触发,并执行类似的操作:比较来自所有副本的数据,并在需要时进行更新。3) 如果使用QUORUM进行读取,则如果在写入数据库时遇到问题,但数据库仍然不是100%可靠,则获取最新数据的可能性更高。很抱歉,仍然没有回答:)。你不用写“A”或“B”或“我不知道”,只需复制粘贴答案的部分即可。