当前位置: 首页 > news >正文

Redisson和Zookeeper实现的分布式锁

获取锁成功后会另开一个线程进行监控
在这里插入图片描述
redisson实现的分布式锁是可重入的
在这里插入图片描述
因为他保存了线程id可以以此去判断是不是同一个线程在获取锁,是的话就可以把重入次数+1

这个分布式锁是解决不了主从模式下,主节点挂了以后导致的数据不一致问题的。可以使用红锁来解决不一致问题,建立多个主节点当获取锁成功的数量n/2+1及以上才算获取锁成功。但这种红锁性能太低一般不被使用。

ZooKeeper 实现分布式锁的经典方案:顺序临时节点
加锁过程
创建锁节点:
客户端尝试在指定的锁目录下(例如 /locks/my_lock)创建一个临时顺序节点。
假设 ZooKeeper 生成的实际节点名为 /locks/my_lock/_lock_000000001。
检查自己是否是最小节点:
客户端获取 /locks/my_lock 目录下所有的子节点,并按节点序号排序。
如果自己创建的节点是序号最小的那个,则成功获取锁。
监听前一个节点(如果自己不是最小):
如果自己不是最小节点,客户端就找到比自己序号小的前一个节点。
对这个前一个节点设置 Watcher 监听。
然后进入等待,不再轮询。
等待锁释放:
当前一个节点被删除(即锁被释放)时,ZooKeeper 会通过 Watcher 通知当前客户端。
客户端被唤醒后,回到第 2 步,重新检查自己是否变成了最小节点。

我觉得就是一个排队,创建节点后看自己是不是最小,不是最小就监听前一个节点,是最小就获取锁成功,锁释放以后,zookeeper会通过Watcher通知当前客户端。

http://www.dtcms.com/a/406077.html

相关文章:

  • 基于51单片机宠物喂食系统设计
  • 游戏外挂和游戏逆向的关系
  • 【Vue3 ✨】Vue3 入门之旅 · 第九篇:Vue3 插槽机制
  • linux系统(ubuntu)安装mysql8详细教程
  • web微服务介绍
  • MongoDB副本集
  • 408操作系统复习笔记——关于IO层次结构与执行流程-冲刺120+
  • 微信认证 网站wordpress音乐插件歌词
  • Ansible Playbook
  • ARM—时钟(CLOCK)—定时器(EPIT / GPT)
  • 基于IMX6ULL的时钟,定时器(EPIT,GPT)
  • HCIE 的云计算方向容易考过吗?该怎么准备考试?
  • 凤山县住房和城乡建设局网站wordpress中国能用吗
  • 从 EFI 到 GPT:深入理解现代计算机启动与磁盘分区技术
  • 计算机网络的性能指标和体系结构
  • 性能怪兽:GPT-5-Codex三大核心进化,重新定义AI编程
  • 网络通信协议全解析:HTTP/UDP/TCP核心要点
  • 郴州网站建设软件定制开发平台e盘网站建设
  • 在Unix/Linux中bash/sh/source以及./执行脚本的区别
  • 宜春公司做网站双语网站建设定制开发
  • Spring Boot 应用启动组件加载顺序与优先级详解
  • Spring Boot 事件发布与监听 观察者模式的实际应用
  • Sui Stack Messaging SDK:为 Web3 打造可编程通信
  • 光谱相机的未来趋势
  • 【Java后端】《Spring Boot Starter 原理详解》博客
  • 设计与绘制一个网站首页同学录wordpress
  • Vue2的生命周期
  • MySQL学习笔记04:MySQL InnoDB存储引擎核心机制深度解析
  • 中国企业网站建设响应式网站管理
  • 遇到不会的事,先写一写