美文网首页
基于zookeeper的分布式锁

基于zookeeper的分布式锁

作者: 福杯满溢 | 来源:发表于2018-07-28 20:13 被阅读0次

    复习

    zookeeper的节点类型:
    1. 持久节点
    2. 临时节点
    3. 持久顺序节点
    4. 临时顺序节点
    
    基于zookeeper的分布式锁使用了【临时顺序节点】
    

    临时顺序节点

    在创建节点的时候,zookeeper根据创建的时间顺序给该节点进行编号,
    当创建节点的客户端与zk断开连接后,临时节点会被删除
    

    zk实现分布式锁原理 - 加锁

    1. 首先创建一个跟节点:parent-lock
    2. 如果有3个client对同一个资源-resource进行锁定。分别是client1, client2, client3
    3. client1尝试对resource进行锁定,在/parent-lock下创建了一个临时顺序节点lock-1,
    然后client1查找/parent-lock下所有的临时节点并进行排序,判断自己创建的节点lock-1是不是顺序最靠前的一个,如果是第一个,就成功获取了锁。
    4. 之后client2在/parent-lock创建临时顺序节点lock-2, 之后查找这个节点是不是最靠前的一个,
    发现不是,那么client2会向lock-1注册watcher,用于监听lock-1是否存在,同时client2抢锁失败,进入等待状态。
    5. 之后client3也会尝试获取锁,由于不是最靠前的一个,会采取client2一样的操作。
    

    zk实现分布式锁原理 - 解锁

    1. 客户端显式的删除自己创建的节点,释放锁,如果删除成功,那么其他client对其注册的watcher会通知其他节点,
    告诉其他节点该节点已经删除,可以重试获取锁。
    2. 如果client崩溃了,那么就对断开zk,其自己创建的节点就会自动删除。
    
    

    相关文章

      网友评论

          本文标题:基于zookeeper的分布式锁

          本文链接:https://www.haomeiwen.com/subject/socamftx.html