feat: enforce durable queue resource limits and backpressure

This commit is contained in:
2026-09-17 17:25:56 +08:00
parent 3ce7d2c104
commit 5c8825e4bc
38 changed files with 1231 additions and 30 deletions

View File

@@ -2,6 +2,7 @@ package model
import (
core "git.yuntuo.hk/k2safe/orbit/model"
"time"
)
// Queue 表示任务路由与资源控制队列,不要求每个租户单独创建队列。
@@ -15,8 +16,16 @@ type Queue struct {
Paused bool `db:"paused"`
// MaxConcurrency 允许同时持有的有效执行许可上限,必须大于零。
MaxConcurrency uint32 `db:"max_concurrency"`
// RatePerSecond 每秒新执行的速率配置;实际限流由共享协调逻辑落实。
// RatePerSecond 每个数据库一秒窗口最多提交的开始授权数,由所有节点共享。
RatePerSecond uint32 `db:"rate_per_second"`
// MaxUnfinishedTasks 未终结任务数上限;降额不删除或终止已受理任务。
MaxUnfinishedTasks uint32 `db:"max_unfinished_tasks"`
// UnfinishedTasks 等待、预占、运行及待核查的任务总数,首次终结时同事务减一。
UnfinishedTasks uint64 `db:"unfinished_tasks"`
// StartWindowUntil 当前一秒计数窗口结束时刻,空表示尚无开始授权。
StartWindowUntil *time.Time `db:"start_window_until"`
// StartsInWindow 当前窗口的开始授权次数,重复确认不计数,调整配置不清零。
StartsInWindow uint32 `db:"starts_in_window"`
// Policy 队列资源与执行配置的 JSON 文档。
Policy core.JSON `db:"policy"`
}