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

主从一致性问题是什么?

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

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

Redisson的multiLock原理

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

相关推荐
程序猿乐锅5 小时前
【计算机组成原理 | 第六章】中央处理器 CPU
java·开发语言
大模型丫丫5 小时前
如何提升单体 Spring Boot 应用的并发数?
java·spring boot·后端
Terra.K5 小时前
ThreadLocal解决一个线程里面跨层传递问题
java·开发语言·后端
泡海椒6 小时前
低代码规则开发:JQuick-Java声明式配置驱动开发落地教程
java·低代码·rxjava
吃饱了得干活6 小时前
Redis 从单机到集群:持久化、主从复制、哨兵与集群完全指南
redis·后端
weixin_440730506 小时前
socket解决多次输入问题-大数据接收问题-模块动态导入
java·开发语言·servlet
用户3126874877206 小时前
ReentrantLock 和 synchronized 到底选哪个?源码级对比与选型
java
计算机毕设定制辅导-无忧学长6 小时前
基于Spring Boot的玄幻小说个性化推荐平台设计与实现
java·vue.js·spring boot·后端·mysql·推荐算法
码路漫漫6 小时前
LRU 真的能解决日志按业务 Key 分文件的落地瓶颈吗?
java·后端
带刺的坐椅7 小时前
不只是 Token 流:Solon AI 4.1 的语义化聊天事件
java·stream·event·solon-ai