在评估 COS 触发 SCF 的图片处理方案:同一个业务对象允许连续覆盖上传,函数异步生成缩略图,业务端只应读取最新一次上传对应的结果。这里讨论方案边界,尚未上线,也没有实际报错。 设想的并发场景是:同一 Key 先上传 A,再上传 B;处理 A 的函数耗时较长,处理 B 的函数先完成。如果两个任务都写同一个缩略图 Key,A 的结果可能最后写入。希望分别解决“读取正确的源文件版本”和“只发布最新结果”,而不是把两个问题混成去重。 目前做的方案推演:仅按 Bucket + Key 去重会把正常的再次上传也当作重复;让输出路径包含源对象版本,可以隔离结果文件,但仍需要决定业务端的当前版本指针。暂未实际验证这些方案,不假定版本 ID 可以按大小比较。 想请教三个具体问题: 1. COS 开启版本控制后,通过 COS 触发器调用 SCF 时,应从事件的哪个字段取得源对象版本,并怎样在 GetObject 时明确读取该版本?普通上传与分片完成事件的字段是否一致? 2. 如果不把事件到达时间作为版本顺序,最新结果指针应由上传端分配单调业务序号,再由函数在数据库里做条件更新,还是腾讯云现有接口有更直接的原子发布方式?希望明确并发覆盖的保证边界。 3. 对延迟重试的旧任务,源文件版本保留时间应怎样与重试窗口配合?若对应版本已被生命周期清理,应该记录永久失败,还是有更合适的补偿策略?
相似问题