真的,千万不要给女朋友解释 什么是 “羊群效应”
“
千万别给自己女朋友以任何方式讲技术,问就是不知道,长寿秘诀~
”
媳妇最近突然爱学习了,各种刷算法、架构方面的题,没日没夜的带娃还有这个劲头,着实让我没想到。看似一片欣欣向荣,不过,长期的生存经验告诉我,这并不是什么好事,事出反常必有妖~
一个测试人员不变着花样找 bug,开始研究代码想制造 bug了,弯转的有点急啊,不过,不管怎么样渴望学习是好事。我这点水平忽悠她,那还不跟欺负小学生一样。
那天突然问我:" 什么是 zookeeper
的羊群效应?",我有点惊讶,问的挺深入,看来这次是认真学了啊。那得赶紧讲不能打消人家的学习积极性。
其实这是个挺简单的概念,羊群效应常在zookeeper
实现分布式锁的场景中发生,分析一下zookeeper
实现分布式锁的原理就更容易理解了,看下图:
利用zookeeper
独特的类似文件系统的数据结构,可以像创建文件夹一样随意创建节点my_lock
,节点下可以创建子节点,节点还可以存储数据并生成有序自增的节点ID my_lock_00000001 .... my_lock_0000000N
等。这样先创建的节点序号ID 就越小,谁的节点ID 最小则视为拿到锁,拿到锁的节点处理完业务后删除对应节点释放锁。
而没拿到锁的线程通过设置watcher
监控节点my_lock
,一旦发现该节点下有线程释放锁删除子节点,其余 所有线程 重新获取my_lock
下 全部子节点 比较自身节点是否为最小,最小则获得锁,一直如此重复,直到所有线程都拿到锁。
那这样就产生一个现象,在整个分布式锁的竞争过程中,存在大量重复运行的动作,并且绝大多数都是无效操作,判断出自己并非是序号最小的节点,从而继续等待下一次通知,这就是所谓的 “羊群效应
”。
如果节点数量足够多,当删除一个节点大量客户端同时监听,比较自己自身节点是否为最小,就会产生大量的网络开销,会大大降低整个zookeeper
集群的性能,所以必须对现有的分布式锁进行优化,如下图:
既然只想判断自身是不是最小的节点,那么每次比较的时候,比如 my_lock_00000002
发现自己不是最小节点后,这时只要找到前一个节点my_lock_00000001
并watcher
监控它。当my_lock_00000001
释放锁删除节点,则会通知节点my_lock_00000002
该你拿锁了,其他节点以此类推,这样有序监听就解决了“羊群效应
”。
吧啦吧啦半天,给我自己都讲嗨了,我问人家懂了嘛,她来一句:懂了一丢丢,要不你再讲一遍?
对于这种颜值高过智商的选手,我决定换一种讲解思路,用一个故事打动她~
咳~ 咳~ 咳~ 开始了
学以致用
未来的某一天,富仔(ZK
)睁眼突然发现自己穿越到了大学时代,躺在某师范学院的宿舍床上,脸竟然还被换成了吴某凡的。这让原本贫瘠的颜值一下子达到巅峰,再也不用因为是班里唯一的男生,但又没女生喜欢而自卑了。
帅归帅课还是要上的,不巧这天上课迟到了,富仔刚推开阶梯教室的大门,突然有个美女尖叫着大喊:“看,富仔今天好帅!”,顿时屋内一阵骚乱,大家左顾右盼,面面相觑。
突然,众美女们一窝蜂的向他扑过来,这时有个叫杨某幂(线程1
)的美女眼疾手快,一把抓住他的手,问能不能陪她去操场溜达一圈(处理业务
),富仔这人心软,一看她楚楚可怜的样子就答应了,杨某幂立马拉着他的手飞奔向操场。其他的美女略显失落的回到座位。
十分钟后,做完该做的,富仔还是心心念念着学业,执意坚持去上课,回到教室门口松开杨某幂的手,准备走向自己的座位。
此时众美女们又一拥而上,这回是一个叫唐某嫣(线程2
)的美女得手了,问富仔是不是也能陪她溜达一圈,富仔看她不是那么好看,委婉的拒绝了(不是最小
)。
后边的郑某爽(线程3
)一把推开唐某嫣抓住富仔的手,问能不能陪她,富仔看着这妹子颜值不错,果断答应了~
这样几次以后导员(ZK集群服务
)看不下去了,严厉的与富仔交涉,虽然你的容貌惊为天人,但是你不能影响课堂纪律,同学们天天在教室练百米冲刺可不行,没法专心学习了。
富仔一想觉得非常有道理,告诉妹子们不用天天盯着自己了,还是要专心学习。
于是为全班妹子放了号,排了值日表,谁拿的号越靠前谁优先得到富仔溜达权,后边的人只要盯住(watcher
)拿她前一个号的那个人就行,前边的人溜达完,后边的赶紧跟上,就这样富仔开始了没羞没臊的大学时光。
我:这回懂了吗?
啪~ 一个大巴掌落我脑袋上了
暴躁女友:你们在操场干什么了?
我:......
暴躁女友:你是不是早就有这想法了,想当皇帝是嘛,啊!?
我:......
以上故事纯属虚构,如有雷同算你牛批
特别推荐一个分享架构+算法的优质内容,还没关注的小伙伴,可以长按关注一下:长按订阅更多精彩▼如有收获,点个在看,诚挚感谢
真的,千万不要给女朋友解释 什么是 “羊群效应”相关推荐
- 漫话:如何给女朋友解释什么是单例模式?
本文转载于公众号:漫画编程 周末了,临近五一劳动节,女朋友还没有想好要去哪里玩,还在看着各种攻略.我则在旁边一边看书默默的心疼着我的钱包.突然女朋友开始发问: 什么是单例 单例模式,也叫单子模式,是一 ...
- 漫话:如何给女朋友解释什么是熔断?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 最近比较忙,白天上班,晚上还得面试,都没有时间关注新闻.某天晚上刚 ...
- 如何给女朋友解释什么是3PC?
戳蓝字"CSDN云计算"关注我们哦! 一顿愉快的小火锅之后,悠哉悠哉的回家了,于是只能开始新一轮的家庭科普了. 分布式一致性 幸好在<漫话:如何给女朋友解释什么是2PC(二阶 ...
- 漫话:如何给女朋友解释什么是3PC?
一顿愉快的小火锅之后,悠哉悠哉的回家了,于是只能开始新一轮的家庭科普了. 分布式一致性 幸好在<漫话:如何给女朋友解释什么是2PC(二阶段提交)?>中介绍过关于2PC的知识,要不然这事儿可 ...
- 漫话:如何给女朋友解释什么是适配器模式?
本文经授权转载自微信公众号:漫话编程 周末窝在家里面打王者荣耀,女朋友在旁边玩我的电脑,我嫌她播放的综艺节目声音比较大,于是建议她戴耳机. 适配器模式 Adapter Pattern,通常被翻译成适配 ...
- 漫话:如何给女朋友解释什么是BIO、NIO和AIO?
本文经授权转载自微信公众号:漫话编程 周末午后,在家里面进行电话面试,我问了面试者几个关于IO的问题,其中包括什么是BIO.NIO和AIO?三者有什么区别?具体如何使用等问题,但是面试者回答的并不是很 ...
- java 日期加一天_漫话:如何给女朋友解释为什么一到年底,部分网站就会出现日期混乱的现象?...
2019年最后一天,在家里看着跨年晚会,享受着这一年最后一天的闲暇时光,女朋友在旁边玩手机.看了一会之后她突然问我一些很奇怪的问题. 于是我拿过他的手机,看到了下面这一幕: 这是微信官方出的公众号管理 ...
- 漫话:如何给女朋友解释什么是 3PC?
作者 | 漫话编程 本文经授权转载自漫话编程(ID:mhcoding) 责编 | 胡巍巍 一顿愉快的小火锅之后,悠哉悠哉的回家了,于是只能开始新一轮的家庭科普了. 分布式一致性 幸好在<漫话:如 ...
- 漫话:如何给女朋友解释什么是语法糖?
语法糖 语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家Peter J. Landin发明的一个技术术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响, ...
最新文章
- 摸清全国农村集体家底-农业大健康:产权改革谋定清产核资
- 【ARM】ARM体系结构-GPIO
- vi在一般指令模式下几个实用的命令
- 使用dynDNS+openSSH+putty突破公司防火墙
- 再次“重新定义” 华为争做数据基础设施领航者
- C语言非常大的数组,关于最大子数组问题
- 22. 链表中倒数第k个节点
- ipv4广播地址怎么填_什么是IP地址?IP地址有什么用?网络工程师来告诉你
- ROS-SLAM仿真-hector
- OO前三次作业简单总结
- golang 框架_Golang:数据库ORM框架gorm详解
- python显示gif图片报错_用Python制作在地图上模拟瘟疫扩散的Gif图
- asp.net上传图片,上传图片
- Eclipse / Java代码完成无法正常工作
- 一文看懂PPPoE协议——PPPoE协议简介
- linux删除文件后不释放磁盘的问题
- 学生作业管理系统java源码_基于jsp的学生作业管理-JavaEE实现学生作业管理 - java项目源码...
- SDIO接口(4)——SDIO通信
- win10商店游戏存档修改
- python打开方式包括_运行Python程序有两种方式:________和________。
热门文章
- MySQL 中的共享表空间与独立表空间如何选择
- VBS遍历Excel工作表的方法
- C语言实现长整数连加,二个超长正整数的相加
- 回溯法排序树怎么画_kd tree(k-dimensional树的简称)
- poj2387(SPFA算法)
- 关于学习Python的一点学习总结(18->序列解包)
- python 推迟运行_一文看懂Python的time模块sleep()方法和strftime()方法
- 一文让你完全弄懂逻辑回归和分类问题实战《繁凡的深度学习笔记》第 3 章 分类问题与信息论基础(上)(DL笔记整理系列)
- 【每日DP】day6 P1541 乌龟棋(四维DP)难度⭐⭐⭐
- corn java 可配置_SpringBoot——目前Java开发最流行的框架(四)