假设我们有这样一种情况,其中 R + W > N,其中 R 是读取仲裁级别,W 是写入仲裁级别,N 是复制因子。我们可以进一步假设 R = W = N/2 + 1。
让我们想象一下这样一个场景,其中一个键的更新操作正在进行中,并假设 Cassandra 已将更新提交到时间戳为 t 的单个副本。让我们还假设其他副本的密钥存储时间标记为 < t。如果在更新过程中现在发生对对象的读取请求,则读取仲裁可能包括发生更新的单个副本,其中包含时间戳为 t 的键,并且它将返回一个尚未提交的值(一个可能的未来值 - 我说“可能”,因为更新实际上可能会失败)因为 t > 来自读取仲裁中其他副本的时间戳。
问题是 - R + W > N 配置不应该保证强一致性吗?另外,这个问题是如何解决的?