极速秒传 维度表数据上报
百度云的「极速秒传」使用的是什么技术?
搜索服务器中有没有相同的文件,相同就复制,实现秒传。 上传大文件时,客户端软件会对要上传的文件进行"哈希值"计算,然后再跟百度的"哈希值"数据库中的文件进行查找匹配。 如果发现两者的"哈希值"相同,则将已存在于百度数据库里面的文件与当前用户做关联,具体操作使将对应的文件链接到用户的帐号。 总结:秒传并没有将用户文件上传,只是在百度自己的数据库当中找到了“一模一样的文件”,并将此文件与用户账号关联而已。
重删技术(deduplication),关于数据重删技术参考维基百科Data deduplication,这篇文章也写得非常不错What is Data Deduplication? Webopedia Definition,中文的这篇文章可以参考浅谈存储重删压缩技术(一)-煮酒论IT的博客-51CTO博客。
简单理解就是当你上传一个文件时,首先会在你本地计算指纹(计算整个文件指纹或者把文件分块再逐块计算指纹都可以),并上传到服务器比对(这就是为什么上传前需要等待好几分钟时间的原因),如果发现有相同指纹的文件,则不需要实际上传文件,仅仅在服务端给你画一个指针就可以了,有点类似Linux的链接(link)功能。
秒传的核心是计算用户上传文件的2个MD5值,如果成功匹配到百度云服务器中已存在文件的MD5,则直接返回成功,从而实现秒传;
如果匹配不到,才会老老实实的以二进制的形式上传文件。
小文件,省去服务器比较MD5的步骤,直接二进制上传,此举可有效减小过多请求造成的服务器压力;