一、分布式锁
分布式锁是指在跨进程、跨服务器、跨网络的情况下对共享资源的互斥访问,保证数据一致性。
二、zookeeper实现分布式锁
1、zookeeper上的locker节点创建子节点node_now
2、获取locker节点上的所有子节点,并排序
3、判断当前节点是否是最小的节点,是:当前进程获取了分布式锁;否:找到最小的节点,事件监听,获取锁
三、redis实现分布式锁
使用Redisson框架,实现分布式锁。
Redisson框架的原理:
1、使用Hash计算获取一台cluster资源
2、使用setnx尝试加锁,返回1,则加锁成功,返回0则失败
3、加锁成功:会有watcher线程定时检查当前进程是否仍在持有锁,持有的话会将key的存活时间延长
4、加锁失败:while循环,一直在尝试获取锁
参考:
https://blog.csdn.net/u011191463/article/details/78658036
https://blog.csdn.net/shuangyueliao/article/details/89344256
网友评论