firebase - 计算每个用户的 Firebase 存储总使用空间的可靠方法
问题描述
我正在尝试找出一种方法来保证用户上传的文件大小从网络客户端到 Firebase 存储的正确计数。
核心要求如下:
- 它必须是稳定的:它必须保证统计每个上传的文件
- 它必须是可扩展的:我无法读取“所有存储的文件”来一次计算大小,因为文件的数量可能很大
- 它必须是安全的:我不能依赖浏览器,必须在服务器上执行计算。
到目前为止,方法是这样的:
- 我的网络应用程序的用户可以上传多个文件
- 这些文件是使用 firebase Web 客户端 sdk 上传的
- 在我收听的服务器
functions.storage.object().onFinalize()
上获取每个文件的文件大小 - 然后我在 Firestore 中更新了一个专用文档以将新大小添加到总数中(我们称之为
totalStorageSizeDoc
)
这种方法解决了安全性和可扩展性,但我在这里看到的问题是,当用户上传一堆足够小的文件时,这很容易functions.storage.object().onFinalize()
在 1 秒内触发大量文件,这对于写入来说“不难但仍然”是一个限制firestore 中的操作。此时,写入totalStorageSizeDoc
也将执行得太快,并有拒绝其中一些写入的风险。
有没有一种方法可以轻松地将写入队列中的写入onFinalize()
以确保totalStorageSizeDoc
不会不堪重负?还是我应该采取完全不同的方法?也许有任何最佳实践来计算我错过的已用存储大小?
非常感谢任何建议。
解决方案
最简单的做法是为您的函数启用重试,这样如果它由于任何原因(如超过某个限制)失败,那么系统将简单地重试它,直到它成功。
推荐阅读
- c# - Power Bi API:获取 Power BI 数据源数据
- android - 在壁画中传递自定义标头(sessionid)
- python-3.x - 尝试使用 Scrapy-Splash 登录
- c# - 如何使用 c# 在 csv 中追加 Sum 变量
- python - 如何使用 Tkinter Entry 输入多行?
- swift - 一个 UILabel 和两个 NSMutableAttributedString
- c# - 返回 Json 结果格式时如何解析未定义的值?
- html - 如何在 HTML/CSS 中使用 % 中的位置方法来更精确地调整显示器分辨率?
- hpc - 如何在 slurm 中找到导致节点故障的 jobId?
- c# - ServiceStack ORMLite 如何在查询中解析 JSON 数据