在微服务之间传输文件
Posted
技术标签:
【中文标题】在微服务之间传输文件【英文标题】:Transfer file among microservices 【发布时间】:2019-11-26 00:39:17 【问题描述】:我有一个微服务链(Spring boot/cloud)
UI 允许用户从文件存储中下载文件,但响应返回会抛出所有微服务。我不想在每个微服务上下载文件并在响应时将其上传到下一个。(我不想存储在内存中,这会导致 OutOfmemory 错误) 是否可以返回一些流?
谢谢
【问题讨论】:
为什么不返回 URL 而不是文件? 只有互联网上提供的第一个服务 为什么不从第一个服务下载文件? 如果你想在存储数据之前在多个服务之间传递数据,那真的没有意义。如果所有服务都需要访问文件,您应该让第一个服务将其上传到文件存储,然后让所有其他服务都可以访问文件存储。在任何情况下,其他任何事情都没有真正意义。 【参考方案1】:我只会传回文件引用(如 url),并且仅在您需要时才检索实际文件。
因此,如果客户端 UI 需要来自微服务 1 的实际文件,我会将引用传回微服务 1,并让该服务获取文件内容并将其发送给客户端。
如果客户端可以自行解析 URL/引用,您甚至可以将其返回给客户端,然后让客户端检索文件。
无论哪种方式,您都希望尽量减少文件的移动/加载,并且基本上是在最后一刻这样做。
【讨论】:
以上是关于在微服务之间传输文件的主要内容,如果未能解决你的问题,请参考以下文章
在两个本地 Web Ubuntu 服务器之间传输文件的最快方法?