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

zk(Zookeeper)实现分布式锁

Zookeeper实现分布式锁

1,zk中锁的种类:
读锁:大家都可以读,要想上读锁的前提:之前的锁没有写锁
写锁:只有得到写锁的才能写。要想上写锁的前提是:之前没有任何锁
2,zk如何上读锁
创建一个临时序号节点,节点的数据是read,表示的是读锁
获取当前zk中序号比自己小的所有节点
判断最小节点是否是读锁:
如果不是读锁的话,则上锁失败,为最小节点设置监听。阻塞等待,zk的watch机制会当最小节点发生变化时通知当前节点,于是再执行第二步的流程
如果时读锁的话,则上锁成功
3,zk如何上写锁
1, 创建一个临时序号节点,节点的数据时write,表示的是写锁
2, 获取zk中所有的子节点
3, 判断自己是否是最小节点:
如果是则上锁成功
不过不是,说明前面还有锁,则上锁失败,监听最小的节点,如果最小节点有变化则回到第二步

羊群效应: 如果用上述的上锁方式,只要有节点发生变化,则会触发其他节点的监听事件,这样的话zk的压力非常大 ----------可以调整成链式监听,解决这个问题

Curator(Zookeeper的客户端)实现读写锁

相关文章:

  • Java基本数据类型与包装类的区别
  • Linux安装开源版MQTT Broker——EMQX服务器环境从零到一的详细搭建教程
  • Linux驱动开发-网络设备驱动
  • 游戏引擎学习第216天
  • Python 的安装与快速入门
  • 联想电脑开机出现Defalut Boot Device Missing or Boot Failed怎么办
  • nfs共享目录主配置文件权限参数
  • 从“被动跳闸”到“主动预警”:智慧用电系统守护老旧小区安全
  • 为什么我们需要if __name__ == __main__:
  • 十五届蓝桥杯Scratch03月stema选拔赛真题——回文数
  • HTML5 服务器发送事件(Server-Sent Events)
  • YOLOv11改进——注意力机制优化 | 引入SpatialGroupEnhance空间分组增强模块
  • WebGIS 学习路线分享
  • 第二期:[特殊字符] 深入理解MyBatis[特殊字符]MyBatis基础CRUD操作详解[特殊字符]
  • (二十三)安卓开发中数据存储之Room详解
  • 【iOS】UIPageViewController学习
  • 全局前置守卫与购物车页面鉴权
  • upload-labs二次打
  • 深度学习参数设置指南
  • LRU java 实现方式
  • 马上评丨规范隐藏式车门把手,重申安全高于酷炫
  • 澎湃研究所“营商环境研究伙伴计划”启动
  • 马新民卸任外交部条约法律司司长
  • 上海优化营商环境十大攻坚突破任务中,为何第一项是实施世行对标改革?
  • 夜读丨最美的风景,在亲人的目光里
  • 俄乌交换205名被俘人员,俄方人员已抵达白俄罗斯