zookeeper学习笔记(三) —— 锁机制
来源:互联网 发布:js在线格式化工具 编辑:程序博客网 时间:2024/05/29 18:26
加锁
- ZooKeeper 调用create()方法来创建一个路径格式为“ locknode/lock- ”的节点,此节点类型为 sequence (连续)和 ephemeral(临时)。也就是说,创建的节点为临时节点,并且所有的节点连续编号,即“ lock-i ”的格式
- 在创建的锁节点上调用 getChildren ()方法,来获取锁目录下的最小编号节点,并且不设置 watch
- 步骤 2 中获取的节点恰好是步骤 1 中客户端创建的节点,那么此客户端获得此种类型的锁,然后退出操作
- 客户端在锁目录上调用 exists ()方法,并且设置 watch 来监视锁目录下比自己小一个的连续临时节点的状态
- 果监视节点状态发生变化,则跳转到第 2 步,继续进行后续的操作,直到退出锁竞争
解锁
客户端只需要将加锁操作步骤中创建的临时节点删除即可
羊群效应
“羊群效应”就是指大量客户端收到同一事件的通知,但实际只有很少一部分需要处理这一事件。
设想当有成百上千客户端,都在尝试获得锁,每个客户端都会在锁上设置观察,来捕捉节点的变化。每次锁被释放或另一个进程申请获取锁时,观察都会被触发并且每个客户端都会收到一个通知,但只有一个客户端会成功获得锁。这时就会造成大量的峰值流量,给zookeeper服务器造成压力。
为了避免羊群效应,我们需要优化通知事件,将没必要的观察通知去掉,如删除等,只有在前一个顺序号的子节点消失时才需要通知下一个客户端。
0 0
- zookeeper学习笔记(三) —— 锁机制
- Zookeeper学习笔记(三)-Zookeeper的配置
- 学习笔记:Zookeeper选举机制
- Hadoop学习笔记(三)——zookeeper的一致性协议:ZAB
- zookeeper学习系列(五)zookeeper分布式锁机制
- Dubbo学习笔记(三)------Zookeeper注册中心
- zookeeper学习系列(三)zookeeper基本原理
- Zookeeper学习笔记(三)Master选举
- zookeeper—分布式锁实现(笔记)
- zookeeper学习笔记(一) —— centos6.8安装zookeeper以及简单命令
- zookeeper学习笔记(1)——简介
- Zookeeper学习笔记(2)——工作原理
- zookeeper学习笔记(二) —— 应用场景概览
- zookeeper学习笔记(四)—— 入门小记
- zookeeper学习笔记(六)—— 概念
- zookeeper学习笔记——leader选举
- JVM学习笔记(三)——虚拟机类加载机制
- Android Binder 机制初步学习 笔记(三)—— Binder 进程通讯库简介
- 阴影处理
- 模板方法(Template Pattern)
- 剧情插件Cutscene Creator uSequencer 1.3.7.1使用说明一
- Redis 学习笔记(一)安装与配置
- ConcurrentHashMap原理分析
- zookeeper学习笔记(三) —— 锁机制
- mysql常用命令大全
- 如何让android的service一直后台运行
- Android N在lunch时出错
- 卡尔曼滤波在单片机上的使用
- 服务器如何读取文件
- 数据库分页,翻页时会重新查询数据库,导致新数据参入,排序混乱问题解决方法
- mongo从怎么在指定查询条件的前提下从数据库中读出指定key对应的value
- Android基础学习笔记之-ListView用法(一)