1 缘起
曾经在看分布式锁的时候,还是处于了解阶段,
回头总结时,发现有很多细节没有探究到,
本文以-看图说话的方式分析不同的分布式锁方案,
分布式锁需要保证:
(1)互斥性:任意时刻,只有一个客户端可以持有锁;
(2)锁超时释放:保证资源循环利用,避免死锁(长生锁);
(3)可重入性:一个线程可重复申请锁;
(4)安全性:锁只能被持有锁的客户端释放(删除);
(5)高性能和高可用:加锁和释放锁低时延,高可用,避免单机锁失效。
因此,在设计分布式锁方案时,根据高性能要求,选择Redis作为存储介质,
同时,将设计方案细分为非原子方案和原子方案,
梳理成果分享如下,帮助读者系统地了解分布式锁方案,轻松应对知识分享与考核。
2 非原子性方案
非原子性即获取锁和添加过期时间分成两个步骤进行,
先使用setnx获取锁,然