因此,我尝试使用 memcached 和 add() 的存储来实现分布式锁,前提是不存在合约(Java 和 spymemcached,但当然适用于任何语言)。当然,如果一个实例消失了,那么我们就会失去锁,所以我们想加锁 3 次(例如 MyLock1、MyLock2、MyLock3),这很可能会散列到 3 个不同的实例。
但是,我已经意识到,如果一个实例的哈希值下降,那么显然会发生变化(使用 spymemcached 的重新分发故障模式),因此当再次尝试 add() 锁时,所有 3 个锁的哈希值可能不会匹配 memcached 集群中剩余的 2 个锁中的任何一个。
那么......对于使用 memcached 的分布式锁还有其他想法吗?或者基本上不可能像我所指的那样做一个有保证的锁?
编辑:好的,所以在查看 spymemcached 源代码时,对于 Redistribute 模式,它只是转到其列表中的下一个活动 memcached 实例,而不是重新散列任何东西,所以它应该可以正常工作。