标签:系统 没有 不同 com blog 返回 否则 int lan
? 如下图所示,成员变量A存在JVM1、JVM2、JVM3三个JVM内存中。由于成员变量A同时都会在三个JVM上分配一块内存:
? 用于实现在分布式系统中多个进程对临界资源的互斥访问,保证分布式系统数据的一致性。
? 分布式协调技术的核心就是实现分布式锁。
(1)互斥性:在分布式系统环境下,同一时间内不同节点的不同线程对特殊资源的互斥访问;
(2)高可用的获取锁和释放锁;
(3)高性能的获取锁和释放锁;
(4)可重入性:同一个节点上的同一个线程如果获取了锁之后还可以可以再次获取这个锁;
(5)锁超时:具备锁超时失效机制,防止死锁;
(6)非阻塞:没有获取到锁将直接接返回获取锁失败支持阻塞和非阻塞;
(7)支持公平锁和非公平锁(可选):公平锁是按照请求加锁的顺序获取锁,非公平锁即随机获取锁。
? Memcached的add命令。此命令是原子性操作,只有在key不存在的情况下,才能add成功,也就意味着线程获得锁。
?Redis分布式锁的实现和Memcached方式类似。利用Redis的原子性操作setnx命令,只有在key不存在的情况下,才能set成功。
?利用Zookeeper的顺序临时节点,来实现分布式锁和等待队列。Zookeeper设计的初衷,就是为了实现分布式锁服务的。
?Google公司实现的粗粒度分布式锁服务,底层利用了Paxos一致性算法。
标签:系统 没有 不同 com blog 返回 否则 int lan
原文地址:https://www.cnblogs.com/DeepInThought/p/10976760.html