目录
1、临时节点实现分布式锁的逻辑
- 实现分布式锁需要借助第三方工具来实现,最常见的有三种方式
- 使用数据库的一个主键id,通过对主键id的删除和插入来实现;
- 借助redis缓存实现分布式锁;
- 借助zookeeper临时顺序节点实现分布式锁,这里主要分析为什么要使用临时顺序节点实现分布式锁。
1.1、zookeeper临时节点的特点
- session连接断开就没了
- 不能够创建子节点
- 不能有同名节点
- 监听节点删除和修改的变化
1.2、临时节点实现分布式锁的逻辑图解
问题
由始至终都只有一个key=lock的临时节点,当一个线程释放锁之后,n个线程会同时被唤醒,尝试创建临时节点,这就是常说的羊群效应;
2、临时顺序节点实现分布式锁,解决羊群效应
2.1 临时顺序节点特点
- session连接断开就没了
- 不能够创建子节点
- 同名节点会在节点名后面添加上序号
- 监听节点删除和修改的变化
2.2 图解临时顺序节点实现分布式锁