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

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

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

  • 相关阅读:
    Bzoj_1562 [NOI2009]变换序列
    Bzoj_1443 [JSOI2009]游戏Game
    Bzoj_3572 [Hnoi2014]世界树
    【python】按顺序排列组合输出字符串
    【python】通过LibreOffice把html文件转换成docx文件
    【python】判断一个地址是ipv4还是ipv6
    【python】判断一个字符串是否是数字
    【python】ImportError: cannot import name 'QWebView'
    【python】ModuleNotFoundError: No module named 'PyQt5.QtWebKitWidgets'
    【GNS3】Error 9: Unknown boot failure
  • 原文地址:https://www.cnblogs.com/cgy-home/p/11835644.html
Copyright © 2020-2023  润新知