题目重点:断线不能直接推断设备故障,恢复后的旧消息也不能覆盖新状态。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 训练仅设备遥测/监控,不包含实时电网控制;设备通过不可靠公网报告状态,离线存储和重复/乱序可能发生。
- 设备安全控制与时限未披露,不能把一般云监控架构当可用于关键控制的完整方案。
解题路线
- Device(identity,credential,boot_id)、Telemetry(device,boot_id,seq,event_time,received_time,payload)明确身份及序列;设备本地durable buffer重试,server按identity/boot/seq幂等。
- ingest校验设备与schema,持久队列/日志后ACK;热点设备/区域分片并配额。最新状态投影按已定boot/sequence更新,迟到消息可进历史但不回滚当前状态。
- 状态应分正常、异常、stale/unknown/offline,heartbeat超时说明通信或设备有问题,不等于确定设备物理坏。告警规则用持续窗口/迟滞和去重,避免每条噪声短信。
- 监控面板展示event与received time、数据新鲜度和缺口;公网恢复大批buffer回传按重放限速,不能挤掉在线实时消息。critical telemetry与bulk history可分队列优先级。
- 凭据轮换、撤销和远程操作权限分开;若扩控制指令需command ID、ack/执行结果、期限与设备本地安全边界,不能把telemetry队列直接当控制可靠性保证。
手动走一遍
设备seq100状态正常先到,seq99故障后到,历史保留但当前不回滚;boot重启sequence归零需boot identity和可信重启机制。公网断开十分钟,面板显示unknown/stale,恢复后显示缺口与延迟,不伪称设备一直正常。
规模与取舍
D设备、f报告/秒、payload B,ingest≈Df events/s、DfB bytes/s,恢复积压峰值另计。状态O(D),历史按保留期线性增长,告警窗口与重复率决定处理容量。
易错点与追问
容易失分的边界
- 网络超时直接判设备损坏。
- 按不可信设备墙钟决定最新状态。
- 积压历史与当前告警共队列导致恢复时实时信号延迟。
继续深挖
- 设备时钟漂移与boot ID重放怎样处理?
- 哪些监控必须留在本地,哪些可依赖云端?
