题目重点:网络中断、凭证风险和返回响应丢失时,保持图片任务可追踪。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 训练合同:车端采集不可立即重拍,网络断续;对象存储保存原图,下游异步处理。
- 具体单图大小、每天车辆数和区域保留策略未给;容量估算参数显式自设,避免当成既定数据。
解题路线
- 先创建uploadSession返回有期限的分片上传权限,绑定vehicle/session/object与大小范围。设备保存未完成清单和每片checksum;分片ACK后记本地状态,重连查询缺片。
- 完成请求校验总长度及校验和,并幂等把manifest状态从UPLOADING改READY。事务outbox发布imageReady,下游消费者按imageId/version去重并更新阶段。
- 短期权限泄漏可上传非法内容,需最小权限、过期、隔离路径及服务端最终校验;撤销设备身份不代表所有已签token立即失效,设计时明确撤销延迟。
手动走一遍
上传8片,收到前5片ACK后断网;重连发现第6片实际上已收到,只补7/8。complete响应丢失,再次complete返回同一READY结果。假设10万张/日×8MB≈800GB/日;30日原图24TB,不含副本/衍生图。带宽峰值按停车集中上传而非平均吞吐估算。
规模与取舍
分片重传成本O(缺片字节),manifest O(片数)。监控上传成功率、最老未完成年龄、下游积压及对象与元数据孤儿比例。
易错点与追问
容易失分的边界
- 通知队列“恰一次”不能替代消费者幂等。
- 先发下游事件再确认对象完整,会让消费者处理缺失或未封存内容。
继续深挖
- 怎样回收长时间未完成的分片,同时避免仍在线慢上传误删?
- 隐私处理版本重跑后,下游如何切换索引并回滚?
