有什么方法可以将图像保存到 mongo 的 gridfs 并在后台异步上传到 S3 之后?
也许可以链接上传者?
接下来的问题:使用了多个服务器,因此 - 保存到硬盘驱动器图像和运行后台进程可以在不同的服务器上。
另外 1. 上传到 s3 时应该从 gridfs 中删除 2. 当相应实体被销毁时,它应该自动从 s3 中删除。
谢谢。
有什么方法可以将图像保存到 mongo 的 gridfs 并在后台异步上传到 S3 之后?
也许可以链接上传者?
接下来的问题:使用了多个服务器,因此 - 保存到硬盘驱动器图像和运行后台进程可以在不同的服务器上。
另外 1. 上传到 s3 时应该从 gridfs 中删除 2. 当相应实体被销毁时,它应该自动从 s3 中删除。
谢谢。
您的部署架构是什么样的?当您说“多个服务器”时,我有点困惑-您是指多个 mongod 实例吗?此外,当您指定您的要求时,这有点令人困惑。根据要求 1,如果您上传到 S3,则应删除 gridfs 文件。但是,根据您的要求,它不能同时存在于 S3 和 Gridfs 中,因此要求 2 似乎与第一个矛盾,即它首先不应该存在于 gridfs 中。您是否在 Gridfs 和 S3 上都保留了一些文件?
如果您在副本集或分片集群中运行,您可以在您的 gridfs 集合上创建一个可尾游标(您也可以在单个节点上执行此操作,尽管不建议这样做)。当你看到一个插入操作(看起来像'op':'i')时,你可以执行一个脚本或在你的应用程序中做一些事情来从gridfs中获取文件并将适当的文件推送到s3。同样,当您看到删除操作 ('op':'d') 时,您可以立即从 s3 中删除文件。
可尾游标的美妙之处在于它允许异步操作——您可以让另一个进程监视不同服务器上的 oplog 并执行适当的操作。
我使用 temp 变量存储到 gridfs 并让 Worker(请参阅this)执行从 gridfs 到 s3 的异步上传。
希望这会对某人有所帮助,谢谢。