Как реализовать секвенсоры блокировок в стиле Chubby с помощью ZooKeeper?

Диспетчер распределенных блокировок Google Chubby имеет функцию, называемую «секвенсоры», которую я хотел бы эмулировать с помощью ZooKeeper. Есть ли известный хороший способ сделать это?

Секвенсор работает следующим образом:

  1. Клиент получает блокировку ресурса
  2. Клиент запрашивает блокировку у секвенсора, которая представляет собой строку с некоторыми метаданными
  3. Клиент вызывает службу и передает секвенсор в качестве параметра
  4. Служба использует секвенсор для проверки того, что клиент все еще удерживает блокировку перед обработкой запроса

Цель состоит в том, чтобы предотвратить ситуацию, когда клиент умирает после вызов удаленной службы, которая должна быть защищена блокировкой.

Основная статья о Чабби доступна по адресу http://research.google.com/archive/chubby.html . Секвенсоры обсуждаются в разделе 2.4.

Спасибо!

5
задан Chris Sears 9 January 2012 в 21:05
поделиться