目前的做法是图片等文件通过 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 以下的文件(图片)服务呢
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.