博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【9】分布式锁
阅读量:5162 次
发布时间:2019-06-13

本文共 930 字,大约阅读时间需要 3 分钟。

1、为什么要使用分布式锁?

  如下图所示,成员变量A存在JVM1、JVM2、JVM3三个JVM内存中。由于成员变量A同时都会在三个JVM上分配一块内存:

  • 若三个请求同时对这个变量操作时,显然结果是不对的;
  • 若三个请求依次分别请求三个不同的JVM内存区域的数据时,由于各JVM之间的变量A不存在共享,也不具有可见性,处理结果也不对。
    这就是分布式锁要解决的问题。
    1659331-20190623135316466-2090590026.png

2、分布式锁概念

  用于实现在分布式系统中多个进程对临界资源的互斥访问,保证分布式系统数据的一致性。

  分布式协调技术的核心就是实现分布式锁。

3、分布式锁的特点

(1)互斥性:在分布式系统环境下,同一时间内不同节点的不同线程对特殊资源的互斥访问;

(2)高可用的获取锁和释放锁;
(3)高性能的获取锁和释放锁;
(4)可重入性:同一个节点上的同一个线程如果获取了锁之后还可以可以再次获取这个锁;
(5)锁超时:具备锁超时失效机制,防止死锁;
(6)非阻塞:没有获取到锁将直接接返回获取锁失败支持阻塞和非阻塞;
(7)支持公平锁和非公平锁(可选):公平锁是按照请求加锁的顺序获取锁,非公平锁即随机获取锁。

4、分布式锁的实现

4.1、Memcached分布式锁

  Memcached的add命令。此命令是原子性操作,只有在key不存在的情况下,才能add成功,也就意味着线程获得锁。

4.2、Redis分布式锁

 Redis分布式锁的实现和Memcached方式类似。利用Redis的原子性操作setnx命令,只有在key不存在的情况下,才能set成功。

4.3、Zookeeper分布式锁

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

4.4、Chubby分布式锁

 Google公司实现的粗粒度分布式锁服务,底层利用了Paxos一致性算法。

作者:
出处:
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/DeepInThought/p/10976760.html

你可能感兴趣的文章
保留小数点三位
查看>>
JavaEE之注解
查看>>
飞机大战项目
查看>>
JZYZOJ1383 [usaco2003feb]impster 位运算 最短路
查看>>
poj_3627Bookshelf
查看>>
java输入输入流图解
查看>>
html5改良的input元素的种类
查看>>
python人脸识别开源库face_recognition
查看>>
【神经网络与深度学习】转-caffe安装吐血总结
查看>>
【VS开发】进程线程及堆栈关系的总结
查看>>
vue三、示例
查看>>
计算机网络资料 - 转
查看>>
string中substr,find函数使用
查看>>
前台后台数据的传递
查看>>
hive基本操作与应用
查看>>
Net基础篇_学习笔记_第十天_方法_方法的练习
查看>>
网站与域名知识扫盲
查看>>
angular自定义指令
查看>>
STM32 SPI 通信
查看>>
运维自动化模式比较
查看>>