删除临时文件的时机问题
来源:9-5 Docker安装RabbitMQ及UI管理

linxiyun
2019-04-10
老师,请问,照理来说,文件上传到oss后,就可以通知上传服务器删除临时文件了,但是如果临时文件很大,这时用户从上传服务器下载临时文件下载到一半又不能删除,怎样做一个机制让用户下载完之后再删除呢?
写回答
1回答
-
xiaomo
2019-04-10
同学你好,关于临时文件的删除问题,一般有这些方案:
1)一个下载的url会有时效性,比如4个小时,如果4个小时后依然不能下载完文件,那么就需要重新获取url再下载;所以可以设置一个静态时间段,使得上传的临时文件4个小时后就会被自动删除(不过如果上传量大,可能磁盘会爆炸);
2)把一个小型规模的私有云集群当做临时存储,也就是用户上传的文件只有写入私有云存储(Ceph)里才算上传完成,在文件转移到OSS之前都可以从Ceph里下载;因为是一个集群,对于方案1来说它的存储空间更大,文件保留的时间可以更长,比如3天后或者集群使用空间达到阈值时才通知删除;
3)增加一个下载计数器,比如在redis里缓存当前每个文件从临时存储里下载的数量。在文件转移OSS之前,每有一个新的下载请求到达,计数器加1;每有一个下载完成,当前文件的计数器减1;等到计数器变为0,或者从上传后的一小段时间内都没有下载请求,那么就可以通知去删除这个临时文件了。
10
相似问题