一种基于内容定义分块与速率感知调度的局域网大文件P2P分发方法及系统与流程

摘要: 本发明涉及计算机网络与分布式文件传输,尤其涉及一种基于内容定义分块与速率感知调度的局域网大文件p2p分发方法及系统。背景技术:1、本发明在局域网多设备间大文件分...
一种基于内容定义分块与速率感知调度的局域网大文件P2P分发方法及系统与流程

本发明涉及计算机网络与分布式文件传输,尤其涉及一种基于内容定义分块与速率感知调度的局域网大文件p2p分发方法及系统。

背景技术:

1、本发明在局域网多设备间大文件分发场景(如学校机房、企业培训中心)中,传统方案主要包括bittorrent协议、rsync串行传输和nfs/samba共享文件系统。然而,这些现有技术均存在明显的局限性。传统的bittorrent协议采用固定偏移量的文件分块方式,当文件内容发生少量插入或删除时,固定分块边界发生位移,即使内容未变的数据块也会因偏移变化而哈希校验失败,导致接收端需要重新下载整个文件。例如,50gb虚拟机镜像修改50mb时,传统bittorrent会触发50gb的全量重传,效率相差约400倍。此外,传统bittorrent的“最稀有优先”策略未考虑节点间的带宽差异,在千兆/百兆混合网络环境中,高速节点可能被迫从低速节点获取数据,有效吞吐率降低5-10倍。

2、rsync方案虽然采用滚动校验和算法支持增量传输,但其存在计算开销大、单源瓶颈和误判率高等问题。发送端和接收端均需计算整个文件的校验和,对于50gb文件需耗时1-2分钟的cpu密集型计算;且rsync基于客户端-服务器模型,多台设备同时拉取会对服务端造成巨大的i/o和网络压力。在虚拟机镜像等场景下,rsync常因滚动校验的碰撞而传输大量实际未变化的数据块。nfs/samba等网络文件系统共享方案则存在集中式瓶颈、无增量支持和部署复杂的问题,所有读取请求集中于服务器,每次文件更新均需完整传输,且需额外配置权限和挂载管理。

3、在专利技术方面,cn109495513b公开了一种基于内容定义分块的增量同步方法,通过cdc算法解决了固定分块的边界错位问题,但该专利仅关注单机间的增量同步,未涉及p2p网络环境下的多节点分发调度。cn111131329a公开了一种基于历史传输性能进行节点选择的p2p调度方法,但其依赖于历史数据的反馈调整,在初始阶段或节点分布不当时收敛缓慢,无法即时应对千兆/百兆混合网络的带宽异构性问题。

技术实现思路

1、本发明为解决现存的技术问题而提供一种基于内容定义分块与速率感知调度的局域网大文件p2p分发方法及系统,解决了局域网大文件分发中因内容局部修改导致全量重传、混合网络带宽异构导致调度低效及磁盘随机写入性能下降的问题。

2、为解决上述技术问题,根据本发明的一个方面,更具体的说是一种基于内容定义分块与速率感知调度的局域网大文件p2p分发方法,包括以下步骤:

3、步骤s1、采用内容定义分块算法(cdc算法)对源文件进行动态分块,生成包含数据块元数据的种子文件,所述数据块元数据包括文件大小、数据块偏移量、数据块长度及数据块哈希值;

4、步骤s2、接收端在开始下载前扫描本地已存在的本地文件,通过内容定义分块算法计算本地文件的数据块划分及哈希值,与种子文件中的数据块哈希值进行比对,识别内容相同但偏移不同的可复用数据块;

5、步骤s3、对于识别出的可复用数据块,利用块克隆操作将其从旧文件的原始偏移位置移动至新文件的目标偏移位置;

6、步骤s4、p2p节点在建立连接时交换网络协商速率信息;

7、步骤s5、下载端根据本地速率和目标节点速率为每个可用节点计算调度权重得分,选择得分最高的节点作为下载源;

8、步骤s6、维护一个可配置大小的下载窗口,强制优先下载窗口起始位置的数据块,同时在窗口内允许并行下载其他缺失数据块;

9、步骤s7、通过中心化的跟踪器服务(tracker服务)维护各任务节点的节点列表;

10、步骤s8、当所有缺失数据块下载完成后,对复用的数据块和下载的数据块进行完整性校验,释放旧文件中未使用的数据块所占用的磁盘空间,完成文件的增量更新。

11、更进一步的,步骤s1中,所述内容定义分块算法采用基于gear哈希的滑动窗口策略,最小数据块大小为16kb,平均数据块大小为128kb,最大数据块大小为1mb。

12、更进一步的,步骤s3中,所述块克隆操作包括linux系统的复制文件范围系统调用(copy_file_range系统调用)或windows系统的文件系统控制复制扩展区到文件操作(fsctl_duplicate_extents_to_file操作)。

13、更进一步的,其特征在于:步骤s5中,计算调度权重得分的具体计算公式为:

14、;

15、上式中,表示调度权重得分;表示节点的网卡协商速率;表示千兆匹配加权项;表示节点的待处理请求数;表示节点的往返时延。

16、更进一步的,所述千兆匹配加权项在本地速率≥1000且节点速率≥1000时,该千兆匹配加权项取值为50,否则取值为0。

17、更进一步的,步骤s6中所述滑动窗口顺序下载的具体实现包括:维护窗口起始位置window_start和下一个必须完成的顺序数据块编号next_sequential;

18、当next_sequential对应的数据块未完成时,优先下载该数据块;

19、当next_sequential对应的数据块已完成时,在窗口范围内选择其他缺失数据块进行并行下载;

20、当next_sequential超过窗口一半位置时,将window_start更新为next_sequential,实现窗口滑动。

21、更进一步的,步骤s7中,所述跟踪器服务(tracker服务)采用传输控制协议连接(tcp连接)和json格式的单行消息进行通信,消息以换行符\n 分隔。

22、一种基于内容定义分块与速率感知调度的局域网大文件p2p分发系统,具体包括:

23、种子生成模块,用于采用内容定义分块算法对源文件进行动态分块,生成包含数据块元数据的种子文件;

24、增量扫描模块,用于在接收端扫描本地已存在的文件,通过比对数据块哈希值识别可复用数据块;

25、零拷贝重用模块,用于利用文件系统块克隆操作将可复用数据块从旧文件位置移动至新文件位置;

26、速率感知握手模块,用于在点对点连接建立时交换网络协商速率信息;

27、加权调度模块,用于根据本地速率和目标节点速率为每个可用节点计算调度权重得分,并选择最佳下载源;

28、顺序下载模块,用于维护滑动下载窗口,实现顺序写入与并行下载的平衡;

29、跟踪器协调模块,用于通过中心化跟踪器服务维护节点列表和协调节点发现;

30、完整性校验模块,用于对复用的和下载的数据块进行哈希校验,确保数据完整性。

31、更进一步的,所述顺序下载模块维护窗口起始位置和下一个必须完成的顺序数据块编号,当所述顺序数据块编号对应的数据块未完成时优先下载该数据块,当该数据块已完成时在窗口范围内选择其他缺失数据块进行并行下载,当所述顺序数据块编号超过窗口一半位置时将窗口起始位置更新为该顺序数据块编号。

32、本发明提供的一种基于内容定义分块与速率感知调度的局域网大文件p2p分发方法及系统,相比现有技术,本方法取得的效果有:

33、1、本发明通过将内容定义分块算法与p2p传输协议深度结合,使文件分块边界由内容本身决定而非固定偏移量,当文件发生局部修改时,未变动内容的数据块边界和哈希值保持稳定,接收端可精准识别并复用本地已有数据块,从而仅需传输实际发生变化的数据块,避免了传统固定分块方案中因偏移位移导致的无效全量重传。

34、2、本发明通过速率感知握手与加权调度算法,使节点在建立连接时交换网卡协商速率信息,并在调度权重计算中引入千兆匹配加权项,确保高速节点优先从其他高速节点获取数据,有效避免了传统"最稀有优先"策略中千兆节点被百兆节点拖累的问题,充分释放了混合网络环境中的高速带宽潜力。

35、3、本发明通过滑动窗口顺序下载策略,在维持p2p多源并行下载优势的同时,强制优先完成窗口起始位置的数据块,将绝大部分写入操作约束在连续的磁盘地址范围内,有效减少了机械硬盘的随机寻道开销,显著改善了大规模p2p下载场景下的磁盘写入效率。

36、4、本发明通过零拷贝块克隆操作实现数据重用,利用文件系统层面的块克隆机制将可复用数据块从旧文件位置直接映射至新文件目标位置,全程无需将数据读取到用户态内存再写回磁盘,大幅减少了i/o路径上的内存复制和数据搬运开销,显著提升了增量更新场景下的文件重组效率。