千万不要给女朋友解释 什么是 “羊群效应”

媳妇最近突然爱学习了,各种刷算法、架构方面的题,没日没夜的带娃还有这个劲头,着实让我没想到。看似一片欣欣向荣,不过,长期的生存经验告诉我,这并不是什么好事,事出反常必有妖~

一个测试人员不变着花样找 bug,开始研究代码想制造 bug了,弯转的有点急啊,不过,不管怎么样渴望学习是好事。我这点水平忽悠她,那还不跟欺负小学生一样。

那天突然问我:" 什么是zookeeper的羊群效应?",我有点惊讶,问的挺深入,看来这次是认真学了啊。那得赶紧讲不能打消人家的学习积极性。

其实这是个挺简单的概念,羊群效应常在zookeeper实现分布式锁的场景中发生,建议没接触过ZK的同学先补习下基础知识《一文彻底搞懂 zookeeper 核心知识点》,分析一下zookeeper实现分布式锁的原理就更容易理解了,看下图:

利用zookeeper独特的类似文件系统的数据结构,可以像创建文件夹一样随意创建节点my_lock,节点下可以创建子节点,节点还可以存储数据并生成有序自增的节点IDmy_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)拿她前一个号的那个人就行,前边的人溜达完,后边的赶紧跟上,就这样富仔开始了没羞没臊的大学时光。

我:这回懂了吗?

啪~一个大巴掌落我脑袋上了

暴躁女友:你们在操场干什么了?

我:......

暴躁女友:你是不是早就有这想法了,想当皇帝是嘛,啊!?

我:......

以上故事纯属虚构,如有雷同算你牛批

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,695评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,569评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,130评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,648评论 1 297
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,655评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,268评论 1 309
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,835评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,740评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,286评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,375评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,505评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,185评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,873评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,357评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,466评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,921评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,515评论 2 359

推荐阅读更多精彩内容