Как реализовать distributed lock на Go?

Senior
137 просмотров
AFK Offer AI

Redis: SET key value NX EX 30 (acquire), Lua скрипт для release (проверь owner, потом DEL). Проблема: если процесс завис дольше TTL — лок протухает. Решение: fencing token (монотонный счётчик). Более надёжно: etcd lease + KeepAlive. В PostgreSQL: advisory locks (pg_advisory_lock). Go: wrapper с context для timeout на acquire.

Следующий вопрос

Что произойдёт: var ch chan int; <-ch?