这个配置文件图像上传器的逻辑是否可扩展?

时间:2017-08-22 10:33:26

标签: 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 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云功能
  • 用于保存图片的Google云端存储
  • firebase数据库,用于保存上传图像的用户的图片网址

我目前对此的担忧是:

  • 在验证和处理图像时将图像保留在内存中可能会导致服务器在重负载期间堵塞
  • 如何为图像比例生成唯一名称?:uuidV4 +当前日期(以毫秒为单位)+图像原始文件名的最后5个字符

1 个答案:

答案 0 :(得分:2)

multersharp都足以满足您的需求:

  

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

假设您拥有 100,000 用户。每个用户都会上传一张缩小为 20kb 图片的图片。这是 1.907GB~2GB 的存储空间。

Google云端存储:

  • 法兰克福的一个例子
  • 2GB区域存储
  

= $ 0.55 一年

Google Cloud功能:

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

  • 8334每月调整大小的操作
  • 每个功能
  • 3s
  • 每个功能的网络吞吐量2MB
  

= $ 16.24 一年

所以你很高兴。快乐的编码!

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

enter image description here