目前的做法是图片等文件通过 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 以下的文件(图片)服务呢
1
night98 2018-04-19 18:08:13 +08:00 via Android
ssd,云存储。
|