【发布时间】:2016-08-25 18:36:17
【问题描述】:
我有一个只在 cassandra 中执行插入/删除的应用程序。所有写操作(插入/删除)应用程序都使用一致性级别 QUORUM 执行,读取操作当前也使用 QUORUM 执行,但我想知道在这种情况下(当没有数据更新时)一致性级别 ONE 是否会给出相同的结果作为法定人数。
【问题讨论】:
标签: cassandra consistency
我有一个只在 cassandra 中执行插入/删除的应用程序。所有写操作(插入/删除)应用程序都使用一致性级别 QUORUM 执行,读取操作当前也使用 QUORUM 执行,但我想知道在这种情况下(当没有数据更新时)一致性级别 ONE 是否会给出相同的结果作为法定人数。
【问题讨论】:
标签: cassandra consistency
不一定。可能是您的读取请求转到尚未(尚未)接收/应用更新的 one 节点。 QUORUM 一致性级别确实允许某些节点还没有更新的数据;通过使用ONE 的一致性级别进行读取,您可能会读取过时的数据。也许您的应用程序可以处理这种情况——这由您决定。但您应该知道,读取的一致性级别 ONE可能不会返回您在您的情况下所期望的数据。
希望这会有所帮助!
【讨论】:
TokenAwarePolicy 可以减少在使用一致性级别ONE 进行读取时,您会得到一个过时的读取——但不能完全防止它。
LOCAL_QUORUM 一致性级别,而不是 QUORUM;后者在跨数据中心强制执行仲裁,这可能会增加不希望的延迟(或者这可能是您需要的行为?);这是一个需要注意的小问题。