zoukankan      html  css  js  c++  java
  • Zookeeper实现分布式锁服务(Chubby)

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

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

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

    思路


    前期准备

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

     


    获取锁的过程

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

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

     

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

     


     

     

    释放锁的过程

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

     

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

     

     

  • 相关阅读:
    ios手势复习值之换图片-转场动画(纯代码)
    ios地图小例子和手势的使用 供大家参考一下呦
    basicAnimation移动图形
    一个layer可以跟着画完的线移动ios程序 好玩啊。
    kvo深入浅出举例
    kvc简单实现
    block 浅析
    从相册中取图片
    绘图quartz之渐变
    绘图quartz之加水印
  • 原文地址:https://www.cnblogs.com/Evil-Rebe/p/6057067.html
Copyright © 2011-2022 走看看