令牌签发-从凭证到通行证
plus 版本专属
此章节是黑马点评 Plus 版本中专有的内容,而在整套文档中将普通版本和 Plus 版本都融合在了一起,让大家更方便的学习。
此章节将详细讲解在秒杀优惠券时,是如何申请请求以及验证令牌的
有的小伙伴到这里可能有点疑惑,因为在之前的限流功能中讲到了有使用动态令牌桶,这里又出现了访问令牌,是不是觉得重复了?
其实不是的,这里的访问令牌和限流中的动态令牌并不是一回事
一、概念区分:访问令牌 vs 令牌桶动态令牌
1.1 核心定义
- 访问令牌:面向“用户-活动”的一次性通行证,用来证明某用户在某次活动入口拥有有效访问权,并在使用时被核销。
- 令牌桶动态令牌:面向“流量控制”的配额机制,用来在时间维度平滑请求速率、吸收突发流量,避免系统被瞬时冲击。
1.2 功能定位
- 访问令牌:授权与幂等控制,确保“谁”在“哪次活动”可以进入,并且每张令牌只可用一次。
- 令牌桶:限流与节奏控制,确保“系统入口”在任何时刻都不会超出可承载的速率和峰值。
1.3 使用场景
- 访问令牌:秒杀抢购、抽签预约、一次性验证(例如短信口令、入口票据),强调“资格”和“核销”。
- 令牌桶:API网关、热点接口、秒杀入口前置流控,强调“整体流量平滑”和“突发吸收”。
1.4 生命周期与状态
- 访问令牌:短有效期、一次核销即失效;不具备“自动补充”,只要过期或被消费就不存在。
- 令牌桶:持续存在的配额模型;令牌随时间自动补充、随请求自动扣减,可长期运作。
1.5 粒度与绑定维度
- 访问令牌:强绑定到具体主体(例如用户)与具体活动(例如某券),具有明确的个体身份属性。
- 令牌桶:通常按入口维度(IP、用户或接口)进行配额控制,身份仅用于区分限流维度,而非授权本身。
1.6 风险控制与安全
- 访问令牌:防重、防刷、防绕过;一人一票、一次一用,能有效抵御重复提交和脚本重放。
- 令牌桶:抗洪峰能力强;限制单位时间可通过请求数,降低雪崩风险与资源争抢。
1.7 并发与一致性
- 访问令牌:强调一次性原子核销,避免并发场景下重复入场;核心目标是“不可复用”。
- 令牌桶:强调配额的精确递增与扣减,保证速率与容量的稳定性;核心目标是“控制节奏”。
1.8 返回语义与交互
- 访问令牌:发放得到“票据字符串”,校验时明确“通过或不通过”,通过即核销。
- 令牌桶:判定得到“允许或超限”的状态;允许则请求继续执行,不涉及“票据字符串”。
1.9 失败处理与用户感知
- 访问令牌:失败多为令牌失效、过期或已用;用户需重新获取授权或等待刷新。
- 令牌桶:失败表示当前流量过大;用户通常看到“稍后重试”提示或被临时阻断。
1.10 监控与运维
- 访问令牌:关注发放成功率、冲突率、消费成功率、过期比例,评估授权流程健康度。
- 令牌桶:关注通过率、拒绝率、平均速率、峰值吸收效果,评估入口流控效果。
1.11 性能与成本
- 访问令牌:存储与校验开销小,更多是业务可信度与一致性保障的成本。
- 令牌桶:在高并发入口具有良好的吞吐与可预期性,能显著降低下游系统负载成本。
1.12 组合策略与最佳实践
- 先限流后授权:优先用令牌桶削峰限流,减少恶意或无意义请求;对通过的请求再校验访问令牌,保证资格与幂等。
- 分层防护:令牌桶负责“交通信号灯”,访问令牌负责“门票验真”;两者结合能在高并发秒杀场景下兼顾稳定性与公平性。
二者常见协作方式:先以令牌桶限流决定是否允许进入秒杀逻辑,再要求请求方携带并通过“访问令牌”的一次性校验,形成“节流 + 授权”的双重保障。
二、访问令牌发放执行流程
付费内容提示
该文档的全部内容仅对「JavaUp项目实战&技术讲解」知识星球用户开放
加入星球后,你可以获得:
- 超级八股文:100万+字的全栈技术知识库,涵盖技术核心、数据库、中间件、分布式等深度剖析的讲解
- 讲解文档:黑马点评Plus、大麦、大麦pro、大麦AI、流量切换、数据中台的从0到1的550+详细文档
- 讲解视频:黑马点评Plus、大麦、大麦pro、大麦AI、流量切换、数据中台的核心业务详细讲解
- 1 对 1 解答:可以对我进行1对1的问题提问,而不仅仅只限于项目
- 针对性服务:有没理解的地方,文档或者视频还没有讲到可以提出,本人会补充
- 面试与简历指导:提供面试回答技巧,项目怎样写才能在简历中具有独特的亮点
- 中间件环境:对于项目中需要使用的中间件,可直接替换成我提供的云环境
- 面试后复盘:小伙伴去面试后,如果哪里被面试官问住了,可以再找我解答
- 远程的解决:如果在启动项目遇到问题,本人可以帮你远程解决
进入星球后,即可享受上述所有服务,保证不会再有其他隐藏费用。
