perf(storage): 极简化任务历史并增加保留治理
停止持久化 provider 原始响应、兼容响应快照、attempt/event/outbox 重复 JSON,并由标准任务结果动态生成 Kling/Keling/Volces 兼容响应。 增加事件去重与预算、极简 callback 投递、7/30 天分批清理、安全删除条件、并发迁移索引及可实际恢复的任务域排除备份。历史清理默认关闭,待兼容协议和异步恢复在线验证后单独启用。 验证:Go 全量测试与 go vet、PostgreSQL 18 集成与实际备份恢复、迁移安全测试、bash -n、ShellCheck、Compose 配置和人工发布脚本测试均通过。
This commit is contained in:
@@ -110,13 +110,48 @@ dist/releases/<40 位 Git SHA>.json
|
||||
- API/Web 均为完整 Registry digest;
|
||||
- 镜像为 `linux/amd64`;
|
||||
- 本次变化组件的 OCI revision 等于 release SHA;
|
||||
- 迁移变化时备份可被 `pg_restore -l` 读取;
|
||||
- 迁移变化时生成排除任务历史数据的完整 schema/业务状态备份,并实际恢复到一次性数据库验证长期数据、外键和空任务历史表;
|
||||
- 内部 API health/readiness/OpenAPI;
|
||||
- Web 页面和 Web API 反代;
|
||||
- 公网 health/readiness/OpenAPI。
|
||||
|
||||
失败时自动恢复上一组应用 digest 并重复探活。已经执行的 expand-only 数据库迁移不会自动恢复。
|
||||
|
||||
## 任务历史治理
|
||||
|
||||
首次上线极简写入时保持 `AI_GATEWAY_TASK_CLEANUP_ENABLED=false`。先验证 Kling V1/V2、Volces 的提交、查询、失败响应和异步恢复均不依赖兼容快照或 provider 原始响应,再单独开启 cleanup。不要把首次清理和应用切换放在同一个维护动作中。
|
||||
|
||||
开启后每 5 分钟确认 7 天分析数据和 30 天主任务的过期积压;任一积压最长时间超过 24 小时、callback 待投递增长、结算待办增长或事件跳过指标异常时暂停治理并排查。以下查询只用于只读验收:
|
||||
|
||||
```sql
|
||||
SELECT relname, pg_size_pretty(pg_total_relation_size(relid)) AS total_size
|
||||
FROM pg_catalog.pg_statio_user_tables
|
||||
WHERE relname IN (
|
||||
'gateway_tasks',
|
||||
'gateway_task_attempts',
|
||||
'gateway_task_events',
|
||||
'gateway_task_callback_outbox',
|
||||
'gateway_task_param_preprocessing_logs'
|
||||
)
|
||||
ORDER BY pg_total_relation_size(relid) DESC;
|
||||
|
||||
SELECT
|
||||
(SELECT count(*) FROM gateway_task_attempts WHERE created_at < now() - interval '7 days') AS expired_attempts,
|
||||
(SELECT count(*) FROM gateway_task_events WHERE created_at < now() - interval '7 days') AS expired_events,
|
||||
(SELECT count(*) FROM gateway_task_param_preprocessing_logs WHERE created_at < now() - interval '7 days') AS expired_parameter_logs,
|
||||
(SELECT count(*) FROM gateway_tasks WHERE finished_at < now() - interval '30 days') AS candidate_tasks;
|
||||
```
|
||||
|
||||
逻辑删除稳定后执行 `VACUUM (ANALYZE)` 更新统计信息;它不会把空间归还给操作系统。物理回收只在独立维护窗口中逐表执行 `pg_repack`,执行前确认扩展、额外磁盘空间、主从延迟和锁等待均满足要求。优先处理 `gateway_task_events`、`gateway_task_attempts`、`gateway_tasks`,不得与 deploy、迁移或大批量清理并行。
|
||||
|
||||
治理控制目标:
|
||||
|
||||
- 新任务的兼容 body/Header、event/outbox payload、attempt 大 JSON 均为空;
|
||||
- 普通成功任务不超过 4 条事件,每任务非终态事件不超过 16 条;
|
||||
- 分析数据过期积压低于 24 小时,稳态分析表总量不超过主任务表的 20%;
|
||||
- 首轮治理后任务域低于治理前 10.9GB 的 40%;
|
||||
- 发布备份不超过 1GB,备份和实际恢复各不超过 5 分钟。
|
||||
|
||||
## 状态与回滚
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user