1. 前言
对于一个在线运行的系统,如果需要修改数据库已有数据,需要先读取旧数据,再写入新数据。因为读数据和写数据不是原子操作,所以在高并发的场景下,关注的数据可能会修改失败,需要使用锁控制。
2. 分布式场景
2.1 分布式锁场景
面试官提问: 为什么要使用分布式锁?分布式锁解决了什么问题?
题目解析:
首先分析锁的应用场景,我们对于已有数据的修改可以归纳为两个动作:
(1)读旧数据;
(2)写新数据。
然后分析并发操作导致脏数据的过程:
对于并发执行的两次请求,两个请求同时读到旧数据值为 10,第一个请求执行操作后新值为 30