194просмотров
60.4%от подписчиков
13 октября 2025 г.
questionScore: 213
📦 Distributed Locks — как синхронизировать процессы в разных узлах? Когда у тебя несколько инстансов сервиса (например, в Kubernetes или Docker swarm), и каждый может одновременно попытаться изменить одни и те же данные — начинается хаос 🌀 Чтобы этого не произошло, используют распределённые блокировки (Distributed Locks). 🧠 Зачем нужны?
Чтобы гарантировать, что только один процесс выполняет критическую операцию в один момент времени. 🔧 Реализации: Redis (Redlock) — популярный вариант от автора Redis.
Работает через SET resource_name my_random_value NX PX 30000.
Если удалось поставить — ты владелец. Etcd / Zookeeper — используют механизмы watch и lease. PostgreSQL advisory locks — база может быть тоже “lock-сервером”. ⚠️ Главная сложность:
— Нужно учитывать задержки сети и “split brain” — когда сеть рвётся, и два узла думают, что они владеют замком 😬 ✅ Решение:
Алгоритм Redlock — требует 3–5 независимых Redis-нод.
Lock считается валидным, если получил большинство подтверждений (quorum).