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