做API的都知道限流,但大多数人选算法像抓阄。Token Bucket看着优雅,漏桶匀速出水, bursts 也能扛——直到你的账单突然炸了。
问题出在"允许突发"这个设计。Token Bucket 把未用完的配额存起来,用户攒够 100 个 token 一瞬间打空,你的数据库当场去世。Sliding Window 没这毛病,它按时间片严格切割,但实现复杂度高一个数量级,小公司根本不想碰。
Cloudflare 工程师去年在内部复盘时写过一句:「我们切到 Sliding Window 后,异常流量识别率涨了 40%,但延迟多了 8ms。」这 8ms 就是代价。
更尴尬的是行业现状。AWS API Gateway 默认 Token Bucket,阿里云走漏桶,GCP 搞了个混合变种。同一个"限流"需求,三家实现三种脾气,迁移时全得重写。
有个做支付的朋友,双 11 前没测 bursts 场景,Token Bucket 攒的配额被爬虫 3 秒扫光,风控系统没来得及响。事后他换了 Sliding Window,但代码里多了 200 行时间窗口对齐的逻辑——"像给赛车装了个拖拉机变速箱,慢是慢点,至少不翻车。"
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.