基于IPFS的分批式镜像分发方法、系统及存储介质
- 国知局
- 2024-08-02 12:36:45
本发明涉及一种基于ipfs的分批式镜像分发方法、系统及存储介质,属于云计算容器。
背景技术:
1、在容器集群中,随着服务规模的扩大,任务需要被调度到多个不同的节点上以实现负载均衡和高效的资源利用,因此多个节点需要下载相同的容器镜像。在对服务响应速度有严格要求的任务场景中,如电商平台促销活动、流媒体服务发布新热点内容等,镜像分发的速度成为影响服务质量的关键,这些任务场景需减少用户等待时间的同时,并且能够保障服务规模的逐步扩大。在初始阶段,集群为快速响应突然增加的用户访问量,需要少量节点迅速启动容器以应对早期流量,避免用户等待过久,而在后续阶段,为了满足不断增长的流量需求,必须确保剩余多数节点也能以较快速度启动。
2、然而,默认的镜像分发方式在面对上述场景时,多个节点会并行地从中心镜像仓库下载镜像,可能会导致镜像仓库的网络资源拥堵,影响每个节点的下载速度和服务启动时延,因此在这种高并发和需要快速扩展的场景中尤为不利。为了解决中心仓库的网络拥堵问题,业界普遍借助p2p传输协议,如传统的ipfs进行镜像分发,使得镜像数据能够在节点间直接传输,减少对中心镜像仓库的依赖,提升总体下载速度。
3、在镜像分发场景中,传统的ipfs的镜像分发流程虽然提升了镜像的整体分发速度,但无法满足部分节点的快速响应需求,同时在传输效率和鲁棒性方面仍存在不足。首先,p2p传输方式在整体上提高了镜像分发的速度,但是所有节点几乎都在同一时刻完成镜像下载、启动容器服务,从而在最初的一段时间内,服务始终处于不可用的状态,增加了用户等待时间,一定程度上影响了服务质量;其次,ipfs在传输镜像时,需要在网络中通过dht逐级查找拥有所需镜像的节点,尤其是在源节点数量相对较少的情形,集群中的大多数节点仅作为路由转发的中间节点,此类节点占据了网络的主要部分,其不仅无法提供所需文件,还得使网络拓扑变的更加庞大与复杂,从而导致节点发现的过程更为缓慢;最后,在最初下载阶段大量的需求节点只能从有限的下载源选择中获取镜像文件块,会导致下载者之间竞争源节点的网络资源,传输质量容易受到初始节点网络波动的影响。
4、此外,虽然ipfs使节点在下载完所需文件块后即时共享,从而后续的下载请求拥有更多的下载源,但是镜像块的下载顺序是随机的,因此难以保证所需的文件块存在于多个节点上,当初始源节点退出集群时,其它节点无法获取到剩余所需文件块,从而导致传输过程发生堵塞。
技术实现思路
1、本发明的目的在于克服现有技术中的不足,提供一种基于ipfs的分批式镜像分发方法、系统及存储介质,解决带宽竞争导致传输速度较慢、传输时延较长的问题。
2、为解决上述技术问题,本发明是采用下述技术方案实现的:
3、第一方面,本发明提供了一种基于ipfs的分批式镜像分发方法,包括:
4、利用容器编排引擎获得容器调度结果,基于所述容器调度结果,获取待下载镜像的集群节点列表;
5、基于所述集群节点列表,计算各节点已拥有的待分发镜像的镜像层的缓存比例,将每个节点缓存比例与预设节点的阈值进行比较,选取缓存比例超出阈值的节点从镜像仓库中获取完整镜像;
6、将具有完整镜像的节点加入源节点列表中,以及将待下载镜像的节点加入到需求节点列表中,并根据所述源节点列表中的各节点构建初始的ipfs网络,并基于所述ipfs网络导出和共享镜像文件;
7、采用优化算法计算目标需求节点,并按照优化算法结果将所述目标需求节点分批次地输入至ipfs网络中进行镜像下载,并将下载后的镜像文件导入并启动容器;
8、将当前下载完成的需求节点从所述需求节点列表中移出,并添加到所述源节点列表中,继续进行下一批次需求节点的镜像下载,直至所述需求节点列表为空。
9、结合第一方面,进一步地,所述计算各节点待分发镜像的镜像层的缓存比例,包括:
10、获取待下载镜像的集群节点列表中各节点已缓存的镜像层信息,以及待分发镜像的镜像层信息,其中镜像层信息包括镜像层digest和镜像层size;
11、将所述待下载镜像的集群节点列表中各节点已缓存的镜像层digest和待分发镜像的镜像层digest进行比较,判断所述集群节点列表中各节点是否具有待分发镜像的镜像层缓存;
12、若部分节点具有待分发镜像的镜像层缓存,则根据所述镜像层size计算所述待分发镜像的镜像层缓存比例。
13、结合第一方面,进一步地,所述镜像层信息获取过程,包括:
14、根据镜像名和版本号,从所述镜像仓库中获取对应的镜像manifest文件,并根据所述镜像manifest文件提取镜像层信息。
15、结合第一方面,进一步地,所述待分发镜像的镜像层缓存比例的表达式如下:
16、;
17、其中,表示节点i具有的缓存比例;n表示镜像层总数;表示第j个镜像层的大小;表示节点上是否已缓存第j个镜像层。
18、结合第一方面,进一步地,所述待分发镜像的镜像层缓存比例均未超过预设节点的阈值,则任意选取一个节点从所述镜像仓库中获取完整镜像。
19、结合第一方面,进一步地,基于所述ipfs网络导出和共享镜像文件,包括:
20、所述源节点列表中各节点启动ipfs daemon进程;
21、所述源节点列表中各节点的容器运行时将所述镜像文件导出,并通过add指令将所述镜像文件共享到ipfs网络。
22、结合第一方面,进一步地,所述需求节点加入到ipfs网络中进行镜像下载,包括:
23、采用带宽检测工具获取所述源节点列表中各节点的上传带宽,以及所述需求点列表中各节点的下载带宽;
24、利用优化算法计算出当前批次传输的目标需求节点;
25、所述目标需求节点将所述源节点列表中各节点的ip地址和网络id添加到ipfs网络配置中;
26、所述目标需求节点启动 ipfs daemon进程,并根据所述镜像文件的哈希值以及get指令下载所需镜像文件。
27、结合第一方面,进一步地,计算出当前批次传输的目标需求节点的表达式如下:
28、;
29、其中,n表示需求节点的数量;m表示当前源节点的数量;表示需求节点i的下载带宽;表示源节点j的上传带宽;s表示节点所需镜像大小;表示需求节点i的已有镜像层缓存比例;表示需求节点是否在该批次进行下载的决策变量;表示平均下载时延的加权值;表示未利用的源节点带宽的加权值。
30、第二方面,一种基于ipfs的分批式镜像分发系统,包括:
31、节点列表获取模块,用于利用容器编排引擎获得容器调度结果,基于所述容器调度结果,获取待下载镜像的集群节点列表;
32、节点信息收集模块,用于基于所述集群节点列表,计算各节点已拥有的待分发镜像的镜像层的缓存比例,将每个节点缓存比例与预设节点的阈值进行比较,选取缓存比例超出阈值的节点从镜像仓库中获取完整镜像;
33、策略执行模块,用于将具有完整镜像的节点加入源节点列表中,以及将待下载镜像的节点加入到需求节点列表中,并根据所述源节点列表中的各节点构建初始的ipfs网络,并基于所述ipfs网络导出和共享镜像文件;
34、分发协调模块,用于采用优化算法计算目标需求节点,并按照优化算法结果将所述目标需求节点分批次地输入至ipfs网络中进行镜像下载,并将下载后的镜像文件导入并启动容器;
35、列表更新模块,用于将当前下载完成的需求节点从所述需求节点列表中移出,并添加到所述源节点列表中,继续进行下一批次需求节点的镜像下载,直至所述需求节点列表为空,完成全部需求节点的镜像下载。
36、第三方面,计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如第一方面所述方法的步骤。
37、与现有技术相比,本发明所达到的有益效果:
38、本发明根据容器调度结果,确定需要下载镜像的集群节点,基于集群节点列表计算各节点已拥有待分发镜像的镜像层的缓存比例,将缓存比例超出预设阈值的节点从镜像仓库中获取完整镜像,通过选择超出预设阈值的节点,使得这些节点拥有较多镜像层缓存,从而实现以较快的速度构建出较多的源节点。
39、采用优化算法计算目标需求节点,并按照优化算法结果将所述目标需求节点分批次地输入至ipfs网络中进行镜像传输,由于在ipfs网络中加入新节点前,先前的节点已经获取到完整的镜像,这些节点可以更早启动容器,从而加快了服务的响应速度,并且后续的需求节点可以稳定地从多个源节点处下载所需的镜像文件,减少了对同一源节点网络的带宽资源竞争。在ipfs传输的后期,通过不断更新源节点列表和需求节点列表,使得源节点数量占据相当高的比例,新加入的节点能够通过较少查询次数便能够发现源节点,同时选择最优的传输路径,提升了传输效率。
本文地址:https://www.jishuxx.com/zhuanli/20240802/236964.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表