首页 > 其他分享 >使用P2P快速分发大型系统镜像的技术方案

使用P2P快速分发大型系统镜像的技术方案

时间:2024-06-21 14:57:54浏览次数:3  
标签:分发 Downloader P2P DLBT download 镜像

镜像是对应一个系统的分区,数据量非常庞大。从事云桌面、教育系统技术服务的企业应该经常会遇到给某个单位或学员的几十台、上百台终端设备进行批量升级系统镜像的需求。

针对镜像的分发,传统的做法是镜像改变后,服务器端将这个镜像文件通过ftp/Http等方式,给局域网内的几十台、上百台终端进行发送,是1对多的模式。但服务器的带宽、磁盘读性能是有限的,如果是千M局域网,服务器的上传能力最高是120MB/s左右,如果有100个终端一起更新下载,每个终端只能获得1.2MB/s的下载速度,如果传输一个256G的分区镜像,需要几天的时间才可以传输完成。传统的做法显然无法满足实际客户场景的镜像分发需求。行业内又衍生出先服务器传给几台机器,等几台机器传完后再通过这些机器下发另外机器的各种模式。总而言之,都缺少一个可以同时利用所有机器网络和性能的便捷方式。

通过案例实践,P2P分发技术恰恰是满足这一需求的优秀解决方案。比如点量BT SDK,基于标准的Bittorrent协议自研的商业P2P SDK引擎。可以实现服务器同时给所有终端分发时,自动将文件切分为很多分块,随机给每个终端一个分块。每个终端拿到后,再互相连接分享自己有的分块,实现一个分布式集群的自主分发,从而实现人越多,下载速度越快、分发效率越高。让每个终端都能获得120MB/s的下载速度。从而让一个本来需要几天才能传输完成的文件,可以在几十分钟就能完成传输。

实现p2p的完整下载,如下示例:

DLBT_Startup ();
{
HANDLE download = DLBT_Downloader_Initialize ( "/home/mc/Desktop/test/测试 torrent/测试1.torrent", "/home/mc/Desktop/test/测试download");
while(download)
{
int percent = 0;
unsigned int speed = 0;
if(DLBT_Downloader_GetTotalWanted(download))
{
percent = (int)(DLBT_Downloader_GetTotalWantedDone(download)*100/DLBT_Downloader_GetTotalWanted(download));
}
speed = DLBT_Downloader_GetDownloadSpeed(download);
DOWNLOADER_INFO info;
KERNEL_INFO kinfo;
DLBT_GetKernelInfo (&kinfo); DLBT_GetDownloaderInfo (download, &info);

std::cout<<"received " << percent << " % - speed " << speed << std::endl;
sleep(1);
if( DLBT_Downloader_GetTotalWantedDone(download) == DLBT_Downloader_GetTotalWanted(download))
{
DLBT_Downloader_Release(download);
download = 0;
break;
}
}
}

除了传统P2P的所有功能外,BT SDK运用到系统镜像传输这一业务场景中,还能实现以下的细节功能:

1、提供自定义IO接口,可以将P2P内部所有针对文件、文件夹的IO操作,调用外部自定义的IO函数,这样就可以实现分区的读写等由外部用户自定义处理,可以针对/dev/sda1等分区直接当一个标准文件处理,用来制作torrent文件、进行文件的读写。用户通过自定义对磁盘分区、镜像的读写函数、查看文件大小、属性等函数,将分区当做一个标准文件处理。

2、专门提供镜像下载优化版本,可设置跳过传统校验:磁盘镜像分区比较大,传统BT/P2P在进行分块校验等操作时会耗费时间太久,通过自定义IO,以及高级设置,可以跳过这些校验,提升制作种子、下载完成的时间。由外部校验镜像完整性。

3、由于磁盘分区镜像可能是256G甚至更大的文件,因此建议设置4M等超大分块大小,这些在普通BT软件里面是不支持的。

4、镜像下载优化版本的点量BT可以支持4M/8M等超大分块大小,以及更多的分块数量支持。也可通过自定义IO,可以将一个超大镜像,拆分成多个虚拟文件,比如每个虚拟文件64G,以实现更好的并发传输效果。

5、针对局域网传输,可通过高级参数去除UPnP等映射,以及停止局域网自动发现。支持设置局域网自建Tracker,通过局域网Tracker的策略高效调度,以及指定节点之间的传输关系,可以减少多层路由器的多级子网下的端口映射干扰,让P2P连接更直接、迅速。

同时,点量BT在断点续传、限速、文件完整性校验等方面也功能完备,可以减少很多开发时间,同时不止适用于局域网,也可以用于广域网的镜像分发。该方案已经广泛被多家厂商应用于系统镜像传输和超大文件传输的业务场景中。比如影院原始拷贝分发、超大蓝光电影分发等领域。

 

标签:分发,Downloader,P2P,DLBT,download,镜像
From: https://www.cnblogs.com/dolit66/p/18260483

相关文章

  • 搭建一个属于自己的docker镜像加速器
    近期国内的docker镜像加速器已经失效,导致docker镜像拉不下来。如图所示,阿里云镜像加速器已经失效了:(有人可能会问我,为什么不直接自建harbor仓库把镜像包都放在harbor上,其实这也是种方法,但是本人很不喜欢harbor私服仓库的镜像名字一长串的写法,如192.168.33.234:5000/harbor/neo4......
  • 通过盗版系统镜像资源传播的剪贴板劫持器分析
    概览近期,安天CERT监测到通过镜像下载站传播的攻击活动。攻击者将Torrent资源投放至Windows操作系统镜像下载站中,诱导用户安装使用看似纯净的系统。实际上,攻击者事先将恶意文件隐藏于指定路径中,通过计划任务实现自启动,并利用EFI系统分区规避安全产品的检测,最终执行剪贴板劫持器......
  • 三种方法教你下载 Windows 10 和 Windows 11 原生镜像
    原文地址:https://itxiaozhang.com/three-methods-to-download-windows-10-and-windows-11-iso/本文配合视频食用效果最佳,视频教程在文章末尾。方法一:通过微软官网下载下载Windows11镜像打开微软官网下载页面访问微软官网的Windows11下载页面。选择下载选项......
  • 三种方法教你下载 Windows 10 和 Windows 11 原生镜像
    原文地址:https://itxiaozhang.com/three-methods-to-download-windows-10-and-windows-11-iso/本文配合视频食用效果最佳,视频教程在文章末尾。方法一:通过微软官网下载下载Windows11镜像打开微软官网下载页面访问微软官网的Windows11下载页面。选择下载选项......
  • 三种方法教你下载 Windows 10 和 Windows 11 原生镜像
    原文地址:https://itxiaozhang.com/three-methods-to-download-windows-10-and-windows-11-iso/本文配合视频食用效果最佳,视频教程在文章末尾。方法一:通过微软官网下载下载Windows11镜像打开微软官网下载页面访问微软官网的Windows11下载页面。选择下载选项......
  • 三种方法教你下载 Windows 10 和 Windows 11 原生镜像
    原文地址:https://itxiaozhang.com/three-methods-to-download-windows-10-and-windows-11-iso/本文配合视频食用效果最佳,视频教程在文章末尾。方法一:通过微软官网下载下载Windows11镜像打开微软官网下载页面访问微软官网的Windows11下载页面。选择下载选项......
  • 使用docker拉取镜像一直网路拒绝连接
    使用docker拉取镜像一直网路拒绝连接报错信息如下:Unabletofindimage'mysql:8.0.29'locally8.0.29:Pullingfromlibrary/mysqle54b73e95ef3:Retryingin1second327840d38cb2:Retryingin1second642077275f5f:Retryingin1seconde077469d560d:Waitingcbf214d981a......
  • kvm镜像迁移到openstack集群,发现镜像文件有损
     因为没有停机然后复制或者是创建出来的镜像文件,有可能系统盘直接损坏了,修复一下之后,重新用它来生成虚拟机,可以正常使用了 修复命令:xfs_repair /dev/vda2 #这个不行用下面的,如果磁盘繁忙,umount一下xfs_repair-L /dev/vda2  【1】定义虚拟机,发现磁盘文件损坏了......
  • 阿里云npmmirror 镜像站
    阿里云npmmirror镜像站http://npmmirror.com/npmmirror镜像站输入NPM包名、作者、关键字等信息即可搜索...站点介绍这是一个完整npmjs.com镜像,你可以用此代替官方版本(只读),我们将尽量与官方服务实时同步。我们的前后端应用代码均已开源,前端应用为cnpmweb,服务端应用......
  • 使用docker离线制作es镜像,方便内网环境部署
    1、自己在本地安装docker以及docker-compose2、拉取elasticsearch镜像dockerpullelasticsearch:7.14.0dockerpullkibana:7.14.03、将拉取到的镜像打包到本地目录dockersaveelasticsearch:7.14.0-o/Users/yanjun.hou/es/elasticsearch-7.14.0.tardockersav......