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) 代码片段/数据模型/你到底在用代码做什么?如果写入更新失败,您如何在代码中处理它?
在分布式环境中,每天有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) 代码片段/数据模型/你到底在用代码做什么?如果写入更新失败,您如何在代码中处理它?