Design a Distributed Locking System — Medium System Design Problem