公开/公告号CN112883006A
专利类型发明专利
公开/公告日2021-06-01
原文格式PDF
申请/专利权人 云知声智能科技股份有限公司;厦门云知芯智能科技有限公司;
申请/专利号CN202110268202.4
申请日2021-03-12
分类号G06F16/182(20190101);G06F16/13(20190101);G06F16/11(20190101);
代理机构
代理人
地址 100096 北京市海淀区西三旗建材城内1幢一层101号
入库时间 2023-06-19 11:11:32
技术领域
本发明涉及容器镜像加速技术领域,具体涉及一种企业级容器镜像加速方法、装置、电子设备和存储介质。
背景技术
目前,获得用于构建容器镜像的描述文件,即Dockerfile;解析容器镜像第一下载地址;并确定出所述相关文件的第二下载地址,对比各下载地址速度,选择最优下载地址进行下载。但是存在如下问题:只加速构建容器镜像时下载容器镜像速度,而非运行时加速,基于选择进行加速,需要多下载地址支持。
发明内容
本发明提供一种企业级容器镜像加速方法、装置、电子设备和存储介质,能够解决上述多地址下载,只加速构建容器镜像时下载容器镜像速度,的技术问题。
本发明解决上述技术问题的技术方案如下:
第一方面,本发明实施例提供了一种企业级容器镜像加速方法,包括:
判断本地是否存在对应的文件;
若本地不存在所述对应的文件,则从文件服务器下载所述文件到本地节点;
所述文件服务器将至少一个block文件进行划分,确定至少一个对等节点是否存在对应的block文件,分别向请求节点发送block文件,所述请求节点接收到至少一个对等节点的block文件后聚合容器镜像文件。
在一些实施例中,所述判断本地是否存在对应的文件之前,所述方法还包括:
docker daemon接收到用户触发的pull指令;
对容器镜像文件层级和存储进行转换;
将劫持拉取容器镜像请求发送至cluster manager组件;
所述cluster manager组件将所述劫持拉取容器镜像请求包装成容器镜像仓库可解析的http形式;
Registry返回容器镜像到所述cluster manager组件的节点,所述clustermanager组件将所述容器镜像进行分块操作,得到至少一个block文件;
在一些实施例中,所述方法还包括:聚合容器镜像文件后,加载成本地的容器镜像。
在一些实施例中,所述一个对等节点就是一个P2P客户端。
第二方面,本发明实施例提供了一种企业级容器镜像加速装置,包括:
判断模块:用于判断本地是否存在对应的文件;
下载模块:用于若本地不存在所述对应的文件,则从文件服务器下载所述文件到本地节点;
聚合模块:用于所述文件服务器将至少一个block文件进行划分,确定至少一个对等节点是否存在对应的block文件,分别向请求节点传递block文件,所述请求节点接收到至少一个对等节点的block文件后聚合容器镜像文件。
在一些实施例中,上述判断模块还用于:
docker daemon接收到用户触发的pull指令;
对容器镜像文件层级和存储进行转换;
将劫持拉取容器镜像请求发送至cluster manager组件;
所述cluster manager组件将所述劫持拉取容器镜像请求包装成容器镜像仓库可解析的http形式;
Registry返回容器镜像到所述cluster manager组件的节点,所述clustermanager组件将所述容器镜像进行分块操作,得到至少一个block文件;
在一些实施例中,上述加载模块还用于:聚合容器镜像文件后,加载成本地的容器镜像。
在一些实施例中,所述一个对等节点就是一个P2P客户端。
第三方面,本发明实施例还提供了一种电子设备,包括:处理器和存储器;
所述处理器通过调用所述存储器存储的程序或指令,用于执行如上所述任一项所述企业级容器镜像加速方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行如上所述任一项所述企业级容器镜像加速方法。
本发明的有益效果是:通过判断本地是否存在对应的文件;若本地不存在所述对应的文件,则从文件服务器下载所述文件到本地节点;所述文件服务器将至少一个block文件进行划分,确定至少一个对等节点是否存在对应的block文件,分别向请求节点发送block文件,所述请求节点接收到至少一个对等节点的block文件后聚合容器镜像文件。本申请实施例中镜像分片Block文件大都分布在各个对等节点,可减少容器镜像仓库节点的网络带宽75%压力。多线程下载block文件并聚合操作,相对于整个容器镜像速度提升90%;并且通过容器镜像加速技术可以共享重复的容器镜像文件,保证要运行容器的大部分文件已经处于运行状态,即启动只需启动自身所需文件系统即可。提供容器运行时数据一致性校验,同时可以对每一次数据访问进行校验,如果数据被篡改,则可以从远端数据源重新拉取。
附图说明
图1为本发明实施例提供的一种企业级容器镜像加速方法之一;
图2为本发明实施例提供的一种企业级容器镜像加速方法之二;
图3为本发明实施例提供的企业级容器镜像加速架构;
图4为本发明实施例提供的一种企业级容器镜像加速装置;
图5为本发明实施例提供的一种电子设备的示意性框图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
在介绍本发明之前,首先介绍容器镜像技术加速的原理。
第一步:把一个容器镜像分成元数据和数据两层。其中元数据层是一颗自校验的哈希树。每个文件和目录都是哈希树中的一个附带哈希值的节点。一个文件节点的哈希值是由文件的数据确定,一个目录节点的哈希值则是由该目录下所有文件和目录的哈希值确定。
第二步:每个文件的数据被按照固定大小切片并保存到数据层中。数据切片可以在不同文件以及不同容器镜像中的不同文件共享。
应理解,下文中的本地节点包含文件节点和目录节点,对等节点和本地节点是同样的概念,对等节点突出p2p的概念。
容器加速技术的好处:
共享重复的容器镜像文件,保证要运行容器的大部分文件已经处于运行状态,即启动只需启动自身所需文件系统即可。
提供容器运行时数据一致性校验,同时可以对每一次数据访问进行校验,如果数据被篡改,则可以从远端数据源重新拉取。
图1为本发明实施例提供的一种企业级容器镜像加速方法之一;
第一方面,结合图1,本发明实施例提供了一种一种企业级容器镜像加速方法,包括如下S101、S102和S103三个步骤:
第一方面,本发明实施例提供了一种企业级容器镜像加速方法,包括:
S101:判断本地是否存在对应的文件。
具体的,本申请实施例中,判断本地是否存在对应的文件的主体是dfget代理。
S102:若本地不存在所述对应的文件,则从文件服务器下载所述文件到本地节点。
具体的,本申请实施例中,dfget代理判断本地不存在对应的文件,则从文件服务器机箱下载文件到本地节点。
S103:所述文件服务器将至少一个block文件进行划分,确定至少一个对等节点是否存在对应的block文件,分别向请求节点发送block文件,所述请求节点接收到至少一个对等节点的block文件后聚合容器镜像文件。
具体的,本申请实施例中,文件服务器会针对若干block文件进行划分,校验多个对等节点是否存在对应的block文件,分别向请求节点传递block文件,请求节点接收到各个对等节点的block文件后由dfget代理进行聚合成为完整的容器镜像文件。
图2为本发明实施例提供的一种企业级容器镜像加速方法之二;
在一些实施例中,所述判断本地是否存在对应的文件之前,所述方法还包括:
S201:docker daemon进行接收到用户触发的pull指令;
具体的,本申请实施例中,用户书写Dockerfile构建容器镜像或者直接使用命令进行下载容器镜像时触发pull指令。
S202:对容器镜像文件层级和存储进行转换;
具体的,本申请实施例中,在每一个工作节即点部署dfget代理,对容器镜像文件层级和存储进行转换,转换即block文件和镜像原始文件格式转换。
S203:将劫持拉取容器镜像请求发送至cluster manager组件;
具体的,本申请实施例中,dfget代理将劫持拉取容器镜像请求发送到clustermanager组件。
S204:所述cluster manager组件将所述劫持拉取镜像请求包装成容器镜像仓库可解析的http形式;
具体的,本申请实施例中,cluster manager组件将劫持拉取容器镜像请求包装成容器镜像仓库可解析的http形式。
S205:Registry返回容器镜像到所述cluster manager组件的节点,所述clustermanager组件将所述容器镜像进行分块操作,得到至少一个block文件;
具体的,本申请实施例中,Registry返回容器镜像到cluster manager节点,cluster manager会将该容器镜像进行分块操作,分成若干的block文件。
在一些实施例中,所述方法还包括:聚合容器镜像文件后,加载成本地的容器镜像。
请求节点接收到各个对等节点的block文件后由dfget代理进行聚合成为完整的容器镜像文件。
在一些实施例中,所述一个对等节点就是一个P2P客户端。
具体的,本申请实施例中,一个对等节点就是一个P2P客户端。
本申请实施例中,基于p2p分发技术的优点在于:
其一,容器镜像分片block文件大都分布在各个对等节点,可减少容器镜像仓库节点的网络带宽75%压力。
其二,多线程下载block文件并聚合操作,相对于整个容器镜像速度提升90%。
图3为本发明实施例提供的企业级容器镜像加速架构。
结合图3,详细介绍本发明实施例。
第一步:docker daemon接收到pull指令,一般为用户书写Dockerfile构建容器镜像或者直接使用命令进行下载容器镜像时触发。在每一个工作节点部署dfget代理,对容器镜像文件层级和存储进行转换。
第二步:dfget代理将劫持拉取容器镜像请求传递到cluster manager组件。
第三步:cluster manager组件将请求包装成容器镜像仓库可解析的http形式。
第四步:Registry返回容器镜像到cluster manager节点,cluster manager会将该容器镜像进行分块操作,分成若干的block文件。
第五步:一个对等节点就是一个P2P客户端。dfget代理会判断本地是否存在对应的文件。如果不存在,则会将其从文件服务器下载到本地节点。文件服务器会针对若干block文件进行划分,校验多个对等节点是否存在对应的block文件,分别向请求节点传递block文件,请求节点接收到各个对等节点的block文件后由dfget代理进行聚合成为完整的容器镜像文件。
第六步:完整容器镜像文件聚合后,加载成本地的容器镜像,即分片文件系统格式。
图4为本发明实施例提供的一种企业级容器镜像加速装置。
第二方面,本发明实施例提供了一种企业级容器镜像加速装置40,结合图4,包括:
判断模快401:用于判断本地是否存在对应的文件;
具体的,本申请实施例中,判断本地是否存在对应的文件的主体是判断模块。
下载模块402:用于若本地不存在所述对应的文件,则从文件服务器下载所述文件到本地节点;
具体的,本申请实施例中,判断模块判断本地不存在对应的文件,则下载模块从文件服务器机箱下载文件到本地节点。
聚合模块403:用于所述文件服务器将至少一个block文件进行划分,确定至少一个对等节点是否存在对应的block文件,分别向请求节点传递block,所述请求节点接收到至少一个对等节点的block文件后聚合容器镜像文件。
具体的,本申请实施例中,文件服务器会针对若干block文件进行划分,校验多个对等节点是否存在对应的block文件,分别向请求节点传递block文件,请求节点接收到各个对等节点的block文件后由聚合模块403进行聚合成为完整的容器镜像文件。
在一些实施例中,上述判断模块还用于:
Docker daemon接收到用户触发的pull指令。
对容器镜像文件层级和存储进行转换。
将劫持拉取容器镜像请求发送至cluster manager组件;
所述cluster manager组件将所述劫持拉取容器镜像请求包装成容器镜像仓库可解析的http形式;
Registry返回容器镜像到所述cluster manager组件的节点,所述clustermanager组件将所述容器镜像进行分块操作,得到至少一个block文件。
在一些实施例中,上述加载模块还用于:聚合容器镜像文件后,加载成本地的容器镜像。
请求节点接收到各个对等节点的block文件后由聚合模块进行聚合成为完整的容器镜像文件。
在一些实施例中,所述一个对等节点就是一个P2P客户端。
具体的,本申请实施例中,一个对等节点就是一个P2P客户端。
第三方面,本发明实施例还提供了一种电子设备,包括:处理器和存储器;
所述处理器通过调用所述存储器存储的程序或指令,用于执行如上所述任一项所述企业级容器镜像加速方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行如上所述任一项所述企业级容器镜像加速方法。
图5是本公开实施例提供的一种电子设备的示意性框图。
如图5所示,电子设备包括:至少一个处理器501、至少一个存储器502和至少一个通信接口503。电子设备中的各个组件通过总线系统504耦合在一起。通信接口503,用于与外部设备之间的信息传输。可理解,总线系统504用于实现这些组件之间的连接通信。总线系统504除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但为了清楚说明起见,在图5中将各种总线都标为总线系统504。
可以理解,本实施例中的存储器502可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。
在一些实施方式中,存储器502存储了如下的元素,可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作系统和应用程序。
其中,操作系统,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序,包含各种应用程序,例如媒体播放器(Media Player)、浏览器(Browser)等,用于实现各种应用业务。实现本申请实施例提供的企业级容器镜像加速方法中任一方法的程序可以包含在应用程序中。
在本申请实施例中,处理器501通过调用存储器502存储的程序或指令,具体的,可以是应用程序中存储的程序或指令,处理器501用于执行本申请实施例提供的企业级容器镜像加速方法各实施例的步骤。
本申请实施例提供的企业级容器镜像加速方法中任一方法可以应用于处理器501中,或者由处理器501实现。处理器501可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器501中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器501可以是通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本申请实施例提供的企业级容器镜像加速方法中任一方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器502,处理器501读取存储器502中的信息,结合其硬件完成方法的步骤。
本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本申请的范围之内并且形成不同的实施例。
本领域的技术人员能够理解,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
虽然结合附图描述了本申请的实施方式,但是本领域技术人员可以在不脱离本申请的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
机译: 用于更新镜像的方法和装置,以及电子设备和存储介质
机译: 建立容器镜像的方法和系统,以及服务器,装置和存储介质
机译: 加速度传感器,电容检测电路和方法,加速处理电路和方法,存储介质和电子设备