Firestore基于Cloud Functions v2的并发管理及文档并发更新逻辑
100次并发云函数更新同一份Firestore文档的场景分析
当100个Cloud Functions v2实例同时更新同一份Firestore文档时:
- Firestore的请求处理逻辑:Firestore会按请求到达顺序处理写操作,但由于并发请求基于文档旧版本,大部分请求会触发乐观并发冲突,返回409错误。仅第一个成功执行更新的请求会生效,后续请求若无重试逻辑则直接失败。
- 文档最终状态:
- 若函数无重试机制:最终仅1次更新成功,文档状态为该次更新后的结果,其余99次请求失败;
- 若函数实现冲突重试:捕获409错误后重新拉取文档最新版本再执行更新,100次更新会被依次执行,最终文档会反映所有更新结果,但整体处理时间会因重试延长;
- 若使用原子操作:比如用
FieldValue.increment(1)做计数,Firestore会保证所有100次累加操作生效,最终文档计数值增加100,不会出现丢失更新——这类操作由服务器端原子执行,绕过客户端版本检查。
内容的提问来源于stack exchange,提问作者bgrand-ch
相关产品推荐
相关产品推荐

