BitzOrcas 通过 PlatformBilling 模块实现配额管理。它提供基于订阅的权益跟踪、用量记录和可配置的超额执行策略。
架构
┌─────────────────────────────────────────────┐│ PlatformBilling ││ ││ 计划 → 订阅 → 权益 ││ │ ││ ▼ ││ 用量记录 ││ │ ││ ▼ ││ 配额检查 ││ (允许/拒绝/警告) │└─────────────────────────────────────────────┘核心抽象
QuotaService
public class QuotaService{ public QuotaCheckResult CheckQuota( TenantId tenantId, string entitlementKey, long requestedDelta);}EntitlementResolver
从租户的活跃订阅 + 目录解析有效权益:
租户 → 活跃订阅 → 计划 → 目录产品 → 权益OverQuotaBehavior
租户超额时可配置的行为:
| 策略 | 描述 |
|---|---|
Deny | 阻止操作(HTTP 429 或 403) |
Warn | 允许但添加警告头/通知 |
Allow | 无执行(用于内部/特权租户) |
关键实体
| 实体 | 用途 |
|---|---|
PlatformBillingPlanEntity | 计费计划定义(免费、专业、企业) |
PlatformBillingSubscriptionEntity | 租户的活跃订阅 |
PlatformBillingInvoiceEntity | 计费发票 |
PlatformBillingUsageRecordEntity | 用量跟踪记录 |
配额检查流程
- 权益查找:解析租户的订阅 → 计划 → 目录产品
- 用量聚合:汇总当前计费周期的已记录用量
- 配额比较:对比已使用 vs 允许值
- 执行:应用超额策略(拒绝/警告/允许)
用量记录
模块通过 PlatformBillingService.RecordUsageAsync() 记录用量:
await billingService.RecordUsageAsync( tenantId, entitlementKey: "storage.files", delta: 1);配置
{ "PlatformBilling": { "DefaultOverQuotaBehavior": "Deny", "BillingCycleDays": 30 }}另见
- PlatformBilling 模块 — 完整的计费和订阅管理
- Catalog 模块 — 计划定义和产品