Java Aerospike提供旧值但未更新值时出现的罕见情况

Java Aerospike提供旧值但未更新值时出现的罕见情况,java,aerospike,Java,Aerospike,在分布式环境中,每天有200万个请求,我们首先尝试读取数据,然后根据密钥更新aerospike中的数据。但在极少数情况下,当我们读取数据时,它会读取较旧的值 更新该值和读取该值之间的平均时间是这些问题出现的10秒。因此,请有人帮我找出问题出在安装或代码中。您使用的是哪种版本的Aerospike?此外,一次只能实现两个方面。我的猜测是,目前,你的aerospike设置是 从版本4.0开始,您可以选择AP(可用和分区容忍)以及CP(一致和分区容忍)模式 有关aerospike一致性的更多详细信息。如

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


更新该值和读取该值之间的平均时间是这些问题出现的10秒。因此,请有人帮我找出问题出在安装或代码中。

您使用的是哪种版本的Aerospike?此外,一次只能实现两个方面。我的猜测是,目前,你的aerospike设置是

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


有关aerospike一致性的更多详细信息。

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

是否使用强一致性?如果不使用强一致性,我可以看到在使用默认客户端策略运行时出现这种情况的不同情况。简单到写入无法复制(写入时会返回错误)和客户端策略在默认情况下对副本副本重试复制副本有较旧的值…我们使用SalpPIKE版本3.4ver 3.4……从那时起有很多改进,甚至是SelpPIKE不再支持它。我假设你在社区版上。考虑升级。你必须先通过一个跳转版本- 3.13,去最新的。再次投票支持升级,虽然这种情况在最新版本的AP中仍有可能出现,但可能性要小得多。3.13之前的旧分布式系统代码存在一些设计缺陷,这可能会让分区认为它们是同步的,而不是同步的,这很容易表现为这种症状。3.4非常旧,我们的发布过程也很快ses自发布以来有了很大的改进,我强烈建议升级。