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是一个分布式协调服务,

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

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

原文地址:https://www.cnblogs.com/cgy-home/p/11835644.html