Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func SharedUIDRateLimiter ¶
SharedUIDRateLimiter 返回进程级共享的 UID 限流中间件。
所有调用点共用同一个中间件实例和同一把 Redis keyspace("ratelimit:uid:{uid}"), 即同一 UID 跨所有挂载端点的总配额受控——这是 octo-server#1086 P2 的设计目标, 把公平性锚定到"用户"维度,避免共享出网 IP 的办公室场景互相挤占。
挂载要求:必须放在 AuthMiddleware 之后,仅用于认证路由组;未认证场景下本中间件 会 fail-open 放行(详见 UIDRateLimitMiddleware 注释)。
auth := r.Group("/v1/foo",
ctx.AuthMiddleware(r),
appwkhttp.SharedUIDRateLimiter(r, ctx),
)
环境变量(进程启动时读取一次,不支持热更新):
- DM_API_UID_RATELIMIT_RPS 每秒填充速率(float,缺省 2.0 = 120 req/min)
- DM_API_UID_RATELIMIT_BURST 桶容量(int,缺省 60)
进程级单例:首次调用时按传入的 ctx 初始化;后续调用忽略 ctx,返回同一个中间件。 在集成测试中若需用不同 Redis 实例重建,调用 resetUIDRateLimiterForTest。
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.