Files
junhong_cmp_fiber/openspec/changes/archive/2026-09-02-reduce-polling-observability-load/proposal.md
break 370fd3e67f
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 10m49s
update
2026-09-03 09:28:28 +08:00

32 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Why
生产环境异常重启后的轮询积压与日志留存任务同时执行,使 PostgreSQL 出现高 I/O 等待和锁等待。当前每次正常轮询都会持久化审计事件、资源快照与外部交互日志,即使观测结果没有任何业务变化,导致轮询频率直接放大为数据库写入量。
## What Changes
- 正常且无业务变化的轮询不再创建逐次 `tb_audit_event``tb_audit_event_resource``tb_integration_log`;轮询仍更新必要的短期去重、指标和调度状态。
- 网络状态、实名状态、套餐状态、有效流量增量等业务事实变化,以及外部调用失败、未知结果和人工触发,继续持久化业务事实与可调查记录。
- 支付、审批、入站回调等需要可靠幂等、恢复或渠道裁决的外部交互继续使用 PostgreSQL 持久化;不得以 Redis 替代其权威状态。
- 为轮询增加全局硬并发上限与背压语义,阻止积压任务在恢复或重启后同时压垮数据库和渠道。
- **BREAKING** 正常无变化的轮询不再出现在外部交互日志列表或审计调查中;查询仅展示状态变化、异常、人工操作和其他需可靠保留的记录。
- 将 Audit 日归档、Integration Log 日归档和日志日留存改为独立的受控任务:可整体停用、每次执行受日期或工作量预算约束,且不得与核心轮询争抢无上限资源。
## Capabilities
### New Capabilities
- `polling-load-control`: 轮询任务的全局并发上限、背压和正常无变化观测的低写入处理。
### Modified Capabilities
- `operations-audit`: 调整审计事实的保留边界,并使审计归档与日留存任务受控、限量执行。
- `external-integration`: 调整高频正常轮询的外部交互日志保留边界,并使 Integration Log 归档与留存任务受控、限量执行。
## Impact
- 轮询任务、卡观测和 Gateway 调用路径。
- 审计 Writer、Integration Log Repository 与调查查询的记录策略。
- Redis 轮询并发控制、Asynq Worker 队列与定时任务注册。
- Worker 配置、生产运维说明和观测指标。
- 不新增数据库 Schema不修改既有迁移。