feat: add bounded task priority and fair application dispatch

This commit is contained in:
2026-09-17 18:45:54 +08:00
parent 958b4a8cea
commit 309ed75666
42 changed files with 1277 additions and 61 deletions

View File

@@ -0,0 +1,7 @@
-- 任务优先级只影响已到期任务的排序,最多提前 270 秒的排序优势;不提前执行延时任务。
-- 生成列随受理、退避及恢复后的 available_at 自动变化,禁止独立修改。
ALTER TABLE pulse_tasks
MODIFY COLUMN priority SMALLINT NOT NULL DEFAULT 0 COMMENT '冻结任务优先级,0至9;每级带来30秒排序优势,不改变最早执行时间',
ADD CONSTRAINT ck_task_priority CHECK (priority BETWEEN 0 AND 9),
ADD COLUMN dispatch_at DATETIME(6) GENERATED ALWAYS AS (TIMESTAMPADD(SECOND, -30 * priority, available_at)) STORED COMMENT '派发排序时间,由最早执行时间减优先级乘30秒生成;不是执行授权或可用时间',
ADD KEY ix_task_priority_dispatch(namespace_id,queue_id,state,dispatch_at,available_at,id);