2016-04-30 51 views
1

我有一个应用程序只执行卡桑德拉插入/删除。所有写入操作(插入/删除)应用程序都使用一致性级别QUORUM执行,读取操作当前也使用QUORUM执行,但我想知道在这种情况下(何时没有数据更新)一致性级别ONE会给出相同的结果作为QUORUM。一致性级别法定人数和一个用于插入后读取

回答

1

不一定。可能是您的读取请求转到一个节点,该节点尚未(尚未)接收/应用更新。一致性级别确实允许一些节点还没有更新的数据;通过使用一致性级别ONE进行读取,您可能会读取陈旧的数据。也许你的应用可以处理这种情况 - 这是你自己决定的。但是您应该知道读取的ONE的一致性级别可能不是会返回您所期望的数据。

希望这会有所帮助!

+0

感谢您的回答,即使我们使用TokenAwarePolicy负载均衡策略,是否也无法保证?我虽然在这种情况下查询总是发送到应该请求密钥的节点。 – llirik

+0

该查询将被发送到节点,该节点应该拥有请求的密钥(基于散列 - 但同样是更新和读取之间的竞争条件)。使用'TokenAwarePolicy'可以减少读取时使用的机会一致性水平'ONE',你会得到一个陈旧的读 - 但并不完全阻止它 – Castaglia

+0

我还应该指出,如果你想在你的Cassandra配置中有多个“数据中心”,你可能会想要使用'LOCAL_QUORUM'的一致性级别而不是'QUORUM';后者在数据中心执行法定数量,这可能会增加不需要的延迟(或者这可能是您需要的行为?);这是一个需要注意的小问题。 – Castaglia

相关问题