在微服务之间传输文件

Posted

技术标签:

【中文标题】在微服务之间传输文件【英文标题】:Transfer file among microservices 【发布时间】:2019-11-26 00:39:17 【问题描述】:

我有一个微服务链(Spring boot/cloud)

UI 允许用户从文件存储中下载文件,但响应返回会抛出所有微服务。我不想在每个微服务上下载文件并在响应时将其上传到下一个。(我不想存储在内存中,这会导致 OutOfmemory 错误) 是否可以返回一些流?

谢谢

【问题讨论】:

为什么不返回 URL 而不是文件? 只有互联网上提供的第一个服务 为什么不从第一个服务下载文件? 如果你想在存储数据之前在多个服务之间传递数据,那真的没有意义。如果所有服务都需要访问文件,您应该让第一个服务将其上传到文件存储,然后让所有其他服务都可以访问文件存储。在任何情况下,其他任何事情都没有真正意义。 【参考方案1】:

我只会传回文件引用(如 url),并且仅在您需要时才检索实际文件。

因此,如果客户端 UI 需要来自微服务 1 的实际文件,我会将引用传回微服务 1,并让该服务获取文件内容并将其发送给客户端。

如果客户端可以自行解析 URL/引用,您甚至可以将其返回给客户端,然后让客户端检索文件。

无论哪种方式,您都希望尽量减少文件的移动/加载,并且基本上是在最后一刻这样做。

【讨论】:

以上是关于在微服务之间传输文件的主要内容,如果未能解决你的问题,请参考以下文章

jenkins 构建后传输文件到服务器

本地计算机与远程服务器之间的文件传输

在两个本地 Web Ubuntu 服务器之间传输文件的最快方法?

linux下用scp命令在两个服务器之间传输文件,利用php_scp函数进行文件传输

linux服务器之间传输文件 scp

centos 7 LINUX服务器之间传输文件 SCP使用