zoukankan      html  css  js  c++  java
  • 分布式锁

      分布式的CAP理论告诉我们:任何一个分布式系统都无法同时满足一致性,分区容错性,可用性,最多只能同时满足两项。 

    分布式系统与单机系统的区别:
      1.分布式系统不是多线程而是多进程。

      2.多ianchengyouyu可以共享堆内存,因此可以简单的菜与内存作为标记存储位置;而进程之间可能都不在一台物理机上,因此需要将标记存储在一个所有进程都可见的地方。

    线程锁:为了实现多个线程在同一时刻同一代码块只有一个线程可以执行,那么需要在某个地方做标记(堆内存),这个标记必须每个线程都能看见,当标记不存在时设置标记,后续线程发现已经有标记了则等待用有标记的线程,结束同步代码块取消标记后再尝试设置标记,这个标记可以理解为锁。

    分布式锁实现方法


    基于Redis做分布式锁    所用Redis方法setnx()、expire()

    方法介绍:  setnx(key,value)   方法是原子的  如果设置key不存在,则设置当前key成功,返回1;

            如果当前key已经存在,则设置当前key失败,返回0。

           expire()  设置过期时间,因为setnx命令不能设置key的超时时间,只能通过expire()来对key设置。

    设置步骤:  1.setnx(lockkey,1)如果返回0,说明上锁失败,有线程在调用方法

           2.expire()对lockkey设置超时时间,避免死锁。

              3.执行完业务代码后,可以通过delete命令删除key

    漏洞:上述方案在setnx执行成功后,expire执行成功前发生宕机的现象,依然会出现死锁方案。

  • 相关阅读:
    python cook 整理
    Ajax
    跨站请求伪造 CSRF
    tornado web
    python hashable
    扩大了一个逻辑卷,resize2fs 保错:没有这个超级块
    linux重启后进入了救援模式,无法远程登录
    如何安装JDK以及配置win10的环境变量
    输出菱形
    6.28作业(2.使用3种方式求100以内偶数和)
  • 原文地址:https://www.cnblogs.com/lenlen/p/10115120.html
Copyright © 2011-2022 走看看