具有不断变化的数据(例如文件上传)的 Amazon Elastic Container Service Web 应用程序

Amazon Elastic Container Service web application with changing data such as file uploads

我希望启动一个可满足大约 100 万用户需求的 Web 应用程序,因此我需要扩展到多个 Web 和数据库服务器。在测试了许多不同的解决方案之后,我决定使用 Amazon Elastic Container Service (ECS)。

系统使用 docker 图像来启动实例,但我的 Web 应用程序允许用户上传文件等,所以目前,文件将上传到不同的 docker 容器并在实例已终止。

在更改内容的同时异步处理 docker 图像 运行 的最佳做法是什么?我想到的唯一解决方案是启动一个带有永久存储的单独 EC2 实例,它将存储所有文件上传。

如您所述,您应该将那些 Docker 容器视为无状态处理。将容器主机 (EC2) 本地存储的任何内容都视为临时存储。

如果您需要存储文件,S3 是最佳选择。它可能是最便宜、最容易设置和最具扩展性的解决方案。

如果您需要与文件一起存储额外数据(即元数据),请将文件存储在 S3 中,将元数据存储在 DynamoDB 中。通常我过去所做的是为文件名生成一个 UUID 并将其存储在 S3 中,然后使用 UUID 作为 DynamoDB 中的分区键。

设置超级简单,可扩展到超过 100 万用户。