Files
iotlcm/internal/fullsync/supply
2026-10-29 14:52:43 +08:00
..
2026-10-22 16:37:56 +08:00
2026-10-22 16:37:56 +08:00
2026-10-22 16:37:56 +08:00
2026-10-22 16:37:56 +08:00

流量首轮供料观测

配置 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、归档或发送状态。本轮没有进行规模压测,也不证明全程无缺料或八百万卡容量。