Skip to content

面试速答(先看这里)

**一句话结论:**所以说,我们虽然通过加锁的方式防止了一些并发,但是我们拦截的都是我们不希望他们发生的,或者说是异常并发。

60秒标准回答:

很多面试官咋问关于分布式锁的问题之后,会追加一句:你这个地方用了分布式锁,那不是影响了并发度了么。这么做真的合适吗?

很多人容易被问蒙了,不知道该如何回答。确实加了分布式锁是会影响并发度的。那么他就不是一个好的方案了吗?

其实,这里是大家忽略了对于并发的理解

**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点

回答主线:

  • **要点1:**很多面试官咋问关于分布式锁的问题之后,会追加一句:你这个地方用了分布式锁,那不是影响了并发度了么。
  • **要点2:**很多人容易被问蒙了,不知道该如何回答。
  • **要点3:**我们说,加分布式锁的目的是什么?
  • **要点4:**那么这里加锁防止的并发是什么?
  • **要点5:**那我们通常说的系统的并发,如抗的QPS,这个并发指的是什么?

**记忆锚点:**于共享资源的争抢并发 → 们通常说的系统的并发 → 的方式防止了一些并发 → 官咋问关于分布式锁 → 个地方用了分布式锁 → 我们才会加分布式锁

关键取舍:

  • 其实是对于共享资源的争抢并发,比如重复下单,消息重投等等的。
  • 但是,正是因为我们拦住了,使得系统不需要去浪费资源处理这些重复请求,那么就可以有更多资源响应其他用户的正常请求了。

易错提醒:

  • 很多人容易被问蒙了,不知道该如何回答。

追问准备:

  • 这么做真的合适吗?
  • 那么他就不是一个好的方案了吗?
  • 我们说,加分布式锁的目的是什么?
  • 这里的并发是什么并发?

典型回答 ​

很多面试官咋问关于分布式锁的问题之后,会追加一句:你这个地方用了分布式锁,那不是影响了并发度了么。这么做真的合适吗?

很多人容易被问蒙了,不知道该如何回答。确实加了分布式锁是会影响并发度的。那么他就不是一个好的方案了吗?

其实,这里是大家忽略了对于并发的理解。

我们说,加分布式锁的目的是什么?防止发生并发?这里的并发是什么并发?其实是对于共享资源的争抢并发,比如重复下单,消息重投等等的。这种情况下我们才会加分布式锁来防止出现错误。

那么这里加锁防止的并发是什么?是同一个用户的同一个行为的重复操作!

那我们通常说的系统的并发,如抗的QPS,这个并发指的是什么?是一个提供同一时段能响应的请求数,这里的请求包含同一个用户的,也包含不同用户的。

虽然我们加锁把一个用户的重复请求给拦住了。但是,正是因为我们拦住了,使得系统不需要去浪费资源处理这些重复请求,那么就可以有更多资源响应其他用户的正常请求了。

所以说,我们虽然通过加锁的方式防止了一些并发,但是我们拦截的都是我们不希望他们发生的,或者说是异常并发。但是系统的整体并发并没啥影响,反而因为我们拦了一些异常请求后,它能处理更多的正常请求,并发反而上来了。