实习记录之http断点上传

来源:互联网 发布:ucb2算法 编辑:程序博客网 时间:2024/06/05 04:14

刚开始弄这玩意,舍都不懂,甚至连HTTP与TCP是啥关系都不明。后来在网上搜集大量资料,恶补基础知识,终于知道HTTP只是个协议,可以用socket之类的发送和接收HTTP包。

至于断点上传,其实也比较简单,HTTP协议中有各式各样的头域可以作为客户端与服务端“沟通”的方式。而range头域就可以很好的用在断点上传这块,当然,还有其它类似Content-range头域可以用来额外支持“断点”这个功能。

断点上传这个功能需要用点心的是断点位置的判断和临时数据的存储。断点位置可以用数据库记录,每次客户端请求续传时,从数据库读取该文件上次的断点位置,然后与客户端上传来的断点位置比较,正确则继续上传,错误则返回正确的断点位置给客户端,这样的一种方式可以保证数据传输的正确性与完整性。

数据的存储方面,由于服务器是集群设计,所以肯定不可能将数据保存在服务器本地,因为保存在本地的话,客户端下次连接另外一台服务器请求续传时,将找不到已经上传的部分。所以将文件统一存储在一个文件服务器上是一个不错的选择。还有一种存储方式是分块存储,当上传的数据量达到N值时,可将这段数据保存至memcached服务器,当然这就得记录文件的分块信息了。