Files
iotlcm/internal/fullsync/supply/README.md
T
2026-10-29 14:52:43 +08:00

32 lines
3.7 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.
# 流量首轮供料观测
配置 `trafficUsageFullSync.supplyObservation.enabled` 默认 false。仅 Run 首轮 channel 扫描生效;与状态同步、Replay、legacy 队列无关。采样 1 秒,快照 10 秒,单批最多 64 个目标,快照最大 256 KiB。保持原分页、扫描并发、水位、消费者 QPS 与重试策略。
队列只读 Lua 区分到期可领取库存、租约(含过期租约)与未来任务,不读取任务正文。生产者事件保留当前页未确认任务数;消费者处理窗口包含 QPS 等待、请求、写库和结算。两个相邻同类样本开始估算区间;超过 2 秒中断连续统计并记录缺口。启动前已知供料等待与首次新增后的确认缺料分开;查询期间没有已知待入队任务时只记待确认空闲。阶段时间是同期阶段而非因果证明。连续 5 秒仅作为 Bot 排查提示。
元数据可选 `supplyObservation` 使用 schemaVersion=1,归档顶层 version 仍为 1。关闭配置没有观察协程或遥测命令。非法遥测不影响业务归档。最终刷新发生在 producerDone 前;写入需校验 producer owner 及非终态。当前 owner 校验 Lua 涉及既有全局 producer 锁,适用现有 standalone Redis;Cluster CROSSSLOT 会使遥测降级,不应宣称已支持跨槽原子写。快照截断保留 Run 总量及最长等待前 100 个通道(若仍超限进一步缩减),并标明 partial/truncated。重启保留落盘累计值,不跨尝试拼接区间。
## 验证记录
- worker fullsync(archive/contract/httpapi/runtime/supply)、producer/monthlyusage、queue/zset、consumer/zset、worker 测试通过。
- 真实隔离 Redis:130 通道分批、未来任务/到期库存/过期租约、旧 owner/终态拒写、非法可选 JSON 兼容。
- scanner 替身:空目标被登记且无首次入队、不误报确认缺料、最终快照保存;注入遥测写失败仍完成 producerDone。
- 可控时间:阶段累计、处理与库存排除、unknown、采样缺口、并发事件、256 KiB 排名与恢复总量。
- `go build ./...` 已通过。
- 本机 CGO 关闭且未发现 C 编译器,race 尚未执行成功。
- 全仓测试非全绿;未改动 origin/main 4369472 上复现 TestConfiguredInboundBasicInfoClientUsesDedicatedEndpoint、TestValidateUpstreamBasicInfoAcceptsMatchingIdentifiers、TestAllocateProcessingRetryAfterHasLargeBatchDefault 失败,后两项出现配置搜索路径 panic。
## 预演门禁与回退记录(仅只读核对,尚未部署)
环境仅 127.0.0.1。
- worker 原镜像:sha256:136196e9b05cbf926d4cf51451de99c22c5aa35479f5b60a31d7b0d65c4d9fd3
- bot 原镜像:sha256:671ebc8f8777b72ca168e24631a5fbb4a1d1ca499b81b3a83415a39c801b170f
- Compose 目录:/home/xjzl/iotlcm-deploy/iotlcmpreview
- worker Compose 组合:docker-compose.yml + docker-compose.channel-scan-30a8a34.yml;bot 来自 docker-compose.yml。
- worker /app/logs/full-sync 与 bot /data/full-sync 均挂载 /data/logs/iotlcm-worker-svr/full-sync;bot state 挂载 /data/app/iotlcm-bot/state。
- 递归归档基础校验:1 份,未发现基础格式/终态/汇总计数错误;尚需使用 Bot 完整 Validate 及其实际配置再次核验。
- 本机 Docker daemon 查询超时;Jenkins list_jobs 返回 401。尚未构建独立镜像、运行 race、保存完整部署配置、检查活跃 Run/Replay 或白名单、重建服务或触发管理端。
发布前仍需补齐以上门禁。仅服务级重建 worker/bot,显式 enabled=true,不替换归档/state 目录。先关闭 enabled 并重启 worker 可回退观测;必要时恢复原两服务 digest 和原 Compose/config。不清 Run、归档或发送状态。本轮没有进行规模压测,也不证明全程无缺料或八百万卡容量。