如你所知随着分布式技术的不断发展以及广泛运用分布式系统中的不同节点如何访问共享资源成了一个棘手问题分布式锁是目前一个比较通用的方案。我们将分上下两篇文章来讲解分布式锁实现原理、技术选型。通过经典案例来透析分布式锁的前世今生。希望对大家有借鉴作用。单机锁单机环境中由于共享资源自身无法提供互斥能力。因此为了防止多线程/多进程对共享资源的同时读写访问造成数据的破坏就需要一个第三方提供的互斥的机制一般往往是内核或者提供互斥能力的类库。如下图二所示进程首先从内核/类库获取一把互斥锁拿到锁的进程就可以排他性的访问共享资源演化到分布式环境我们就需要一个提供同样功能的分布式服务不同的机器通过该服务获取一把锁获取到锁的机器就可以排他性的访问共享资源这样的服务我们统称为分布式锁服务锁也就叫分布式锁。由此我们抽象一下分布式锁的概念首先分布式锁需要是一个资源这个资源能够提供并发控制并输出一个排他性的状态也就是锁 资源 并发控制以我们熟悉的单机锁为例Spinlock自旋锁 BOOL CAS 乐观锁Mutex 互斥锁 BOOL CAS 通知 悲观锁Spinlock和Mutex所持有的锁是一个互斥量这个互斥量通常被实现为一个整数值通过原子操作来控制它的状态。