<p>golang.org/x/time/rate 是 Go 官方推荐的令牌桶限流方案,核心为 rate.Limiter 和 rate.Limit;需按需动态创建实例隔离限流维度,配合 Retry-After 和 X-RateLimit- headers 提升兼容性,注意时钟依赖与性能边界。</p>Go 用 golang.org/x/time/rate 做令牌桶限流最稳妥标准库没有内置限流,golang.org/x/time/rate 是官方维护、生产验证过的唯一推荐方案。别自己手写计数器或基于 time.Ticker 模拟,精度差、并发不安全、漏桶/令牌桶语义模糊。它核心就两个类型:rate.Limiter(你直接用的)和 rate.Limit(每秒放多少令牌)。初始化时传入期望的 QPS 和最大突发量(burst),比如 rate.NewLimiter(10, 5) 表示平均 10 QPS,最多允许 5 次瞬时请求打进来。limiter.Wait(ctx) 是最常用方式:阻塞直到拿到令牌,适合必须执行的请求(如支付)limiter.Allow() 返回 bool:立刻返回是否能执行,适合可降级场景(如日志上报)limiter.Reserve() 返回 *rate.Reservation:能精确控制等待时间或取消,但多数人用不到HTTP 中间件里嵌 rate.Limiter 别共享实例一个 rate.Limiter 实例是并发安全的,但如果你把同一个实例用在所有路由上,就变成全局限流------这通常不是你想要的。比如用户 A 和用户 B 共享配额,或者 /login 和 /api/data 被同一套规则卡住。更常见的需求是按 IP、用户 ID 或 API 路径做隔离限流。这时候得动态生成 Limiter 实例,或用 map 缓存:立即学习"go语言免费学习笔记(深入)"; JoinMC智能客服 JoinMC智能客服,帮您熬夜加班,7X24小时全天候智能回复用户消息,自动维护媒体主页,全平台渠道集成管理,电商物流平台一键绑定,让您出海轻松无忧!
相关推荐
GuWenyue43 分钟前
Cursor黑盒拆解!1套LangChain.js手写Mini编程Agent,自动生成React项目,效率提升60%想会飞的蒲公英2 小时前
计算机怎样读取中文文本:编码、清洗与标准化Miao121313 小时前
某海外住宿平台如何在大规模场景下实现指标一致性:Minerva 指标平台实践SeaTunnel3 小时前
从 Python Script 地狱到标准化数据集成框架CodexDave3 小时前
MySQL事务隔离级别与MVCC机制解析深度研习笔记3 小时前
OpenCV工业视觉实战09|项目EXE打包+工控机无环境部署+后台常驻运行,彻底脱离Python环境,完成项目最终交付碎光拾影3 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现曾阿伦3 小时前
MongoDB 查询语句备忘手册一叶龙洲3 小时前
wslg打开Ubuntu24.04默认打开图形界面CCPC不拿奖不改名3 小时前
大模型推理架构与开源生态知识整理