我最近在开发一个资源下载网站。现有一个需求是:在用户上传资源文件之前,客户端计算出要上传文件的MD5,并将其发送到服务端,服务端将得到的MD5值和所有已经上传过的资源的MD5值进行比较。如果遇到与客户端发送的MD5值相同的,则告诉客户端已存在相同内容的资源。否则,客户端紧接着开始上传资源文件。 然而这么做存在一个问题:多个客户端并发地向服务端发送“检查是否有相同内容资源”的请求时,服务端检查过后,客户端纷纷得到没有重复资源的响应。紧接着这些客户端纷纷向服务端上传资源文件,而其中的一些文件是相同内容的。最终导致了相同内容的资源被上传到了服务端。所以请教社区里的各位高手,有没有好的解决方案。
推荐上传的时候只取库里查询有没有重复的MD5,而不要去管并发上传的问题,你可以设想一下,如果你担心并发问题,而只让第一个人上传,后面的都提示他文件已存在。这时候万一第一个人传一半不传了呢?所以与其担心并发问题,还不如来个定时任务,定期检查重复文件然后删除。毕竟并发的上传同一个文件属于比较低概率的事件,不值得太废心思。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。