Zookeeper分布式锁解决羊群效应的方案

勿以浮沙筑高台


了解什么是羊群效应?
在羊群中一头羊做了某个动作后一群羊跟着做的行为指羊群效应。
在Zookeeper分布式锁中会有一个临时的节点只有拿到节点才能操作,当A线程操作完成后会释放掉锁。这个时候分布式系统中就会有大量的线程请求去请求这个线程,如果请求线程过多,一个就4k,如果有几十万个,可能需要的宽带就会到4G甚至40G,导致宽带阻塞,这就是羊群效应。


Zookeeper的解决方案
为每一个请求的线程创建一个带唯一编号临时节点,临时节点随着会话的消失而消失。
当线程A操作数据,B线程添加watch事件监听A节点的数据变化,当A的数据变化完成,临时节点编号最小的会去拿到这个锁进行数据的操作。每次拿的时候都会进行排序预防宕机。
原理图如下:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值