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

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

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

  • 相关阅读:
    paste DEMO合并文件
    diff 文件比较
    grep DEMO
    tr DEMO
    uniq DEMO
    sort DEMO
    定义提示符 PS1 PS4
    MAVEN修改localRepository不起作用
    java数组初始化
    oracle监听服务无法打开
  • 原文地址:https://www.cnblogs.com/cgy-home/p/11835644.html
Copyright © 2011-2022 走看看