2016-06-01 6 views
0

Извините, что я новичок в Distributed Lock и Redis, я слышал о Redis это однопоточный сервер. Поэтому Мой вопрос: зачем нам distributed lock management для Redis? Например, второй поток (инициированный клиентом B) не прерывает предыдущий поток до тех пор, пока не будет выполнена работа первого потока (инициированный клиентом A). Даже оба потока работают с одними и теми же данными. Я знал, что должен пропустить что-то. Пожалуйста, помогите мне исправить. Благодарю.Зачем нам нужен распределенный замок в Redis

ответ

1

Я думаю, что распределенная блокировка не касается самого redis (вам все равно, будь то однопоточность или нет), а скорее ваше приложение.

Его ясно, что такое «обычная» (не распределенная) блокировка, но она работает с многопоточным приложением в одном JVM.

Слово «распределенное» добавляет способ синхронизации доступа к некоторому ресурсу во многих JVM, так что только одна JVM будет выполнять критический раздел.

Теперь, как указано в статье, которую вы ссылаетесь, возможно реализовать блокировку с помощью команды «SET», но основная проблема с такой реализацией - это единственная точка отказа самого redis, поэтому они говорят о алгоритме Redlock, который поддерживает получение блокировки на основе состояния многих независимых машин redis. Обратите внимание, что в любой точке этого нам все равно, действительно ли redis является одно- или многопоточным.

Все. Надеюсь, что это поможет

+0

ах ... Как говорится в статье. «Распределенные блокировки - очень полезный примитив во многих средах, где разные процессы должны взаимодействовать с общими ресурсами взаимоисключающим образом». Он действительно упомянул «Несколько процессов». а не просто «Несколько потоков». –

+0

Точно. Вот пример того, почему вам может понадобиться DL: Скажем, у вас есть аналитика db. И скажите, что вы хотите создать отчет, который работает с этим db, и вы знаете, что если 2 пользователя попытаются создать отчет одновременно, будут происходить плохие вещи. Теперь, поскольку ваше приложение запущено в кластере, вы должны гарантировать, что будет создан только один отчет за раз, независимо от того, на какой машине (вы охраняете db). Таким образом, Distributed Lock может помочь здесь. –

+0

Что означает единственный экземпляр в части «Корректная реализация с одним экземпляром»? Означает ли это случай, когда происходит переключение на «мастер-раб»? Благодарю. –