云桌面系统镜像文件快速分发方案分享SDK

简介: 为了解决云桌面环境下批量升级系统镜像的效率问题,传统的1对多FTP/HTTP方式因服务器带宽限制导致传输慢。一种基于优化的Bittorrent协议的P2P解决方案被提出,利用P2P技术将文件切块并让终端互相分享,提高下载速度,尤其适合大文件如256GB分区镜像的分发。通过自定义IO接口、跳过校验、超大分块、多分块支持及局域网自建Tracker等功能,实现更快的传输和镜像更新,适用于系统镜像、游戏更新等领域。该方案已广泛应用于各行业,可根据不同场景定制优化。

需求:云桌面场景下,需要给单位或者学校客户的数十台设备,批量升级系统镜像文件。
遇到的问题:镜像文件对应一个系统的分区,数据量非常庞大。用了以下方法:
(1)传统方式:1对多模式

改变镜像后,服务器端将这个镜像文件通过ftp/Http等方式,给局域网内的几十台、上百台终端进行发送,即1对多的模式。但问题是单台服务的带宽、磁盘读性能有限,如果是千M局域网,上传能力最高是120MB/s左右,如果有100个终端一起更新下载,每个终端只能获得1.2MB/s的下载速度,如果传输一个256G的分区镜像,需要几天的时间才可以传输完成,周期太长。

(2)衍生方案:
基于以上问题,先服务器传给几台客户机器,等几台机器传完后再通过这些机器下发给另外机器的各种模式。但这种方式需要的时间还是很长。那有没有其他更好的方案,可以更快的完成系统镜像文件的更新呢?

大文件快速分发传输文件的点量BT/P2P方案分享

该方案基于标准的Bittorrent协议进行改进优化的商业P2P SDK引擎,具备完善的P2P功能以及丰富的接口。可以实现,服务器同时给所有终端分发时,自动将文件切分为很多分块,随机给每个终端一个分块。然后每个终端拿到后,再互相连接分享已有的分块,实现一个分布式集群的自主分发,从而实现人越多,下载速度越快、分发效率越高。让每个终端都能获得120MB/s的下载速度。从而让一个本来需要几天才能传输完成的文件,可以在几十分钟就能完成传输。关于点量BT的具体功能,比较多这里不做过多赘述,感兴趣的朋友可以参考http://www.dolit.cn/category/dolit-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;
        }
    }
}

```

目前该方案已经广泛被多家厂商用于大文件以及超大文件的传输,比如影院原始拷贝分发、超大蓝光电影分发、系统镜像、游戏的更新、教培类文件的定时批量更新等。虽然主要功能都类似,解决的都是大文件快速分发传输的问题,但针对不同的细分行业还有所区别,比如游戏行业更重要的是对比更新功能,而影音行业会要求边下边播。具体在系统镜像传输领域,点量BT除了传统P2P的功能外,还针对该场景做了如下高级功能,更好的解决该场景下的实际需求:

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

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

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

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

5、支持局域网自建Tracker,提升P2P效率
针对局域网传输,可通过高级参数去除UPnP等映射,以及停止局域网自动发现。支持设置局域网自建Tracker,通过局域网Tracker的策略高效调度,以及指定节点之间的传输关系,可以减少多层路由器的多级子网下的端口映射干扰,让P2P连接更直接、迅速。此外除了针对Windows下的sdk ,还可提供Linux下的sdk以及对应的tracker,满足多场景的实际需求。

相关文章
|
3月前
|
分布式计算 DataWorks Java
DataWorks操作报错合集之在使用MaxCompute的Java SDK创建函数时,出现找不到文件资源的情况,是BUG吗
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
51 0
|
1月前
|
消息中间件 分布式计算 DataWorks
DataWorks产品使用合集之如何使用Python和阿里云SDK读取OSS中的文件
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
1月前
|
存储 负载均衡 安全
虚拟桌面和云桌面办公系统
虚拟桌面和云桌面办公系统
|
26天前
|
存储 开发工具
通用快照方案问题之快照SDK的安装如何解决
通用快照方案问题之快照SDK的安装如何解决
28 0
|
2月前
|
网络协议 安全 调度
阿里云公共DNS发布支持鸿蒙系统版的SDK
阿里云公共DNS发布支持鸿蒙系统版SDK,赋能鸿蒙开发者快速接入阿里云公共DNS服务。公共DNS将帮助接入的鸿蒙应用免除LocalDNS劫持困扰、解析加速、精准调度。
|
2月前
|
缓存 算法 Java
反射埋点方案: 全局点击埋点代理OnClickListener SDK 编写
反射埋点方案: 全局点击埋点代理OnClickListener SDK 编写
17 0
|
3月前
|
存储 监控 开发工具
对象存储OSS产品常见问题之python sdk中的append_object方法支持追加上传xls文件如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
168 9
|
3月前
|
开发工具 对象存储 Android开发
对象存储oss使用问题之C++使用OSS SDK时遍历OSS上的文件时崩溃如何解决
《对象存储OSS操作报错合集》精选了用户在使用阿里云对象存储服务(OSS)过程中出现的各种常见及疑难报错情况,包括但不限于权限问题、上传下载异常、Bucket配置错误、网络连接问题、跨域资源共享(CORS)设定错误、数据一致性问题以及API调用失败等场景。为用户降低故障排查时间,确保OSS服务的稳定运行与高效利用。
114 0
|
12月前
|
存储 弹性计算 运维
阿里云无影云电脑是什么?无影云桌面和传统电脑有什么区别?
阿里云无影云电脑是什么?无影云桌面和传统电脑有什么区别?
331 3
阿里云无影云电脑是什么?无影云桌面和传统电脑有什么区别?

热门文章

最新文章