Redisson分布式锁主从一致性问题

主从一致性问题是什么?

单机模式下,服务器宕机会造成严重的后果,因此企业实际开发中往往是多台服务器集群模式。集群模式下分为主节点和从节点,主节点负责写操作,如增删改,从节点负责读操作,从主节点中读取数据,因此数据主要存在主节点。

主从同步不可避免存在延迟,这就会导致当Java应用向主节点发送获取锁的请求,主节点接收请求后,锁的信息存储到主节点,此时主从之间还没来得及同步,主节点发生宕机,redis的哨兵发现主节点宕机后会在剩余的从节点选择一个作为新的主节点,但此时新的主节点没有之前的锁,即之前设置的锁已失效,当新的线程发来请求,又可以获取到锁,两个线程就可能发生并发的问题,这就是分布式锁主从一致性问题。

Redisson的multiLock原理

为了解决这个问题,redission提出来了MutiLock锁,使用这把锁咱们就不使用主从了,每个节点的地位都是一样的, 这把锁加锁的逻辑需要写入到每一个主丛节点上,只有所有的服务器都写入成功,此时才是加锁成功,假设现在某个节点挂了,那么它去获得锁的时候,只要有一个节点拿不到,都不能算是加锁成功,就保证了加锁的可靠性。

相关推荐
IT_Octopus13 小时前
Spring Boot 中 ThreadLocal 请求上下文的完整生命周期
java·spring boot·spring
YOU OU14 小时前
Redis哨兵 & 集群
数据库·redis·sentinel
用户409666013175114 小时前
Lombok 你用对了吗?@Data 之外的 6 个隐藏神器
java·后端·代码规范
梅头脑14 小时前
交易跨10个库、日均千万订单——选错一次分布式事务方案,加班三个月重写
java·分布式
久久学姐14 小时前
基础转码学 AI:Java+Python 双语言入门,3 个月可落地实战项目
java·python·ai·转码·实战项目
花生了什么事o14 小时前
synchronized 与 ReentrantLock:Java 锁机制原理与实现对比
java·开发语言
长不胖的路人甲15 小时前
Serial 串行、Parallel 并行、CMS 并发收集器
java·开发语言·jvm
IT_Octopus16 小时前
Spring Boot 线程池关闭:destroyMethod 的作用与最佳实践
java·spring boot·后端
亦暖筑序16 小时前
AgentScope-Java 入门:完善 Vue 前端、发布 GitHub,并规划下一步
java·前端·vue.js
wddptwd2816 小时前
android studio 报错怎么处理 java.lang.NullPointerException
android·java·android studio