level 8
兄弟们问一个大文件上传的问题,我这边有一个提供上传文件的基础微服务A,对其他服务暴露API接口,服务B会调用服务A,前端上传大文件时调用B,B再调用A,但走到A的时候报oom了,现在需要改造A服务的接口有什么解决方案吗?
2024年05月09日 13点05分
1
level 8
现在让我先搞一个起码能传3G文件的接口,想到了分片上传这种,但需要和前端配合,但我这边是没法和前端对,中间还有个服务B,有点儿头大
2024年05月09日 13点05分
2
level 8
有一种可以直接让前端直接传亚马逊的,就不经过我们的服务,但是后端还做了一些检验的工作,这种方案也被否了
2024年05月09日 14点05分
4
这种才是正解,走后台就多一倍的网络开销,检查都是小事办法多的是
2024年05月12日 03点05分
level 8
组长给的思路是不要用对象接文件,用流的方式,但流的方式接收我有点懵,不知道怎么下手
2024年05月09日 14点05分
5
流就写磁盘了,内存只是缓存中转。你用对象接就要在内存占用足够大的空间
2024年05月10日 05点05分
level 4
直接传分片,S3base是支持分片的,合并和校验在后段弄,前端之间传分片
2024年05月09日 15点05分
6
level 13
没法和前端对什么意思?你接口改分片上传肯定要重新对过
2024年05月09日 16点05分
8
因为这个服务是供其他服务调用的,没有直接和前端交互
2024年05月10日 03点05分
@💢家里没矿💫 你就提供一个分片上传的,让服务B按照你的接口改,他们自己前后端对
2024年05月11日 07点05分
level 12
遇到过这种情况,我们也是A服务调B服务上传文件,A通过restTemplate调B服务的接口传,内存占用是文件大小的2倍,我们当时的解决方案是,把B服务放到公共层,不做单独的服务了,A服务引入B的jar包,直接在A服务上传文件
2024年05月12日 04点05分
10
level 7
之前弄过minio的minio oss obs 都有创建分片任务,上传片到分片任务以及最后的合并分片api , 你就出一个创建分片任务的接口,让前段先调用b-a去创建分片任务,让B吧任务id存起来, 然后让他把片带着任务id进来 然后要前段做一下限流 比如最多同时上传片数,分片大小弄个5mb好像我记得minio最小片除了最后一片以外不能低于5mb,这样同时进内存的就可控了,并且还能做断点续传,
2024年05月13日 08点05分
12