1、什么是分布式锁?
当多个进程在同一个系统中,用分布式锁控制多个进程对资源的访问。传统的单体应用单机部署情况下,可以使用java并发处理相关的API进行互斥控制。分布式系统后由于多线程,多进程分布在不同机器上,使单机部署情况下的并发控制锁策略失效,为了解决跨JVM互斥机制来控制共享资源的访问,这就是分布式锁的来源;分布式锁应用场景大都是高并发、大流量场景。
2、分布式锁实现
(1)、redis分布式锁的实现
-
加锁机制:根据hash节点选择一个客户端执行lua脚本
-
锁互斥机制:再来一个客户端执行同样的lua脚本会提示已经存在锁,然后进入循环一直尝试加锁
-
可重入机制
-
watch dog自动延期机制
-
释放锁机制
大约 19 分钟