Aerospike 给出旧值但未更新值时出现的罕见情况

Rare case seen when Aerospike give older value but not updated value

在分布式环境中,每天有200万个请求,我们首先尝试读取数据,然后根据key更新aerospike中的数据。但在极少数情况下,当我们读取数据时,它会读取旧值。

更新值和读取该值之间的平均时间为 10 秒,这些问题就在其中出现。那么有人可以帮我找出问题出在哪里,是在设置中还是在代码中。

您使用的是哪个版本的 Aerospike?另外,CAP theorem. My guess is, currently, your aerospike settings are for Eventual Consistency

一次只能实现2个方面

从 4.0 版开始,您可以选择 AP(可用和分区容错)以及 CP(一致和分区容错)模式。

关于 aerospike 一致性的更多详细信息 here

如果存在节点故障或节点进出集群,CAP 定理很重要。即使在 AP 模式下,在稳定的集群中读取过时的读取也不会累加。其次,Aerospike 不是一个最终一致的设计——它在一个稳定的集群中是立即一致的,因为它不是一个基于共识的设计。因此,由于网络问题和节点进出导致集群不稳定,或者网络事件的某种组合导致了这种情况,或者代码存在一些问题。仅通过最终观察的陈述很难诊断。所以 1) 通过这些事件集群是否稳定? 2) 什么是 Aerospike 版本?版本 - 社区版还是企业版? 3)簇大小? 4)命名空间配置? 5)复制因子? 6) 代码片段/数据模型/你到底在用代码做什么?如果写入更新失败,您如何在代码中处理它?