Zookeeper分布式锁解决羊群效应的方案
生活随笔
收集整理的這篇文章主要介紹了
Zookeeper分布式锁解决羊群效应的方案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
勿以浮沙筑高臺
了解什么是羊群效應?
在羊群中一頭羊做了某個動作后一群羊跟著做的行為指羊群效應。
在Zookeeper分布式鎖中會有一個臨時的節點只有拿到節點才能操作,當A線程操作完成后會釋放掉鎖。這個時候分布式系統中就會有大量的線程請求去請求這個線程,如果請求線程過多,一個就4k,如果有幾十萬個,可能需要的寬帶就會到4G甚至40G,導致寬帶阻塞,這就是羊群效應。
Zookeeper的解決方案
為每一個請求的線程創建一個帶唯一編號臨時節點,臨時節點隨著會話的消失而消失。
當線程A操作數據,B線程添加watch事件監聽A節點的數據變化,當A的數據變化完成,臨時節點編號最小的會去拿到這個鎖進行數據的操作。每次拿的時候都會進行排序預防宕機。
原理圖如下:
總結
以上是生活随笔為你收集整理的Zookeeper分布式锁解决羊群效应的方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 断点续传续播的大概原理
- 下一篇: 【Golang】查找-学习笔记