使用redis分布式锁实现“茅台”秒杀

什么是分布式锁?

分布式锁就是:控制分布式系统有序的去对共享资源进行操作,通过互斥来保持一致性。
举个大白话一样的例子:假设共享的资源是一辆共享汽车,这辆车在一个时间只能有一个人去驾驶,分布式系统就好比是要驾驶车的人,分布式锁就是保证这个时间点只能一个人驾驶,并且只有这一把钥匙。然而,有好多人要租车,但是要按顺序来排队,第一个人拿着钥匙去用车,下一个人要等着,当第一个人用完车把车还回来,下一个人才能继续驾驶,然后就是以此类推。

分布式锁的特点

为了保证分布式锁的可用性,必须要满足下面的四点条件!

1.互斥性: 保证同一时间只能有一个客户端拿到锁,也就是可以对共享资源进行操作。

2.安全性: 锁只能被持有该锁的客户端解锁,不能由其他客户端解锁(解铃还需系铃人)。

3.避免死锁: 出现死锁(如down机可能会出现)就会导致后续的任何客户端都拿不到锁,不能再对共享资源进行任何操作了。

4.容错: 保证客户端加锁和解锁操作是原子性操作,当部分节点(redis节点等)down机时,客户端仍然能够获取锁和释放锁。

常见的分布式锁有哪些?

1.数据库乐观锁 通常实现基于数据版本(version)的记录机制实现的。

2.zookeeper的分布式锁

猜你喜欢

转载自blog.csdn.net/weixin_44146379/article/details/112383412