2bec257289
iotlcm-worker-svr:异步执行中枢(RabbitMQ 消费者 + 全量同步编排)。 - Go module:iotlcm-worker-svr → git.5iot.com/iotlcm-public/iotlcm-worker-svr(214 文件) - 凭据与内部标识脱敏:MySQL/Redis 凭据、私网与生产 IP、内网域名、 库名 xiujie_admin → iotlcm、哨兵名占位 - 159 处真实手机号 → 合法 11 位编造号(保留号段与后 4 位,维持互异, 不破坏「校验 MSISDN 格式」等测试断言) - 移除内部资产:CI 触发器、Jenkins 触发测试文档、预演门禁与镜像 digest 记录 - Dockerfile 改用公共基础镜像(golang:1.25-alpine → alpine:3.23), 移除写死的 git 凭据 - README 重写(架构/全量同步模型/配置/已知失败),补 Apache-2.0 LICENSE,LF 行尾 + .gitattributes 已知:3 个测试包在源仓同一提交上同样失败(client/upstream、 service/allocate、service/inbound),属既有缺陷,本仓未引入亦未修复。
流量首轮供料观测
配置 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 尚未执行成功。
- 全仓测试非全绿;