主题
面试速答(先看这里)
**一句话结论:**所以说,我们虽然通过加锁的方式防止了一些并发,但是我们拦截的都是我们不希望他们发生的,或者说是异常并发。
60秒标准回答:
很多面试官咋问关于分布式锁的问题之后,会追加一句:你这个地方用了分布式锁,那不是影响了并发度了么。这么做真的合适吗?
很多人容易被问蒙了,不知道该如何回答。确实加了分布式锁是会影响并发度的。那么他就不是一个好的方案了吗?
其实,这里是大家忽略了对于并发的理解
**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点
回答主线:
- **要点1:**很多面试官咋问关于分布式锁的问题之后,会追加一句:你这个地方用了分布式锁,那不是影响了并发度了么。
- **要点2:**很多人容易被问蒙了,不知道该如何回答。
- **要点3:**我们说,加分布式锁的目的是什么?
- **要点4:**那么这里加锁防止的并发是什么?
- **要点5:**那我们通常说的系统的并发,如抗的QPS,这个并发指的是什么?
**记忆锚点:**于共享资源的争抢并发 → 们通常说的系统的并发 → 的方式防止了一些并发 → 官咋问关于分布式锁 → 个地方用了分布式锁 → 我们才会加分布式锁
关键取舍:
- 其实是对于共享资源的争抢并发,比如重复下单,消息重投等等的。
- 但是,正是因为我们拦住了,使得系统不需要去浪费资源处理这些重复请求,那么就可以有更多资源响应其他用户的正常请求了。
易错提醒:
- 很多人容易被问蒙了,不知道该如何回答。
追问准备:
- 这么做真的合适吗?
- 那么他就不是一个好的方案了吗?
- 我们说,加分布式锁的目的是什么?
- 这里的并发是什么并发?
典型回答
很多面试官咋问关于分布式锁的问题之后,会追加一句:你这个地方用了分布式锁,那不是影响了并发度了么。这么做真的合适吗?
很多人容易被问蒙了,不知道该如何回答。确实加了分布式锁是会影响并发度的。那么他就不是一个好的方案了吗?
其实,这里是大家忽略了对于并发的理解。
我们说,加分布式锁的目的是什么?防止发生并发?这里的并发是什么并发?其实是对于共享资源的争抢并发,比如重复下单,消息重投等等的。这种情况下我们才会加分布式锁来防止出现错误。
那么这里加锁防止的并发是什么?是同一个用户的同一个行为的重复操作!
那我们通常说的系统的并发,如抗的QPS,这个并发指的是什么?是一个提供同一时段能响应的请求数,这里的请求包含同一个用户的,也包含不同用户的。
虽然我们加锁把一个用户的重复请求给拦住了。但是,正是因为我们拦住了,使得系统不需要去浪费资源处理这些重复请求,那么就可以有更多资源响应其他用户的正常请求了。
所以说,我们虽然通过加锁的方式防止了一些并发,但是我们拦截的都是我们不希望他们发生的,或者说是异常并发。但是系统的整体并发并没啥影响,反而因为我们拦了一些异常请求后,它能处理更多的正常请求,并发反而上来了。