Go语言如何做API限流_Go语言令牌桶限流教程【深入】

<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小时全天候智能回复用户消息,自动维护媒体主页,全平台渠道集成管理,电商物流平台一键绑定,让您出海轻松无忧!

相关推荐
花酒锄作田8 小时前
Pydantic校验配置文件
python
hboot8 小时前
AI工程师第四课 - 深度学习入门
pytorch·python·神经网络
GBASE13 小时前
G术时刻 |GBase 8s数据库事务并发控制之封锁技术介绍(下)
数据库
ZhengEnCi19 小时前
P2M-Matplotlib折线图完全指南-从数据可视化到趋势分析的Python绘图利器
python·matlab·数据可视化
ZhengEnCi21 小时前
P2L-Matplotlib饼图完全指南-从数据可视化到图表定制的Python绘图利器
python·matlab
曲幽21 小时前
你的REST接口还在“过度投喂”数据吗?——FastAPI + GraphQL实战避坑指南
python·fastapi·web·graphql·route·cors·rest·strawberry
用户8358086187911 天前
基于 Self-RAG 与列表级重排序的进阶 RAG 系统设计与实现
python
xiezhr1 天前
逛GitHub发现了一款免费的带AI功能的数据库管理工具
数据库·ai编程·dba
Warson_L2 天前
Python `Annotated` 与 LangGraph Reducer 学习笔记
python
韩师傅2 天前
海天线算法的前世今生
python·计算机视觉