【专利下载】【专利代理】【商标和版权申请】Tel:18215660330

基于p2p技术实现镜像加速和预热方法及系统与流程

专利查询11月前  40

【专利下载】【专利代理】【商标和版权申请】Tel:18215660330



1.本发明涉及镜像预热的技术领域,具体地,涉及基于p2p技术实现镜像加速和预热方法及系统。


背景技术:

2.镜像(mirroring)是一种文件存储形式,是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像。可以把许多文件做成一个镜像文件,与ghost等程序放在一个盘里用ghost等软件打开后,又恢复成许多文件,raid 1和raid 10使用的就是镜像。常见的镜像文件格式有iso、bin、img、tao、dao、cif、fcd。
3.在公开号为cn109104451a的专利文献中公开了docker镜像的下载方法及节点、docker镜像的预热方法及节点,下载方法应用于端到端p2p分发系统中的p2p客户端,p2p分发系统包括:管控节点、超级节点和p2p客户端;该方法包括:第一p2p客户端向管控节点发送docker镜像的层文件的下载请求,以便管控节点依据第一p2p客户端的位置和各超级节点的负载,确定可用的、超级节点列表;第一p2p客户端向超级节点列表中的最优超级节点请求下载层文件,以便最优超级节点生成层文件的各分片的分片信息,第一p2p客户端依据所述分片信息,从最优超级节点和/或其他p2p客户端,下载层文件的各分片至本地。
4.在kuberentes环境下,镜像分发速度极大的影响了应用的启动速度。大规模集群中,批量节点并发拉取镜像,受制于镜像服务器下行带宽不仅造成镜像下载慢,应用启动慢,而且在单一容器网络结构中,宝贵的南北流量被消耗,影响业务。因此,需要提出一种技术方案以改善上述技术问题。


技术实现要素:

5.针对现有技术中的缺陷,本发明的目的是提供一种基于p2p技术实现镜像加速和预热方法及系统。
6.根据本发明提供的一种基于p2p技术实现镜像加速和预热方法,所述方法包括如下步骤:
7.步骤1:在kubernete的网关入口处,admission controller服务捕获新建应用的请求,解析请求,得到镜像名称;
8.步骤2:admission controller服务调用manager服务镜像预热接口;
9.步骤3:admission controller功能结束后,集群kubernetes进入到正常的调度流程,集群kubernete完成应用的调度,pod调度被调度到kubernetes的工作节点后,访问容器运行时下载容器镜像;
10.步骤4:下载镜像的http pull请求被proxy到daemon服务,开始下载镜像;
11.步骤5:集群kubernete工作节点的容器运行时完成镜像下载后,kubernetes启动pod,完成应用的下发流程。
12.优选地,所述步骤2包括如下步骤:
13.步骤2.1:manager服务接收到预热请求后,解析参数中的镜像名称,通过grpc的方式调用scheduler预热接口,开启预热功能;
14.步骤2.2:scheduler接收到预热请求后,解析镜像名称,查询scheduler记录,判断是否有当前存在文件,如果不存在,新建下载任务流程,并同时记录文件的id和文件的名称,同时访问镜像仓库,启动镜像下载流程,文件的id被后面下载流程使用;
15.步骤2.3:下载完成后,需对镜像每层文件做下面所述的操作,若文件大小超过分片值,则分片文件,并对分片后的文件依次sha,用于客户端下载后文件校验,同时生成seed文件,并标记下载的文件为大文件,反之标记为小文件,小文件无需分片,镜像每层文件,均按层数保存;
16.步骤2.4:文件下载完成,并根据按需分片后,建立文件id和文件的隐射关系,并更新本次任务状态。
17.优选地,所述步骤4包括如下步骤:
18.步骤4.1:容器运行时的pull镜像http/https请求,被daemon proxy的模块拦截,重定向本次请求到daemon服务,daemon服务调用manager接口注册为一个peer节点,并开启心跳线程;
19.步骤4.2:daemon服务接受镜像下载http/https请求后,通过grpc方式访问scheduler服务注册一个下载任务,得到文件分片信息,文件隐射id等信息;
20.步骤4.3:daemon服务用步骤4.2得到的返回结果,grpc再调用scheduler得到一个grpc消息通道,该通道用于后续daemon和scheduler交换消息;
21.步骤4.4:scheduler查询当前保存到文件以及对应的peer节点,如果是首次下载,在步骤2的预热过程中,已经在scheduler中保存了文件内容、状态、id和seed,如果是首次下载,通过步骤4.3得到的grpc通道,返回scheduler地址,文件大小,已经下载分片,总的分片;
22.步骤4.5:daemon服务在通道接收到信息后,得到peer节点地址,然后访问这些节点的下载端口,建立grpc流传输通道,开始文件分片下载;
23.步骤4.6:daemon下载完文件的分片后,需根据文件的sha值,如匹配seed中sha值,则当前分片下载完成,否则重新下载;
24.步骤4.7:daemon服务完成了分片的下载后,需同步信息给scheduler,包过下载了哪些分片,自己的开放的下载端口;如其他节点有该文件的下载请求,daemon服务将当前节点作为资源节点提供给其他节点,便于文件的传递;
25.步骤4.8:daemon服务完成所有分片的下载,并根据seed中信息完成文件的组装,响应步骤4.1中的被拦截的http文件下载请求,返回下载的文件数据。
26.优选地,所述步骤4.4中如果非首次下载,由scheduler和daemon服务构成的p2p网络缓存了文件信息,shecuduler查询哪些peer节点缓存了文件,并将得到的peer节点,文件大小,分片信息通过步骤4.3建立的通道返回给对端。
27.优选地,所述步骤4.6中需要通过总分片和当前的分片计算当前是否下载完所有的分片,如果还有分片,通过步骤4.3得到的grpc通道请求缺失分片的信息,重复步骤4.4直到下载完该文件的所有分片。
28.本发明还提供一种基于p2p技术实现镜像加速和预热系统,所述系统包括如下模
块:
29.模块m1:在kubernete的网关入口处,admission controller服务捕获新建应用的请求,解析请求,得到镜像名称;
30.模块m2:admission controller服务调用manager服务镜像预热接口;
31.模块m3:admission controller功能结束后,集群kubernetes进入到正常的调度流程,集群kubernete完成应用的调度,pod调度被调度到kubernetes的工作节点后,访问容器运行时下载容器镜像;
32.模块m4:下载镜像的http pull请求被proxy到daemon服务,开始下载镜像;
33.模块m5:集群kubernete工作节点的容器运行时完成镜像下载后,kubernetes启动pod,完成应用的下发流程。
34.优选地,所述模块m2包括如下模块:
35.模块m2.1:manager服务接收到预热请求后,解析参数中的镜像名称,通过grpc的方式调用scheduler预热接口,开启预热功能;
36.模块m2.2:scheduler接收到预热请求后,解析镜像名称,查询scheduler记录,判断是否有当前存在文件,如果不存在,新建下载任务流程,并同时记录文件的id和文件的名称,同时访问镜像仓库,启动镜像下载流程,文件的id被后面下载流程使用;
37.模块m2.3:下载完成后,需对镜像每层文件做下面所述的操作,若文件大小超过分片值,则分片文件,并对分片后的文件依次sha,用于客户端下载后文件校验,同时生成seed文件,并标记下载的文件为大文件,反之标记为小文件,小文件无需分片,镜像每层文件,均按层数保存;
38.模块m2.4:文件下载完成,并根据按需分片后,建立文件id和文件的隐射关系,并更新本次任务状态。
39.优选地,所述模块m4包括如下模块:
40.模块m4.1:容器运行时的pull镜像http/https请求,被daemon proxy的模块拦截,重定向本次请求到daemon服务,daemon服务调用manager接口注册为一个peer节点,并开启心跳线程;
41.模块m4.2:daemon服务接受镜像下载http/https请求后,通过grpc方式访问scheduler服务注册一个下载任务,得到文件分片信息,文件隐射id等信息;
42.模块m4.3:daemon服务用模块m4.2得到的返回结果,grpc再调用scheduler得到一个grpc消息通道,该通道用于后续daemon和scheduler交换消息;
43.模块m4.4:scheduler查询当前保存到文件以及对应的peer节点,如果是首次下载,在模块m2的预热过程中,已经在scheduler中保存了文件内容、状态、id和seed,如果是首次下载,通过模块m4.3得到的grpc通道,返回scheduler地址,文件大小,已经下载分片,总的分片;
44.模块m4.5:daemon服务在通道接收到信息后,得到peer节点地址,然后访问这些节点的下载端口,建立grpc流传输通道,开始文件分片下载;
45.模块m4.6:daemon下载完文件的分片后,需根据文件的sha值,如匹配seed中sha值,则当前分片下载完成,否则重新下载;
46.模块m4.7:daemon服务完成了分片的下载后,需同步信息给scheduler,包过下载
了哪些分片,自己的开放的下载端口;如其他节点有该文件的下载请求,daemon服务将当前节点作为资源节点提供给其他节点,便于文件的传递;
47.模块m4.8:daemon服务完成所有分片的下载,并根据seed中信息完成文件的组装,响应模块m4.1中的被拦截的http文件下载请求,返回下载的文件数据。
48.优选地,所述模块m4.4中如果非首次下载,由scheduler和daemon服务构成的p2p网络缓存了文件信息,shecuduler查询哪些peer节点缓存了文件,并将得到的peer节点,文件大小,分片信息通过模块m4.3建立的通道返回给对端。
49.优选地,所述模块m4.6中需要通过总分片和当前的分片计算当前是否下载完所有的分片,如果还有分片,通过模块m4.3得到的grpc通道请求缺失分片的信息,重复模块m4.4直到下载完该文件的所有分片。
50.与现有技术相比,本发明具有如下的有益效果:
51.1、本发明基于grpc实现的p2p协议框架,解决传统http文件传输的稳定性和效率问题,同时效率和稳定性更佳;
52.2、本发明自动对下载文件生成种子块,完成文件分割,解决文件过大下载缓慢的问题,解决文件因为某一段下载失败导致整个下载过程失败的问题;
53.3、本发明无侵入式兼容harbor,jfrog等镜像仓库,无需对修改现有镜像仓库方案,通过统一适配层解决镜像源不一致的问题;
54.4、本发明镜像自动预热,通过镜像预热功能,解决应用镜像下发部署慢或者失败的问题;
55.5、本发明支持节点的调度,通过调度算法,提供更优的节点下载镜像,解决镜像下载慢的问题;
56.6、本发明分布式架构,提供更高的扩展性,通过分布式架构,各组件可自由扩展,按需部署,解决系统的由于笨重带来的维护问题;
57.7、本发明多点同时下载,解决单一下载源的问题,极速提升镜像分发速度;基于内存文件隐射的文件,读取文件更高效。
附图说明
58.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
59.图1为本发明的架构图;
60.图2为本发明的下载流程图;
61.图3为本发明的镜像预热流程图。
具体实施方式
62.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
63.本技术方案提出一种基于p2p技术实现镜像加速和预热方法及系统,在镜像下载
时,可快速的分发镜像到节点,提供业务部署的成功率;包括如下步骤:
64.步骤1:在kubernete的网关入口处,admission controller服务捕获新建应用的请求,解析请求,得到镜像名称。
65.步骤2:admission controller服务调用manager服务镜像预热接口;步骤2.1:manager服务接收到预热请求后,解析参数中的镜像名称,通过grpc的方式调用scheduler预热接口,开启预热功能;步骤2.2:scheduler接收到预热请求后,解析镜像名称等,查询scheduler记录,判断是否有当前存在文件,如果不存在,新建下载任务流程,并同时记录文件的id和文件的名称,同时访问镜像仓库,启动镜像下载流程;文件的id被后面下载流程使用;步骤2.3:下载完成后,需对镜像每层文件做下面所述的操作,若文件大小超过分片值,则分片文件,并对分片后的文件依次sha,用于客户端下载后文件校验,同时生成seed文件,并标记下载的文件为大文件,反之标记为小文件,小文件无需分片;镜像每层文件,均按层数保存;步骤2.4:文件下载完成,并根据按需分片后,建立文件id和文件的隐射关系,并更新本次任务状态。
66.步骤3:admission controller功能结束后,集群kubernetes进入到正常的调度流程,集群kubernete完成应用的调度,pod调度被调度到kubernetes的工作节点后,访问容器运行时下载容器镜像。
67.步骤4:下载镜像的http pull请求被proxy到daemon服务,开始下载镜像;步骤4.1:容器运行时的pull镜像http/https请求,被daemon proxy的模块拦截,重定向本次请求到daemon服务,daemon服务调用manager接口注册为一个peer节点,并开启心跳线程;步骤4.2:daemon服务接受镜像下载http/https请求后,通过grpc方式访问scheduler服务注册一个下载任务,得到文件分片信息,文件隐射id等信息;步骤4.3:daemon服务用4.2步骤得到的返回结果,grpc再调用scheduler得到一个grpc消息通道,该通道用于后续daemon和scheduler交换消息;步骤4.4:scheduler查询当前保存到文件以及对应的peer节点,如果是首次下载,那么在前置的步骤2的预热过程中,已经在scheduler中保存了文件内容、状态、id和seed等信息,如果是首次下载,那么通过4.3得到的grpc通道,返回scheduler地址(此时sheduler被当做一个peer节点),文件大小,已经下载分片,总的分片。如果非首次下载,那么由scheduler和daemon服务构成的p2p网络缓存了文件信息,shecuduler查询哪些peer节点缓存了文件,并将得到的peer节点,文件大小,分片信息通过步骤4.3建立的通道返回给对端;步骤4.5:daemon服务在通道接收到信息后,得到peer节点地址,然后访问这些节点的下载端口,建立grpc流传输通道,开始文件分片下载;步骤4.6:daemon下载完文件的分片后,需根据文件的sha值,如匹配seed中sha值,则当前分片下载完成,否则重新下载,接着需要通过总分片和当前的分片计算当前是否下载完所有的分片,如果还有分片,通过4.3得到的grpc通道请求缺失分片的信息,重复步骤4.4直到下载完该文件的所有分片;步骤4.7:daemon服务完成了分片的下载后,需同步信息给scheduler,包过下载了哪些分片,自己的开放的下载端口等信息;如后续其他节点有该文件的下载请求,daemon服务可以将当前节点作为资源节点提供给其他节点,便于文件的传递;步骤4.8:daemon服务完成所有分片的下载,并根据seed中信息完成文件的组装,然后响应步骤4.1步骤中的被拦截的http文件下载请求,返回下载的文件数据。
68.步骤5:集群kubernete工作节点的容器运行时完成镜像下载后,kubernetes启动
pod,完成应用的下发流程。
69.manager负责所有的peer注册管理,包括配置信息,带宽控制,并且对外提供http访问接口;scheduler负责生成文件的种子,peer和文件隐射关系的建立,peer的调度工作;daemon运行在每一个kubernete集群node上peer节点,负责容器运行时的http/https镜像下载请求,并将请求转为由daemon和scheduler组成的p2p镜像网络的grpc请求;peer在peer to peer应用分为网络中,peer即是资源的消费者,也是资源的提供者,在本案例中,peer的实现就是daemon服务,daemon服务在启动中,开启长时间运行的grpc server,通过该server,提供文件下载功能;seed控制器是scheduler用来生成种子的模块,里面包含了peer节点信息,待下载文件的分片信息,sha哈希值,文件名称等信息。
70.本发明还提供一种基于p2p技术实现镜像加速和预热系统,所述系统包括如下模块:模块m1:在kubernete的网关入口处,admission controller服务捕获新建应用的请求,解析请求,得到镜像名称。
71.模块m2:admission controller服务调用manager服务镜像预热接口;模块m2.1:manager服务接收到预热请求后,解析参数中的镜像名称,通过grpc的方式调用scheduler预热接口,开启预热功能;模块m2.2:scheduler接收到预热请求后,解析镜像名称,查询scheduler记录,判断是否有当前存在文件,如果不存在,新建下载任务流程,并同时记录文件的id和文件的名称,同时访问镜像仓库,启动镜像下载流程,文件的id被后面下载流程使用;模块m2.3:下载完成后,需对镜像每层文件做下面所述的操作,若文件大小超过分片值,则分片文件,并对分片后的文件依次sha,用于客户端下载后文件校验,同时生成seed文件,并标记下载的文件为大文件,反之标记为小文件,小文件无需分片,镜像每层文件,均按层数保存;模块m2.4:文件下载完成,并根据按需分片后,建立文件id和文件的隐射关系,并更新本次任务状态。
72.模块m3:admission controller功能结束后,集群kubernetes进入到正常的调度流程,集群kubernete完成应用的调度,pod调度被调度到kubernetes的工作节点后,访问容器运行时下载容器镜像。
73.模块m4:下载镜像的http pull请求被proxy到daemon服务,开始下载镜像;模块m4.1:容器运行时的pull镜像http/https请求,被daemon proxy的模块拦截,重定向本次请求到daemon服务,daemon服务调用manager接口注册为一个peer节点,并开启心跳线程;模块m4.2:daemon服务接受镜像下载http/https请求后,通过grpc方式访问scheduler服务注册一个下载任务,得到文件分片信息,文件隐射id等信息;模块m4.3:daemon服务用模块m4.2得到的返回结果,grpc再调用scheduler得到一个grpc消息通道,该通道用于后续daemon和scheduler交换消息;模块m4.4:scheduler查询当前保存到文件以及对应的peer节点,如果是首次下载,在模块m2的预热过程中,已经在scheduler中保存了文件内容、状态、id和seed,如果是首次下载,通过模块m4.3得到的grpc通道,返回scheduler地址,文件大小,已经下载分片,总的分片;如果非首次下载,由scheduler和daemon服务构成的p2p网络缓存了文件信息,shecuduler查询哪些peer节点缓存了文件,并将得到的peer节点,文件大小,分片信息通过模块m4.3建立的通道返回给对端。模块m4.5:daemon服务在通道接收到信息后,得到peer节点地址,然后访问这些节点的下载端口,建立grpc流传输通道,开始文件分片下载;模块m4.6:daemon下载完文件的分片后,需根据文件的sha值,如匹配seed中
sha值,则当前分片下载完成,否则重新下载;需要通过总分片和当前的分片计算当前是否下载完所有的分片,如果还有分片,通过模块m4.3得到的grpc通道请求缺失分片的信息,重复模块m4.4直到下载完该文件的所有分片。模块m4.7:daemon服务完成了分片的下载后,需同步信息给scheduler,包过下载了哪些分片,自己的开放的下载端口;如其他节点有该文件的下载请求,daemon服务将当前节点作为资源节点提供给其他节点,便于文件的传递;模块m4.8:daemon服务完成所有分片的下载,并根据seed中信息完成文件的组装,响应模块m4.1中的被拦截的http文件下载请求,返回下载的文件数据。
74.模块m5:集群kubernete工作节点的容器运行时完成镜像下载后,kubernetes启动pod,完成应用的下发流程。
75.本发明基于grpc实现的p2p协议框架,解决传统http文件传输的稳定性和效率问题,同时效率和稳定性更佳;自动对下载文件生成种子块,完成文件分割,解决文件过大下载缓慢的问题,解决文件因为某一段下载失败导致整个下载过程失败的问题;无侵入式兼容harbor,jfrog等镜像仓库,无需对修改现有镜像仓库方案,通过统一适配层解决镜像源不一致的问题。
76.本发明镜像自动预热,通过镜像预热功能,解决应用镜像下发部署慢或者失败的问题;支持节点的调度,通过调度算法,提供更优的节点下载镜像,解决镜像下载慢的问题;分布式架构,提供更高的扩展性,通过分布式架构,各组件可自由扩展,按需部署,解决系统的由于笨重带来的维护问题;多点同时下载,解决单一下载源的问题,极速提升镜像分发速度;基于内存文件隐射的文件,读取文件更高效。
77.本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
78.以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。

技术特征:
1.一种基于p2p技术实现镜像加速和预热方法,其特征在于,所述方法包括如下步骤:步骤1:在kubernete的网关入口处,admission controller服务捕获新建应用的请求,解析请求,得到镜像名称;步骤2:admission controller服务调用manager服务镜像预热接口;步骤3:admission controller功能结束后,集群kubernetes进入到正常的调度流程,集群kubernete完成应用的调度,pod调度被调度到kubernetes的工作节点后,访问容器运行时下载容器镜像;步骤4:下载镜像的http pull请求被proxy到daemon服务,开始下载镜像;步骤5:集群kubernete工作节点的容器运行时完成镜像下载后,kubernetes启动pod,完成应用的下发流程。2.根据权利要求1所述的基于p2p技术实现镜像加速和预热方法,其特征在于,所述步骤2包括如下步骤:步骤2.1:manager服务接收到预热请求后,解析参数中的镜像名称,通过grpc的方式调用scheduler预热接口,开启预热功能;步骤2.2:scheduler接收到预热请求后,解析镜像名称,查询scheduler记录,判断是否有当前存在文件,如果不存在,新建下载任务流程,并同时记录文件的id和文件的名称,同时访问镜像仓库,启动镜像下载流程,文件的id被后面下载流程使用;步骤2.3:下载完成后,需对镜像每层文件做下面所述的操作,若文件大小超过分片值,则分片文件,并对分片后的文件依次sha,用于客户端下载后文件校验,同时生成seed文件,并标记下载的文件为大文件,反之标记为小文件,小文件无需分片,镜像每层文件,均按层数保存;步骤2.4:文件下载完成,并根据按需分片后,建立文件id和文件的隐射关系,并更新本次任务状态。3.根据权利要求1所述的基于p2p技术实现镜像加速和预热方法,其特征在于,所述步骤4包括如下步骤:步骤4.1:容器运行时的pull镜像http/https请求,被daemon proxy的模块拦截,重定向本次请求到daemon服务,daemon服务调用manager接口注册为一个peer节点,并开启心跳线程;步骤4.2:daemon服务接受镜像下载http/https请求后,通过grpc方式访问scheduler服务注册一个下载任务,得到文件分片信息,文件隐射id等信息;步骤4.3:daemon服务用步骤4.2得到的返回结果,grpc再调用scheduler得到一个grpc消息通道,该通道用于后续daemon和scheduler交换消息;步骤4.4:scheduler查询当前保存到文件以及对应的peer节点,如果是首次下载,在步骤2的预热过程中,已经在scheduler中保存了文件内容、状态、id和seed,如果是首次下载,通过步骤4.3得到的grpc通道,返回scheduler地址,文件大小,已经下载分片,总的分片;步骤4.5:daemon服务在通道接收到信息后,得到peer节点地址,然后访问这些节点的下载端口,建立grpc流传输通道,开始文件分片下载;步骤4.6:daemon下载完文件的分片后,需根据文件的sha值,如匹配seed中sha值,则当前分片下载完成,否则重新下载;
步骤4.7:daemon服务完成了分片的下载后,需同步信息给scheduler,包过下载了哪些分片,自己的开放的下载端口;如其他节点有该文件的下载请求,daemon服务将当前节点作为资源节点提供给其他节点,便于文件的传递;步骤4.8:daemon服务完成所有分片的下载,并根据seed中信息完成文件的组装,响应步骤4.1中的被拦截的http文件下载请求,返回下载的文件数据。4.根据权利要求3所述的基于p2p技术实现镜像加速和预热方法,其特征在于,所述步骤4.4中如果非首次下载,由scheduler和daemon服务构成的p2p网络缓存了文件信息,shecuduler查询哪些peer节点缓存了文件,并将得到的peer节点,文件大小,分片信息通过步骤4.3建立的通道返回给对端。5.根据权利要求3所述的基于p2p技术实现镜像加速和预热方法,其特征在于,所述步骤4.6中需要通过总分片和当前的分片计算当前是否下载完所有的分片,如果还有分片,通过步骤4.3得到的grpc通道请求缺失分片的信息,重复步骤4.4直到下载完该文件的所有分片。6.一种基于p2p技术实现镜像加速和预热系统,其特征在于,所述系统包括如下模块:模块m1:在kubernete的网关入口处,admission controller服务捕获新建应用的请求,解析请求,得到镜像名称;模块m2:admission controller服务调用manager服务镜像预热接口;模块m3:admission controller功能结束后,集群kubernetes进入到正常的调度流程,集群kubernete完成应用的调度,pod调度被调度到kubernetes的工作节点后,访问容器运行时下载容器镜像;模块m4:下载镜像的http pull请求被proxy到daemon服务,开始下载镜像;模块m5:集群kubernete工作节点的容器运行时完成镜像下载后,kubernetes启动pod,完成应用的下发流程。7.根据权利要求6所述的基于p2p技术实现镜像加速和预热系统,其特征在于,所述模块m2包括如下模块:模块m2.1:manager服务接收到预热请求后,解析参数中的镜像名称,通过grpc的方式调用scheduler预热接口,开启预热功能;模块m2.2:scheduler接收到预热请求后,解析镜像名称,查询scheduler记录,判断是否有当前存在文件,如果不存在,新建下载任务流程,并同时记录文件的id和文件的名称,同时访问镜像仓库,启动镜像下载流程,文件的id被后面下载流程使用;模块m2.3:下载完成后,需对镜像每层文件做下面所述的操作,若文件大小超过分片值,则分片文件,并对分片后的文件依次sha,用于客户端下载后文件校验,同时生成seed文件,并标记下载的文件为大文件,反之标记为小文件,小文件无需分片,镜像每层文件,均按层数保存;模块m2.4:文件下载完成,并根据按需分片后,建立文件id和文件的隐射关系,并更新本次任务状态。8.根据权利要求6所述的基于p2p技术实现镜像加速和预热系统,其特征在于,所述模块m4包括如下模块:模块m4.1:容器运行时的pull镜像http/https请求,被daemon proxy的模块拦截,重定
向本次请求到daemon服务,daemon服务调用manager接口注册为一个peer节点,并开启心跳线程;模块m4.2:daemon服务接受镜像下载http/https请求后,通过grpc方式访问scheduler服务注册一个下载任务,得到文件分片信息,文件隐射id等信息;模块m4.3:daemon服务用模块m4.2得到的返回结果,grpc再调用scheduler得到一个grpc消息通道,该通道用于后续daemon和scheduler交换消息;模块m4.4:scheduler查询当前保存到文件以及对应的peer节点,如果是首次下载,在模块m2的预热过程中,已经在scheduler中保存了文件内容、状态、id和seed,如果是首次下载,通过模块m4.3得到的grpc通道,返回scheduler地址,文件大小,已经下载分片,总的分片;模块m4.5:daemon服务在通道接收到信息后,得到peer节点地址,然后访问这些节点的下载端口,建立grpc流传输通道,开始文件分片下载;模块m4.6:daemon下载完文件的分片后,需根据文件的sha值,如匹配seed中sha值,则当前分片下载完成,否则重新下载;模块m4.7:daemon服务完成了分片的下载后,需同步信息给scheduler,包过下载了哪些分片,自己的开放的下载端口;如其他节点有该文件的下载请求,daemon服务将当前节点作为资源节点提供给其他节点,便于文件的传递;模块m4.8:daemon服务完成所有分片的下载,并根据seed中信息完成文件的组装,响应模块m4.1中的被拦截的http文件下载请求,返回下载的文件数据。9.根据权利要求8所述的基于p2p技术实现镜像加速和预热系统,其特征在于,所述模块m4.4中如果非首次下载,由scheduler和daemon服务构成的p2p网络缓存了文件信息,shecuduler查询哪些peer节点缓存了文件,并将得到的peer节点,文件大小,分片信息通过模块m4.3建立的通道返回给对端。10.根据权利要求8所述的基于p2p技术实现镜像加速和预热系统,其特征在于,所述模块m4.6中需要通过总分片和当前的分片计算当前是否下载完所有的分片,如果还有分片,通过模块m4.3得到的grpc通道请求缺失分片的信息,重复模块4.4直到下载完该文件的所有分片。

技术总结
本发明提供了一种基于p2p技术实现镜像加速和预热方法及系统,包括在网关入口处,捕获新建应用的请求,解析请求,得到镜像名称;调用镜像预热接口;admission controller功能结束后,进入到正常的调度流程,集群kubernete完成应用的调度,pod调度被调度到kubernetes的工作节点后,访问容器运行时下载容器镜像;下载镜像的http pull请求被proxy到daemon服务,开始下载镜像;集群Kubernete工作节点的容器运行时完成镜像下载后,kubernetes启动Pod,完成应用的下发流程。本发明通过镜像预热功能,解决应用镜像下发部署慢或者失败的问题。决应用镜像下发部署慢或者失败的问题。决应用镜像下发部署慢或者失败的问题。


技术研发人员:郭进 詹赵林 郑文礼 王畅 林鑫 孙佳明 梅金东 黄小 王鑫 刘金华 黄文杰 李贺安 聂子璇 刘清
受保护的技术使用者:兴业数字金融服务(上海)股份有限公司
技术研发日:2021.12.08
技术公布日:2022/3/8

最新回复(0)