茅台”秒杀"/>
使用redis分布式锁实现“茅台”秒杀
什么是分布式锁?
分布式锁就是:控制分布式系统有序的去对共享资源进行操作,通过互斥来保持一致性。
举个大白话一样的例子:假设共享的资源是一辆共享汽车,这辆车在一个时间只能有一个人去驾驶,分布式系统就好比是要驾驶车的人,分布式锁就是保证这个时间点只能一个人驾驶,并且只有这一把钥匙。然而,有好多人要租车,但是要按顺序来排队,第一个人拿着钥匙去用车,下一个人要等着,当第一个人用完车把车还回来,下一个人才能继续驾驶,然后就是以此类推。
分布式锁的特点
为了保证分布式锁的可用性,必须要满足下面的四点条件!
1.互斥性: 保证同一时间只能有一个客户端拿到锁,也就是可以对共享资源进行操作。
2.安全性: 锁只能被持有该锁的客户端解锁,不能由其他客户端解锁(解铃还需系铃人)。
3.避免死锁: 出现死锁(如down机可能会出现)就会导致后续的任何客户端都拿不到锁,不能再对共享资源进行任何操作了。
4.容错: 保证客户端加锁和解锁操作是原子性操作,当部分节点(redis节点等)down机时,客户端仍然能够获取锁和释放锁。
常见的分布式锁有哪些?
1.数据库乐观锁 通常实现基于数据版本(version)的记录机制实现的。
2.zookeeper的分布式锁 利
更多推荐
使用redis分布式锁实现“茅台”秒杀
发布评论