Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 配置文件映像上载程序的此逻辑是否可扩展?_Node.js_Firebase - Fatal编程技术网

Node.js 配置文件映像上载程序的此逻辑是否可扩展?

Node.js 配置文件映像上载程序的此逻辑是否可扩展?,node.js,firebase,Node.js,Firebase,以下用于实现概要文件上载功能的通用逻辑是否可以在生产中扩展 1. Inside a web app user selects an image to upload 2. Image gets sent to the server where it gets stored in memory and validated using nodejs package called: multer 3. If the image file is valid, a unique name is genera

以下用于实现概要文件上载功能的通用逻辑是否可以在生产中扩展

1. Inside a web app user selects an image to upload
2. Image gets sent to the server where it gets stored in memory and validated using nodejs package called: multer
3. If the image file is valid, a unique name is generated for the file
4. The image is resized to 150 x 150 using nodejs package called: sharp
5. Image is streamed to google cloud storage
6. Once image is saved a public URL of the image is saved under the user’s profile inside of the database
7. The image ULR is sent back to the client and the image gets displayed
用于实现上述功能的语言

这将通过以下方式实现:

  • 在Nodejs上作为后端运行的firebase云函数
  • 用于保存图像的谷歌云存储
  • 用于为上载图像的用户保存图像url的firebase数据库
我目前对此的担忧是:

  • 在验证和处理映像时将其保存在内存中可能会导致服务器在重载期间阻塞
  • 这种方法如何为图像比例生成唯一名称?:uuidV4+以毫秒为单位的当前日期+图像原始文件名的最后5个字符
两者都能满足您的需要:

上传的2MB图片缩小到150x150分辨率

假设您将拥有100000个用户。每个用户上传一张缩小到20kb的图片。这是1.907GB~2GB的存储空间

谷歌云存储:

  • 法兰克福的一个例子
  • 2GB区域存储
=每年0.55美元

谷歌云功能:

对于10万用户,为了简单起见,让我们假设它将均匀分布,因此每个月将有8334个用户上传他们的图像。让我们非常悲观地说,一个调整大小的函数需要3s

  • 每月调整8334次操作
  • 每个功能3秒
  • 每个功能的网络吞吐量为2MB
=每年16.24美元

所以你可以走了。快乐编码


这个答案最终会过时,所以我附上了谷歌价格计算器的截图:


记忆方面,你很好。Serverless基于这样一个事实:对于每个请求,只为该请求创建一个新实例。你不必担心基础设施——谷歌可以很容易地处理这些图像。也就是说,如果每个映像的容量超过100MB,您可能会遇到一些性能问题和相当高的成本。对于“标准”图像,你很好。至于ID,让Firebase为你做这项工作。让它生成ID-它会处理它。谢谢,图像将被限制为2MB,然后在调整到150x150大小后,基本上会缩小到kb,这样你就不用担心了。要意识到你的成本,但不要为此而紧张。