Каркас куратора для zookeeper - межпроцессный мьютекс каждый раз требует 50 мс для получения блокировки

Я использую мьютекс Interprocess framework Curator для создания распределенной блокировки, чтобы зарезервировать некоторый ресурс. Однако я вижу, что zookeeper каждый раз требует 50-100 мс для получения блокировки и 20-40 мс для снятия блокировки. Мое приложение интенсивно записывает и должно отвечать в течение 500 мс для 10-50 запросов в секунду, и я не могу позволить себе выделить 70-140 мс только на получение и снятие блокировки. 1) Можно ли как-то это улучшить? Мой сервер zookeeper и клиент находятся на одном хосте. Я попытался позаботиться о настройке сервера zookeeper, как указано в руководстве по администрированию. 2) Должен ли я использовать для этого какую-то другую структуру/технологию. Мне было интересно, будет ли Redis SETNX лучшим решением или использование Chubby.


person Shiva    schedule 28.07.2014    source источник


Ответы (1)


Zookeeper в первую очередь разработан, чтобы быть последовательным, а во-вторых, чтобы быть быстрым. Последовательность приходит с затратами на координацию. Это всегда будет добавлять задержки. Что вы могли сделать, так это выполнить сегментирование на основе вашей работы и использовать блокировку только на уровне рабочего. Это позволит избежать дополнительных затрат на блокировки Zookeeper за счет добавления сложности при добавлении или удалении воркеров.

person Ztyx    schedule 08.05.2015