系统架构设计师 · 高频练习

令牌桶有20个令牌、每秒补充5个,空闲后瞬间最多放行多少请求?

高级 单选题 第 1065 题 中等 系统架构设计师令牌桶限流算法突发流量速率控制
题目

某接口使用令牌桶限流:桶容量为20个令牌,每个请求消耗1个令牌,补充速率为每秒5个。系统空闲足够长时间后,某一瞬间同时到达30个请求。忽略处理耗时,立即最多可放行()。

A 5个
B 20个
C 25个
D 30个
题目类型:原创高频练习题 用途:用于帮助理解系统架构设计师相关考点和答案解析,不等同于官方真题。
正确答案
B
答案解析

空闲足够久后令牌桶最多积累到容量20,不能无限累积。瞬间到达时最多立即消耗20个令牌;每秒5个描述后续持续补充速率。

选项分析

A

错误。5个是每秒补充速率,不是桶已满时的瞬间容量。

B

正确。满桶20个令牌可支持最多20个请求同时通过。

C

错误。不能把当前满桶20和未来一秒补充5机械相加为瞬间值。

D

错误。30个请求超过当前令牌数,不能全部立即放行。

本题为什么容易错

令牌桶有两个数字,考试常故意让你相加。先判断问题问“瞬间突发”还是“持续一段时间”,再决定看桶容量还是补充速率。

先看结论

简短答案

令牌桶有20个令牌、每秒补充5个,空闲后瞬间最多放行多少请求,正确答案是 B(20个)。空闲足够久后令牌桶最多积累到容量20,不能无限累积。瞬间到达时最多立即消耗20个令牌;每秒5个描述后续持续补充速率。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
5个 本题干扰项 错误。5个是每秒补充速率,不是桶已满时的瞬间容量。 看到该词不要急着选,先判断是否真正解决题干问题
20个 本题正确答案 正确。满桶20个令牌可支持最多20个请求同时通过。 看到题干核心场景时优先联想到它
25个 本题干扰项 错误。不能把当前满桶20和未来一秒补充5机械相加为瞬间值。 看到该词不要急着选,先判断是否真正解决题干问题
30个 本题干扰项 错误。30个请求超过当前令牌数,不能全部立即放行。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • 5个:错误。5个是每秒补充速率,不是桶已满时的瞬间容量。
  • 25个:错误。不能把当前满桶20和未来一秒补充5机械相加为瞬间值。
  • 30个:错误。30个请求超过当前令牌数,不能全部立即放行。
复习

知识点详解

令牌桶按固定速率补充令牌,桶内令牌不超过容量,请求需取得令牌才能通过。它允许积攒的令牌承接短时突发,同时把长期平均速率限制在补充速率附近。实现时还要确定超限请求是拒绝、排队还是降级,并考虑分布式实例间配额一致性、时钟和客户端退避。

备考速记

桶能存多少决定突发,水龙头多快决定长期;本题满桶20,瞬间放20。

速率控制在速率控制场景中的作用

若剩余10个请求允许排队,2秒内可再补充约10个令牌并陆续放行;若策略是不排队,则应立即返回限流响应。题目问“立即”,答案只看当前20个。

拓展

同类题怎么考

  • 根据桶容量计算瞬间最大放行量。
  • 根据补充速率和时间计算持续窗口内可获得令牌数。
速率控制在系统架构设计师软考中的考法

先圈出桶容量、补充速率、每请求消耗和时间窗口。瞬间问题先看现存令牌,持续问题再加时间内新增令牌,并受容量和请求到达方式约束。

解题思路

这是一道很适合口算的题。先不看每秒5个,题目问的是同一瞬间;此时能用的是桶里已经存好的令牌。桶最多装20个,所以先放20个。剩下10个能否等待后续令牌,要看队列和拒绝策略,但不能算作立即放行。

考点定位

桶容量控制可容忍的最大突发,补充速率控制长期平均放行速度。空闲时间再长,令牌也不会超过桶容量。

易错提醒

  • 把桶容量当成每秒请求数。
  • 多个网关各自限流,却没有考虑全局配额被实例数放大。
  • 返回429后客户端立即同步重试,形成新的请求尖峰。

备考提示

  • 一句话记:容量管突发,速率管长期。
  • 再练一个10秒窗口题,注意起始时桶内是否已有令牌。

你可能还想了解

  • 令牌桶为什么允许突发流量?
  • 令牌桶容量20每秒5个怎么计算?
  • 令牌桶和漏桶有什么区别?

本文小结

令牌桶空闲后最多积累20个令牌,因此30个请求同时到达时最多立即放行20个;每秒5个控制后续补充速度。