服了,头条4面:因为一个问题问题砍了我10万薪水( 四 )
第3个特点:监听器
客户端可以对某个节点添加监听器 , 当节点信息发生变化的时候 , zookeeper会通知客户端 , 比如节点数据被修改、节点被删除等等 , 都会通知客户端;
这个特性特别牛逼:这个特别爽 , 后面的节点只需要监听他前面的一个节点 , 当前面的一个节点被删除时 , zookeeper会通知监听者 , 监听者可以判断自己创建的节点编号是不是最小的 , 如果是最小的 , 即获取锁成功 , 这个是不是比上面数据库和redis的方式好一些 , db和redis的方式需要自旋(获取失败了 , 休眠稍许 , 继续循环尝试) , 而zookeeper不需要自旋 , 锁被释放的时候 , zookeeper会通知等待者 。
5.2、代码重点理解原理 , 代码大家可以在网上找找 , 比较多 , 这里就不贴出来了 。
6、方式4:etcdetcd 和 zookeeper功能差不多 , 也可以作为高可用配置中心 , 不过etcd基于Go语言实现 , 也可以用来实现分布式锁 , 实现原理上和zookeeper差不多 , 这里就不细说了 。
7、总结【服了,头条4面:因为一个问题问题砍了我10万薪水】本文主要介绍了4种方式实现分布式锁 , 大家重点要理解每种方式的原理 。
db和redis的方式原理差不多 , 内部在获取失败的情况下 , 都需要采用自旋的方式重新尝试获取锁 , 而zookeeper采用监听的方式 。
redis和zookeeper这2种方式用的比较多 , 性能上面redis更好一些 , 并发量比较大的可以采用redis的方式 。
设计中还有一点:获取锁的时候分2步走 , 先获取jvm中的锁 , 然后再尝试获取分布式锁 。
- 对手|一加9Pro全面曝光,或是小米11最大对手
- 面临|“熟悉的陌生人”不该被边缘化
- 页面|如何简单、快速制作流程图?上班族的画图技巧get
- 桌面|日常使用的软件及网站分享 篇一:几个动态壁纸软件和静态壁纸网站:助你美化你的桌面
- Win10系统桌面|手机桌面秒变Win10电脑系统,这波操作太给力了!
- 覆盖|iPhone13Pro概念机:机身正面被屏幕全覆盖,库克想搞事情?
- 页面|流程图怎样画?老板要我帮他做个组织结构图
- 成本|越拆越亏!旧家电回收面临成本困境:拆解一台旧电视亏损超20元
- 机器人|网络里面的假消息忽悠了非常多的小喷子和小机器人
- 用户|把更多主动权交还给用户,市面上敢这么做的或许只有OriginOS了
