被刷、被爬、被薅之前先把限流立起来:按接口敏感度分层设阈值,给出算法选型和降级兜底。
开放接口防滥用、活动接口防瞬时限流、登录/验证码接口防撞库。
帮我给我的接口设计一套限流方案。 【接口清单】{{接口清单}} 【流量特征】{{流量特征}} 【技术栈】{{技术栈}} 【容忍度】{{容忍度}} 请输出: 一、接口分层:把我的接口按敏感度分三档(防撞库类、交易类、查询类),每档给限流维度建议——按 IP、按用户、按设备指纹还是组合,以及各档的阈值设定思路(怎么从日常流量推算安全阈值)。 二、算法选型:固定窗口 / 滑动窗口 / 令牌桶的适用差异,按我的场景每档选一种并说明理由,给出 Redis 实现的关键点(原子性、过期时间)。 三、被刷应急:短信类接口已经被盗刷过的前提下,第一优先级上的 3 道闸(图形验证码前置、单号单 IP 双维度、消费侧告警切断)。 四、降级与兜底:限流触发后的响应设计(429 + Retry-After)、核心接口的排队方案(接受排队不拒绝)具体怎么落地,以及大促阈值要不要动态调。 五、观测清单:限流上线后要看哪些指标(拦截量分布、误伤率),怎么发现「限流把自己人拦了」。 要求:方案贴合我的技术栈,别引入我扛不住的新组件;阈值给设定方法而不是拍脑袋数字。
设得好不会:阈值按正常用户行为的上限(而不是平均值)设,再配白名单和告警观察一周即可。
流量到千级 QPS 且多服务共用时值得;单集群应用先用应用层+Redis 实现,别为限流引入整套网关。