如何利用 Java +SpringBoot+fastdfs 搭建一个高效稳定的类似七牛云的文件存储服务呢?

2018-04-19 11:38:24 +08:00
 JavaFirstMaster

目前的做法是图片等文件通过 java 后台存入 fastdfs.

将 java 生成的 uuidName(随机且唯一的文件标识名)作为 key,dfs 返回的路径(形如/group1/M00/01/01/fdshaognsfhidosanf.jpg)作为 value 存入数据库.

最终将 uuidName 返回给调用者,供其获取文件时使用.

文件获取时通过查询数据库得到 dfs 的真实路径,通过类似下面的方式返回给前端

InputStream inputStream = fooService.getInputStreamByUuidName(uuidName);
ServletOutputStream outputStream = response.getOutputStream();
IOUtils.copy(inputStream, outputStream);
outputStream.flush();
outputStream.close();
inputStream.close();

fooService.getInputStreamByUuidName()方法涉及到流程控制以及其他操作(如生成图片的缩略图).耗时 80ms 左右.

但是访问接口的耗时普遍在 100ms 甚至 200ms 左右了.而且可以预见到高并发场景下,IO 会是个性能的瓶颈.所以我想问一下如何改造才能实现访问耗时在 100ms 以下的文件(图片)服务呢

3229 次点击
所在节点    问与答
1 条回复
night98
2018-04-19 18:08:13 +08:00
ssd,云存储。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/448082

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX