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

Node.js Nodejs API、Docker(Swarm)、可扩展性和存储,node.js,docker,amazon-s3,docker-swarm,multer-s3,Node.js,Docker,Amazon S3,Docker Swarm,Multer S3,我用nodejs和express编写了一个API,就像其他一百万个API一样,它将在几周内上线。该API目前运行在单个docker主机上,其中一个卷用于包含用户上载的图像的持久数据 我现在考虑的是可扩展性和高可用性设置,其中涉及到网络卷的问题。我已经读了很多关于NFS卷和docker swarm的S3驱动程序的书 根据我收集的信息,我为swarm设置选择了两种可能的解决方案: Docker音量驱动程序 我可以使用compose文件将每个docker主机连接到S3存储桶或EFS存储 即使我移动了

我用nodejs和express编写了一个API,就像其他一百万个API一样,它将在几周内上线。该API目前运行在单个docker主机上,其中一个卷用于包含用户上载的图像的持久数据

我现在考虑的是可扩展性和高可用性设置,其中涉及到网络卷的问题。我已经读了很多关于NFS卷和docker swarm的S3驱动程序的书

根据我收集的信息,我为swarm设置选择了两种可能的解决方案:

Docker音量驱动程序

  • 我可以使用compose文件将每个docker主机连接到S3存储桶或EFS存储
  • 即使我移动了VPS提供程序,连接也应该工作
  • 如果我将NFS存储放在网络的私有部分(没有S3或EFS),安全性会更好
API Multer S3中间件

  • 由于S3连接是在容器内完成的,因此不需要附加卷
  • 更轻松的swarm和docker管理
  • 事情必须重新编程,一些文件需要迁移
  • 在GET请求中,文件将由AWS直接提供,而不是由API提供
请告诉我你对此的反对意见。我做对了还是错过了什么?我该走哪条路?从不同主机安装时,有没有考虑延迟或权限的问题?
S3上的Tipps、EFS绝对受欢迎,因为我还不知道。

我不建议保存到磁盘,而是直接使用S3API-创建bucket并写入应用程序代码

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

看在上帝的份上,不要这样对自己,你要自己承担责任


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

谢谢你!我考虑了您的建议,将API更改为在上载控制器中使用S3。第一次测试看起来很有希望,我想我会走这条路。唯一吸引我写磁盘的是,如果Amazon更改API,就不必更改API。