主题
面试速答(先看这里)
**一句话结论:**然后再定义一个 时间窗口 ,比如10s,随着时间的推移,这个窗口不断的向右移动。
60秒标准回答:
滑动窗口限流是一种流量控制策略,用于控制在一定时间内允许执行的操作数量或请求频率。它的工作方式类似于一个滑动时间窗口,在窗口内允许的操作数量是固定的,窗口会随着时间的推移不断滑动
首先需要把时间划分成多个连续的时间片段,每一个片段都有一个固定的时间间隔,如1s、1h等
然后再定义一个 时间窗口 ,比如10s,随着时间的推移,这个窗口不断的向右移动。为了实现限流的功能,我们通常需要定义一个计数器,统计时间窗口内的请求数
**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点
回答主线:
- **要点1:**滑动窗口限流是一种流量控制策略,用于控制在一定时间内允许执行的操作数量或请求频率。
- **要点2:**首先需要把时间划分成多个连续的时间片段,每一个片段都有一个固定的时间间隔,如1s、1h等。
- **要点3:**滑动窗口限流的主要 优点是可以在时间内平滑地控制流量 ,而不是简单地设置固定的请求数或速率。
- **要点4:**滑动窗口限流可以在分布式系统、API服务、网络通信等各种应用场景中使用,以确保系统的稳定性和可用性,防止过多的请求或操作对系统造成负担或崩溃。
- **要点5:**固定窗口限流中,也是需要定义时间片段和时间窗口,只不过在计数上有一个区别,那就是当随着时间的推移,到了下一个时间窗口时,固定窗口限流的计数器的数量会被清零。
**记忆锚点:**保系统的稳定性和可用性 → 被拒绝或进入等待队列 → 它的工作方式类 → 时间窗口 → API
关键取舍:
- 滑动窗口限流的主要 优点是可以在时间内平滑地控制流量 ,而不是简单地设置固定的请求数或速率。
- 这使得系统可以更 灵活地应对突发流量或峰值流量 ,而不会因为固定速率的限制而浪费资源或降低系统性能。
加分表达:
- 如果计数已满,请求被拒绝或进入等待队列,或执行其他限流操作。
- 滑动窗口限流可以在分布式系统、API服务、网络通信等各种应用场景中使用,以确保系统的稳定性和可用性,防止过多的请求或操作对系统造成负担或崩溃。
- 如果计数未满,请求被允许执行;
追问准备:
- 围绕「保系统的稳定性和可用性」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「被拒绝或进入等待队列」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「它的工作方式类」:底层原理是什么?使用时有哪些边界和常见坑?
- 如果线上出现异常,你会如何定位、验证并规避?
典型回答
滑动窗口限流是一种流量控制策略,用于控制在一定时间内允许执行的操作数量或请求频率。它的工作方式类似于一个滑动时间窗口,在窗口内允许的操作数量是固定的,窗口会随着时间的推移不断滑动。

首先需要把时间划分成多个连续的时间片段,每一个片段都有一个固定的时间间隔,如1s、1h等。
然后再定义一个时间窗口,比如10s,随着时间的推移,这个窗口不断的向右移动。为了实现限流的功能,我们通常需要定义一个计数器,统计时间窗口内的请求数。
当时间窗口移动时,需要把上一个时间片段中的请求数减掉,当有新的请求或操作到达系统时,系统会检查窗口内的计数是否已满。如果计数未满,请求被允许执行;如果计数已满,请求被拒绝或进入等待队列,或执行其他限流操作。
滑动窗口限流的主要优点是可以在时间内平滑地控制流量,而不是简单地设置固定的请求数或速率。这使得系统可以更灵活地应对突发流量或峰值流量,而不会因为固定速率的限制而浪费资源或降低系统性能。
滑动窗口限流可以在分布式系统、API服务、网络通信等各种应用场景中使用,以确保系统的稳定性和可用性,防止过多的请求或操作对系统造成负担或崩溃。
扩展知识
固定窗口限流
固定窗口限流中,也是需要定义时间片段和时间窗口,只不过在计数上有一个区别,那就是当随着时间的推移,到了下一个时间窗口时,固定窗口限流的计数器的数量会被清零。重新开始计数。
固定窗口限流的主要特点是窗口大小是固定的,不管请求是否均匀分布,每个窗口内的请求数量都是相同的。这可能导致某些时间段内请求过多,而在其他时间段内则很少,不同窗口之间可能出现流量的不平衡。