zoukankan      html  css  js  c++  java
  • zookeeper什么是分布式锁

    分布式锁:为了防止系统中的多个进程之间相互干扰,我们需要一种分布式协调结束来对这些进程进行调度。而这个分布式协调技术的核心就是实现这个分布式锁。

    分布式锁应该具备哪些条件:

      1. 分布式系统环境下,一个方法同一时间只能被一个机器的一个线程执行

      2. 高可用的获取锁与释放锁

      3. 高性能的获取锁与释放锁

      4. 具备可重入的特征

      5. 具备锁失效机制,防止死锁

      6. 具备非阻塞锁特性,即没有获取到锁将直接返回获取锁失效

    分布式锁的实现有哪些:

      zookeeper:利用zookeeper的顺序临时借点,来实现分布式锁和等待队列。zookeeper的设计初衷就是为了实现分布式锁服务的。

      memcached:原子性操作,只有在key不存在的情况下,才能set成功;

      redis:原子性操作,只有在key不存在的情况下,才能set成功;

    三大致命问题:

      1. 非原子性操作

        1.1 setnx() 宕机

        1.2 expire

      2. 误删锁

        2.1 set(key,value,expire)

        2.2 数据没有操作完

        2.3 操作完成,删除的是下一个jvm的锁

        解决方案,判断是不是自己的锁

      3. 2的基础上

        jvm1要判断是否处理完成

        jvm1数据处理完成后才能释放锁

        jvm1增加守护进程

    引出zookeeper

    概述:

    zookeeper是一个分布式协调服务,

    什么是分布式协调服务?分布式协调服务是为了实现分布式锁;

    什么是分布式锁?是为了多进程之间共享同一资源时希望这个资源有序的访问。

  • 相关阅读:
    shell十三问?
    OS + Linux nmon / nmon analyser / nmon_analyser_v52_1.zip
    nGrinder windows agent / linux agent
    java Base64
    SearchServer Elasticsearch Cluster / kibana
    db mysql / mysql cluster 5.7.19 / my.cnf / thread_pool_stall_limit
    Mininet与真实网络链接的方法
    Install ProcessMaker 3.1 or 3.2 in CentOS/RHEL 7
    软件版本GA,RC,alpha,beta,Build 含义
    paper-9-Research and Implementation of MultiPath TCP on Mobile Smart Deviceses
  • 原文地址:https://www.cnblogs.com/cgy-home/p/11835644.html
Copyright © 2011-2022 走看看