本文涉及:Redis实现分布式锁、Zookeeper分布式锁、数据库实现分布式锁
字面上来说分布式锁是为了跨机器
Redis怎么跨,对比看图片就知道了:

核心思路:把锁状态放到一个独立的公共存储介质里,所有机器实例都去这个公共存储抢锁,以此实现跨机器互斥。
数据库实现分布式锁也是一样的道理(本身redis也是数据库)
这样也就能理解本地锁实际就是锁的信息存储位置所在的范围是有限的(代码执行的虚拟机中)
而Zookeeper是用临时有序节点实现分布式锁的
Zookeeper 分布式锁的锁信息,保存在 Zookeeper 集群的 ZNode(临时有序节点)里,属于独立的共享存储,和 Redis、MySQL 思路一致:锁外置,不在业务服务 JVM 内存。