分布式锁的实现思路

Posted 性能与架构

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式锁的实现思路相关的知识,希望对你有一定的参考价值。

在分布式系统中,如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰,来保证一致性,在这种情况下,便需要使用到分布式锁

例如有N台服务器同时要对某个文件进行修改,如何才能保证文本不会被写乱,这就是一个简单的分布式锁应用场景

使用zookeeper就可以轻松实现分布式锁

思路


前期准备

在zookeeper中创建一个根节点(Locks),用于后续各个客户端的锁操作




获取锁的过程

想要获取锁的client都在Locks中创建一个自增序的子节点,每个client得到一个序号,相当于排队

如果自己的序号是最小的,就成功获得锁


如果不是最小的,就关注自己前面的那个序号,发现前面那个走了以后,就轮到自己了


分布式锁的实现思路





释放锁的过程

将自己对应的节点删除即可,下一个排队的节点就可以收到通知,从而被唤醒得到锁


例如client A需要释放锁,只需要把对应的节点1删除掉,因为client B已经关注了节点1,那么当节点1被删除后,zookeeper就会通知client B:你是序号最小的了,可以获取锁了






点击 阅读原文 查看 文章列表



以上是关于分布式锁的实现思路的主要内容,如果未能解决你的问题,请参考以下文章

利用 DB 实现分布式锁的思路

基于Redis的分布式锁的简单实现

Redis的分布式锁

Redis的分布式锁

RedisZookeeper实现分布式锁——原理与实践

使用Redis实现分布式锁