Nodejs API、Docker (Swarm)、可扩展性和存储

Nodejs API, Docker (Swarm), scalability and storage

我用 nodejs 编写了一个 API 并像其他数百万人一样表达,它将在几周内上线。 API 当前在单个 docker 主机上运行,​​该主机具有一个卷用于包含用户上传的图像的持久数据。

我现在正在考虑有关网络卷的问题的可伸缩性和高可用性设置。我已经阅读了很多关于 NFS 卷和潜在的 docker 群的 S3 驱动程序的文章。

根据我收集到的信息,我整理出了两种可能的 swarm 设置解决方案:

Docker 音量驱动程序

API Multer S3 中间件

请告诉我你对此的反对意见。我做对了吗还是我错过了什么?我应该走哪条路线?从不同主机安装时,是否需要考虑延迟或权限? 关于 S3、EFS 的提示当然是欢迎的,因为我还没有知识。

我不建议保存到磁盘,而是直接使用 S3 API - 创建存储桶并写入您的应用程序代码。

如果您正在考虑安装单个 S3 存储桶作为您的驱动器,则存在严重的限制。 5Gb 限制。任何时候您以任何方式修改内容,驱动程序都会重新上传整个存储桶。如果有任何争用,则必须重试。几年前,当我尝试这个时,保险丝驱动程序不够稳定,无法用作生产系统的一部分,它们会崩溃,你必须重新安装。这是个好主意,但只能在命令行上用作临时的东西。

至于 NFS,看在上帝的份上,不要对自己这样做,你要为自己承担责任。

EFS 无法真正评论,当它可用时,大多数人刚刚学会使用 S3,而且它更便宜。