多租户配额与预算:限额、配额周期与突发桶的结算模型(Final)

多租户配额与预算:限额、配额周期与突发桶的结算模型(Final)✨



TL;DR 🧭

限流(秒/分级)≠ 配额/预算(日/月/账期)。生产落地通常二者协同:入口用 ASP.NET Core Rate Limiter(固定窗/滑动窗/令牌桶/并发)抑制尖峰;后台以 Redis(原子扣费+滑动窗) + Postgres(账本+结算) 约束账期总量;突发桶用于短时超前消费、按秒线性补给。本文提供 集群友好 Lua(统一 Redis 时钟、哈希标签同槽、毫单位、首调初始化、防负数、防时间回拨、整数化补给)、动态 Retry-AfterSLO/录制规则k6 压测脚本,开箱即用。


1) 限流 vs. 配额:职责与协同 🧩

限流: 秒/分
配额: 日/月/账期
客户端请求
入口守门
Rate Limiter
固定窗 / 滑动窗 / 令牌桶 / 并发
应用逻辑
后台记账
Redis 原子扣费 + 账本
Budget / Burst / Settlement
可观测与告警
突发桶 Legend:
容量=上限, 补给=速率
  • 限流:保护瞬时容量——固定窗、滑动窗、令牌桶、并发限制。
  • 配额/预算:管账期总量——结算、滚存、超用处理(软降级/硬封顶)。
  • 协同:入口“速率守门”+ 后台“总额记账”;突发桶(burst)≈ 令牌桶的容量 + 补给速率语义。
  • 跨时区账期:不少服务“每日配额按 PT 午夜重置”;自研系统需明确账期时区并在 UI 标注。🕰️

2) 术语与模型 📘

  • QuotaPlanbase_quotarefill_rateburst_capacityperiod(day|month|rolling:n)
  • Budgetbase + carry_in - used
  • BurstBucket:容量 capacity,按 refillRate(单位/秒)线性补给
  • Cost:请求成本(读取=1,导出=5 …),兼容“成本化限流”

3) 架构与分层(ABP 模块化)🏗️

Observability
Ledger/Settlement
Realtime
Edge/API
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kookoos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值