分布式锁实现

分布式环境下,多台机器上多个进程对一个数据进行操作,如果不做互斥,就有可能出现“余额扣成负数”,或者“商品超卖”的情况,如何实现简易分布式锁,对分布式环境下的临界资源做互斥,是今天将要讨论的话题。

同一进程多线程 互斥 典型的场景 生产者消费模式

1.多线程 同时抢锁

2.只有一个线程抢到 未抢到的阻塞 或者下次再抢。

3 抢到锁的线程操作资源

4释放锁。

 

同一进程 多线程互斥

(1)多个进程同时抢锁

(2)只一个进程抢到,未抢到的阻塞,或下次再来抢

(3)抢到锁的进程操作临界资源

(4)操作完临界资源后释放锁

 

分布式环境下多进程互斥

(1)多台机器上多个进程对这个锁进行争抢,例如在缓存上同时进行set key=123操作

(2)只有一个进程会抢到这个锁,即只有一个进程对缓存set key=123能够成功,不成功的进程下次再来抢

(3)抢到锁的进程对余额进行扣减

(4)扣减完成之后释放锁,即对缓存delete key=123

 

posted @ 2017-04-21 17:02  超超hd  阅读(191)  评论(0编辑  收藏  举报