分布式锁
快乐的码农一枚
这个作者很懒,什么都没留下…
展开
-
zk 和 redis分布式区别
redis 获取锁的方法比较粗暴,获取不到,则是不断的重试; 不是强一致性的,会在极端的情况下出现问题(时间偏移、红锁半数以上的节点才可以成功,会出现某节点出现宕机。导致两个以上的客户端获取半数以上投票而获取分布式锁、主从节点模式下(主从不一致的情况会导致,两个以上客户端获取分布式锁)) redis的性能比zk高对于zk分布式锁而言:强一致性的特征; 获取不到锁的客户端只需要监听事件则可,无需不停的重试 客户端与zk节点出现网络问题的情况下,会出现锁自动失效的可能(同一局域网下,出现的几率几.原创 2020-06-29 10:08:30 · 3528 阅读 · 0 评论 -
RedissonLock 分布式锁
普通的分布式锁实现 依靠简单的lua脚本;但是缺点是redis单点故障问题无法解决;如果主从架构也无法保证主挂了之前主从是完全同步的 执行时间超过了锁的过期时间;需要启动一个看门狗定时器,再不停的续期;以保证当前线程未处理完成之前不会导致分布式锁失效 为了解决redis单点故障问题,这里引入了redissionLock;依赖几个没有任何主从关系的redis节点 Redlock的实现如下: ...原创 2020-04-30 10:27:18 · 532 阅读 · 0 评论 -
分布式锁
加锁步骤 1)查看key是否存在2)如果不存在,则设置key 值为当前的threadId + 当前服务器的标识ID 和 锁次数 并设置超时时间3)已经存在,查询值是否是当前的线程Id,如果是只 增加锁次数2)已经存在,但是并非当前线程锁定的,则ppl查询其超时时间并返回剩余时间 if (redis.call('exists', KEYS[1])==0) ...原创 2020-01-13 10:18:04 · 97 阅读 · 0 评论 -
redission分布式锁和同步器
可重入锁(Reentrant Lock) 基于Redis的Redisson分布式可重入锁RLockJava对象实现了java.util.concurrent.locks.Lock接口。同时还提供了异步(Async)、反射式(Reactive)和RxJava2标准的接口。 RLock lock = redisson.getLock("anyLock");// 最常见的使用方法lo...转载 2020-01-07 18:00:30 · 612 阅读 · 0 评论