zoukankan      html  css  js  c++  java
  • Zookeeper分布式协调即分布式锁机制

    主要用到的Zookeeper机制:

    临时+有序节点,节点watch机制

    过程:

    1. 发生分布式锁竞争时,参与竞争的各个客户端服务都到Zookeeper的同一父节点(代表着同一把锁)下建立自己的临时+有序子节点,创建成功后子节点名被zk返回给客户端,各客户端保存在本地。
    2. 所有客户端服务都拉取父节点下的子节点列表,通过对列表排序,将自己本地存储的节点名与列表中的节点名比较:
      • 若本地节点与列表中最小的节点相同则表示拿到了锁,此服务得到执行后续逻辑的机会。
      • 若本地节点不是列表中最小的,则表明拿锁失败,转而监听比自己小1位的节点在zookeeper中的实际节点,其余节点亦然,从而完成了整体的监听与排队等待。
      • 成功得锁的服务执行完毕后就断开与zookeeper的session,zookeeper中与之对应的节点自动删除,此时触发监听。
      • 删除节点的事件被下一个服务监听到,又触发它拉取一次列表,做同样的比较,发现自己是最小的节点,此时它拿到了锁,获得执行权限,以此类推各服务互斥的逐个得到执行。
  • 相关阅读:
    Java流程
    Java对于byte/short/char三种类型的注意事项
    JShell
    Java方法
    ubuntu14.04开启crontab日志
    ubuntu14.04开启crontab日志
    hive数据文件简单合并
    hive数据文件简单合并
    Sqoop增量从MySQL中向hive导入数据
    Sqoop增量从MySQL中向hive导入数据
  • 原文地址:https://www.cnblogs.com/JaxYoun/p/12334848.html
Copyright © 2011-2022 走看看