分布式锁
思路:首先创建一个锁节点,需要获得锁的机器在锁节点下创建顺序临时节点,序号1的节点获得锁,获得锁的机器删除节点或者自己挂掉则自动释放节点了,序号2的节点创建时需要监听序号1的节点,节点1挂掉之后收到通知便获得锁,避免羊群效应。
分布式读写锁
思路:首先创建锁节点,需要获取读写锁的机器对锁节点的子节点列表进行监听,并且在锁节点下创建节点
对于需要获得读权限的机器收到通知时:
if 比自己序号小的节点都是读节点
获得读写锁
else
继续等待
对于需要获得写权限的机器收到通知时:
if 如果自己是最小序号的节点
获得读写锁
else
继续等待
分布式栅栏
思路:首先创建锁节点,锁节点值为n,参与栅栏的节点注册对所节点的监听并在锁节点下创建节点,当监听到锁节点下的子节点个数为n时则冲破栅栏,并且删除子节点
分布式信号量
思路:首先创建锁节点,锁节点值为n,即信号量数目,需要获取信号量的节点对锁节点的子节点列表进行监听并在锁节点下创建顺序节点,收到锁节点通知时判断比自己序号小的节点个数是否小于n,如果是则获得信号量,如果不是继续等待
分布式闭锁
思路:与分布式栅栏类似,区别是需要获得闭锁的机器不需要创建节点只需要监听,当子节点个数达到n时获得闭锁
网友评论