Итак, я пытаюсь реализовать распределенную блокировку, используя хранилище memcached и add(), только если не существует контракта (Java и spymemcached, но, конечно, применимо на любом языке). Конечно, если экземпляр исчезает, мы теряем блокировку, поэтому мы решили добавить блокировку 3 раза (например, MyLock1, MyLock2, MyLock3), что, скорее всего, приведет к хешированию в 3 разных экземпляра.
Но я понял, что если экземпляры теряют хэш, то, очевидно, они меняются (используя режим сбоя перераспределения spymemcached), и поэтому вполне вероятно, что когда будет предпринята еще одна попытка добавить () блокировки, хэши всех 3 блокировок не будут соответствует любой из двух оставшихся блокировок в кластере memcached.
Итак... какие еще идеи для распределенных блокировок с использованием memcached? Или в принципе невозможно сделать гарантированную блокировку, о которой я говорю?
РЕДАКТИРОВАТЬ: Итак, при просмотре исходного кода spymemcached для режима перераспределения он просто переходит к следующему активному экземпляру memcached в своем списке, а не повторно хеширует что-либо, поэтому он должен работать нормально.