内容目录:
工作中经常会遇到争抢共享资源的场景,比如用户抢购秒杀商品,如果不对商品库存进行保护,可能会造成超卖的情况。超卖现象在售卖火车票的场景下更加明显,两个人购买到同一天同一辆列车,相同座位的情况是不允许出现的。交易系统中的退款同样如此,由于网络延迟和重复提交极端时间差的情况下,可能会造成同一个用户重复的退款请求。以上无论是超卖,还是重复退款,都是没有对需要保护的资源或业务进行完善的保护而造成的,从设计方面一定要避免这种情况的发生。
本文以退款交易场景入手,引入分布式锁,尝试分析分布式锁需要考虑关注点,包括以下内容:
锁的引入和局限性
分布式锁的三要素
分布式锁进阶
获取锁操作的原子性
锁与保护共享资源的数据一致性
分布式锁的性能
可重入
公平锁和非公平锁
分布式锁的容错,使用分布式锁时注意考虑哪些问题
