wkhttp

package
v1.8.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 4, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SharedUIDRateLimiter

func SharedUIDRateLimiter(r *libwkhttp.WKHttp, ctx *config.Context) libwkhttp.HandlerFunc

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL