一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种镜像仓库分布式缓存方法和装置与流程

2023-02-04 16:42:01 来源:中国专利 TAG:


1.本说明书涉及计算机软件技术领域,尤其涉及一种镜像仓库分布式缓存方法、装置、电子设备和存储介质。


背景技术:

2.镜像仓库提供两个关键功能即镜像的存储和分发。存储指将镜像推送到镜像仓库中;分发是指将镜像从镜像仓库分发到运行镜像的机器中。镜像分发所承担的流量远远大于镜像存储,在实际企业应用中会有更大的挑战。镜像仓库遇到的第一个挑战就是如何应对海量镜像分发的压力,第二个挑战就是如何用合适的成本来提高镜像分发的性能。由于在跨数据中心的场景中,镜像仓库一般都是跨数据中心进行全局部署,因此,如何构建高可用的镜像缓存机制来缓解镜像仓库的压力并提高镜像分发的性能,降低对中央镜像仓库的压力和网络通信成本,提高镜像拉取速度,是亟待解决的技术问题。


技术实现要素:

3.本说明书实施例的目的是针对上述问题,提供一种镜像仓库分布式缓存方法、装置、电子设备和存储介质。
4.为解决上述技术问题,本说明书实施例是这样实现的:
5.第一方面,提出一种镜像仓库分布式缓存方法,部署服务于多个数据中心的用于提供镜像集中存储和分发的镜像仓库,所述数据中心包括至少1个集群节点,所述镜像包括元数据和块文件;对应于每个数据中心部署并运行用于保存块文件的缓存服务,应用于第一数据中心,包括:
6.响应于拉取第一镜像的请求指令,获取所述镜像仓库中对应于所述请求指令的第一镜像元数据;
7.查询对应于所述第一镜像元数据的第一镜像块文件是否已保存于所述第一数据中心的所述缓存服务中;
8.当未保存时,保存所述第一镜像块文件至所述第一数据中心的所述缓存服务,以及发送所述第一镜像至所述第一数据中心的第一集群节点,所述第一镜像包括所述第一镜像元数据和所述第一镜像块文件;
9.当已保存时,发送所述第一镜像至所述第一数据中心的第一集群节点,所述第一镜像包括所述第一镜像元数据和保存于所述第一数据中心的所述缓存服务中的所述第一镜像块文件。
10.进一步地,对应于每个数据中心部署并运行用于保存块文件的缓存服务,包括设置缓存服务的大小以及缓存服务的有效期。
11.进一步地,当所述第一集群节点为kubernetes节点,在所述第一集群节点中运行用于向系统hosts文件注入所述缓存服务对应地址的容器pod。
12.进一步地,使用kubernetes deployment部署多个缓存服务实例至所述第一数据
中心,以及,使用kubernetes service运行所述缓存服务实例。
13.进一步地,采用共享方式分配所述第一镜像块文件至所述第一数据中心的多个所述缓存服务实例。
14.进一步地,依据所述缓存服务中所述镜像块文件的使用频次,采用lru算法淘汰保存于所述缓存服务中的使用频次低的所述镜像块文件。
15.第二方面,提出一种镜像仓库分布式缓存装置,包括:
16.第一模块,能够部署服务于多个数据中心的用于提供镜像集中存储和分发的镜像仓库,所述数据中心包括至少1个集群节点,所述镜像包括元数据和块文件;
17.第二模块,能够对应于每个数据中心部署并运行用于保存块文件的缓存服务,应用于第一数据中心,包括:
18.第三模块,能够响应于拉取第一镜像的请求指令,获取所述镜像仓库中对应于所述请求指令的第一镜像元数据;
19.第四模块,能够查询对应于所述第一镜像元数据的第一镜像块文件是否已保存于所述第一数据中心的所述缓存服务中;
20.第五模块,能够当未保存时,保存所述第一镜像块文件至所述第一数据中心的所述缓存服务,以及发送所述第一镜像至所述第一数据中心的第一集群节点,所述第一镜像包括所述第一镜像元数据和所述第一镜像块文件;
21.第六模块,能够当已保存时,发送所述第一镜像至所述第一数据中心的第一集群节点,所述第一镜像包括所述第一镜像元数据和保存于所述第一数据中心的所述缓存服务中的所述第一镜像块文件。
22.进一步地,对应于每个数据中心部署并运行用于保存块文件的缓存服务,包括设置缓存服务的大小以及缓存服务的有效期。
23.进一步地,当所述第一集群节点为kubernetes节点,在所述第一集群节点中运行用于向系统hosts文件注入所述缓存服务对应地址的容器pod。
24.进一步地,使用kubernetes deployment部署多个缓存服务实例至所述第一数据中心,以及,使用kubernetes service运行所述缓存服务实例。
25.进一步地,采用共享方式分配所述第一镜像块文件至所述第一数据中心的多个所述缓存服务实例。
26.进一步地,依据所述缓存服务中所述镜像块文件的使用频次,采用lru算法淘汰保存于所述缓存服务中的使用频次低的所述镜像块文件。
27.第三方面,提出一种电子设备,其特征在于,包括:
28.处理器;以及
29.被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行第一方面所述的镜像仓库分布式缓存方法。
30.第四方面,提出一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行第一方面所述的镜像仓库分布式缓存方法。
31.本说明书可以达到至少以下技术效果:
32.本发明方案通过在不同数据中心采用分布式方式增加一个块文件缓存服务来缓
存最近使用的镜像块文件,使得镜像拉取从原来的集中仓库拉取,转为从块文件缓存服务拉取,极大地降低了网络通信成本,提高镜像拉取速度,同时降低了对中央镜像仓库的压力。
附图说明
33.为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
34.图1为本说明书实施例提供的镜像仓库分布式缓存方案系统结构示意图。
35.图2为本说明书实施例提供的镜像仓库分布式缓存方法示意图之一。
36.图3为本说明书实施例提供的镜像仓库分布式缓存方法示意图之二。
37.图4为本说明书实施例提供的镜像仓库分布式缓存装置示意图。
38.图5为本说明书的一个实施例提供的电子设备的结构示意图。
具体实施方式
39.为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
40.关键术语
41.镜像仓库:作为docker技术的核心组件之一,其主要作用就是负责镜像内容的存储和分发。从使用范围来说分为“公有镜像仓库”和“私有镜像仓库”,公有镜像仓库是可以被任何人使用的,而私有镜像仓库则是指部署在公司或组织内部,用于自身应用docker镜像存储、分发的镜像仓库。在构建公司内部使用的自动化发布系统的过程中,从安全的角度出发,应用的打包镜像一般情况下只会被存储在私有镜像仓库中,ci/cd流程的衔接点也是通过向私有镜像仓库上传镜像和拉取镜像的操作来完成的。
42.缓存服务:指的是将需要频繁访问的网络内容存放在离用户最近、访问速度更快的系统中,以提高内容访问速度的一种技术或服务。分布式缓存能够高性能地读取数据、能够动态地扩展缓存节点、能够自动发现和切换故障节点、能够自动均衡数据分区,而且能够为使用者提供图形化的管理界面,部署和维护都十分方便。分布式缓存已经在分布式领域、云计算领域得到了广泛的应用。缓存命中率是判断提高访问速度效果好坏的重要因素之一。
43.下面通过具体的实例对本说明书所涉及的一种镜像仓库分布式缓存方案进行详述。
44.实施例一
45.本发明的关注点是如何构建高可用的镜像缓存机制来缓解镜像仓库的压力并提高镜像分发的性能,降低对中央镜像仓库的压力和网络通信成本,提高镜像拉取速度的问
题。镜像文件image包括元数据和块文件。docker容器镜像在设计上是将镜像元数据和块文件存储完全隔离开的。其中,镜像层元数据采用的是从上至下repository、image和layer三个层次;repository层中存储镜像的名字、标签和对应的id,image层包含了镜像架构、操作系统、创建时间、历史信息和rootfs等;layer层则与物理上的镜像层块文件对应。基于镜像文件image的这种设计,在实际开发过程中,开发人员经常使用相同的标签推送到镜像仓库中。每次推送新的镜像后,同一个标签再次拉取时,会因为缓存服务中已经有了完整的镜像而不到镜像仓库中拉取最新的镜像,最终拿到的镜像是缓存服务器中老版本的镜像。可以理解,如果缓存服务只缓存镜像块文件,而不缓存镜像元数据,可以更加准确地获取最新版本的镜像文件。
46.为此,本发明实施例的技术方案是根据镜像仓库是否是常用镜像引入块文件缓存,引入块文件存储的同时,需要考虑块文件缓存的有效期,以及缓存大小,并使用lru机制来淘汰一部分镜像缓存,从而保持缓存服务处于健康的状态,同时不会因为缓存命中率太低而引发缓存失效和缓存抖动的问题。
47.参照图1所示为本发明实施例的系统结构图。对于一个由多个数据中心组成的应用场景,镜像仓库一般都是跨数据中心进行全局部署,所以对于缓存服务需要首先优化其拓扑结构。需要说明的是,如果缓存服务与镜像仓库一样跨数据中心全局部署,那么每个数据中心对应集群在拉取镜像时,均会与缓存服务交互,在拉取不存在的块文件时会刷新缓存服务中的块文件。当使用全局镜像仓库加全局缓存服务的拓扑结构时,如果要拉取的块文件在缓存服务中,但不在同一个数据中心,则获取镜像的性能可能不如直接通过镜像仓库拉取块文件。同时,这种拓扑还有一个弊端,缓存服务会因为全局使用的镜像文件差别较大而进入频繁刷新缓存状态,且会导致缓存命中率降低。所以,将缓存服务以分布式方式部署于每个数据中心,可以缩小缓存的块文件查找范围,避免跨数据中心拉取镜像块文件,从而提高缓存命中率。
48.参照图2所示为本发明实施例的镜像仓库分布式缓存方法示意图。所述方法中包括:
49.s1:部署服务于多个数据中心的用于提供镜像集中存储和分发的镜像仓库,所述数据中心包括至少1个集群节点,所述镜像包括元数据和块文件。
50.可选地,对应于每个数据中心部署并运行用于保存块文件的缓存服务,包括设置缓存服务的大小以及缓存服务的有效期。
51.s2:对应于每个数据中心部署并运行用于保存块文件的缓存服务;以及,
52.对于任一所述数据中心,包括:
53.s3:响应于拉取第一镜像的请求指令,获取所述镜像仓库中对应于所述请求指令的第一镜像元数据。
54.s4:查询对应于所述第一镜像元数据的第一镜像块文件是否已保存于所述第一数据中心的所述缓存服务中。
55.s5:当未保存时,保存所述第一镜像块文件至所述第一数据中心的所述缓存服务,以及发送所述第一镜像至所述第一数据中心的第一集群节点,所述第一镜像包括所述第一镜像元数据和所述第一镜像块文件。
56.可选地,当所述第一集群节点为kubernetes节点,在所述第一集群节点中运行用
于向系统hosts文件注入所述缓存服务对应地址的容器pod。
57.具体地,如图3所示,镜像缓存服务是运行在每个集群内部的服务,它的服务地址是kubernetes集群的内部地址。而容器运行时拉取镜像时,访问的是镜像仓库而非缓存服务。要是容器运行时从集群内部的缓存服务拉取镜像,需要在集群内部对访问镜像仓库的流量进行拦截,并转到集群内部的缓存服务中。可以在kubernetes节点上运行一个用于注入缓存服务到hosts文件的pod。该pod启动后,会在hosts文件中注入缓存服务的集群地址,后续主机上镜像的拉取都是通过缓存服务拉取的。通过kubernetes的daemonset管理该pod,可以保证每个节点上运行一个实例。
58.可选地,使用kubernetes deployment部署多个缓存服务实例至所述第一数据中心,以及,使用kubernetes service运行所述缓存服务实例。具体地,缓存服务的所有块文件都是从镜像仓库中获取的,任何一个实例的丢失只会丢失一部分缓存块文件,不会影响镜像的拉取速度。
59.可选地,采用共享方式分配所述第一镜像块文件至所述第一数据中心的多个所述缓存服务实例。具体地,这种方式能使每个新缓存的块文件分享到所有缓存实例,从而提供稳定的缓存服务性能。
60.s6:当已保存时,发送所述第一镜像至所述第一数据中心的第一集群节点,所述第一镜像包括所述第一镜像元数据和保存于所述第一数据中心的所述缓存服务中的所述第一镜像块文件。
61.可选地,依据所述缓存服务中所述镜像块文件的使用频次,采用lru算法淘汰保存于所述缓存服务中的使用频次低的所述镜像块文件。具体地,由于缓存服务中的块文件有淘汰机制且缓存实例是无状态的,所以可以通过kubernetes deployment来部署缓存服务实例,通过kubernetes service提供服务。同时,多个缓存服务实例会有一个小问题,每个实例缓存的块文件根据服务过的镜像请求的不同而不同,所以在集群拉取一个镜像时,请求会随机到其中一个实例,但该实例还未缓存该镜像的块文件。这样会导致性能低于缓存过该镜像块文件的实例。
62.实施例二
63.图4为本说明书的一个实施例提供的镜像仓库分布式缓存装置400的结构示意图。请参考图4,在一种实施方式中镜像仓库分布式缓存装置400,包括:
64.第一模块401,能够部署服务于多个数据中心的用于提供镜像集中存储和分发的镜像仓库,所述数据中心包括至少1个集群节点,所述镜像包括元数据和块文件;
65.第二模块402,能够对应于每个数据中心部署并运行用于保存块文件的缓存服务,应用于第一数据中心,包括:
66.第三模块403,能够响应于拉取第一镜像的请求指令,获取所述镜像仓库中对应于所述请求指令的第一镜像元数据;
67.第四模块404,能够查询对应于所述第一镜像元数据的第一镜像块文件是否已保存于所述第一数据中心的所述缓存服务中;
68.第五模块405,能够当未保存时,保存所述第一镜像块文件至所述第一数据中心的所述缓存服务,以及发送所述第一镜像至所述第一数据中心的第一集群节点,所述第一镜像包括所述第一镜像元数据和所述第一镜像块文件;
69.第六模块406,能够当已保存时,发送所述第一镜像至所述第一数据中心的第一集群节点,所述第一镜像包括所述第一镜像元数据和保存于所述第一数据中心的所述缓存服务中的所述第一镜像块文件。
70.应理解,本说明书实施例的一种镜像仓库分布式缓存装置还可执行图1至图3中镜像仓库分布式缓存装置(或设备)执行的方法,并实现镜像仓库分布式缓存装置(或设备)在图1至图3所示实例的功能,在此不再赘述。
71.实施例三
72.图5是本说明书的一个实施例电子设备的结构示意图。请参考图5,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(random-access memory,ram),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
73.处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是isa(industry standard architecture,工业标准体系结构)总线、pci(peripheral component interconnect,外设部件互连标准)总线或eisa(extended industry standard architecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
74.存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
75.处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成共享资源访问控制装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
76.部署服务于多个数据中心的用于提供镜像集中存储和分发的镜像仓库,所述数据中心包括至少1个集群节点,所述镜像包括元数据和块文件;
77.对应于每个数据中心部署并运行用于保存块文件的缓存服务;
78.响应于第一数据中心拉取第一镜像的请求指令,获取所述镜像仓库中对应于所述请求指令的第一镜像元数据;
79.查询对应于所述第一镜像元数据的第一镜像块文件是否已保存于所述第一数据中心的所述缓存服务中;
80.当未保存时,保存所述第一镜像块文件至所述第一数据中心的所述缓存服务,以及发送所述第一镜像至所述第一数据中心的第一集群节点,所述第一镜像包括所述第一镜像元数据和所述第一镜像块文件;
81.当已保存时,发送所述第一镜像至所述第一数据中心的第一集群节点,所述第一镜像包括所述第一镜像元数据和保存于所述第一数据中心的所述缓存服务中的所述第一镜像块文件。
82.上述如本说明书图1至图3所示实施例揭示的一种镜像仓库分布式缓存方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件
形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
83.当然,除了软件实现方式之外,本说明书实施例的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
84.实施例四
85.本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1至图3所示实施例的方法,并具体用于执行以下方法:
86.部署服务于多个数据中心的用于提供镜像集中存储和分发的镜像仓库,所述数据中心包括至少1个集群节点,所述镜像包括元数据和块文件;
87.对应于每个数据中心部署并运行用于保存块文件的缓存服务;
88.响应于第一数据中心拉取第一镜像的请求指令,获取所述镜像仓库中对应于所述请求指令的第一镜像元数据;
89.查询对应于所述第一镜像元数据的第一镜像块文件是否已保存于所述第一数据中心的所述缓存服务中;
90.当未保存时,保存所述第一镜像块文件至所述第一数据中心的所述缓存服务,以及发送所述第一镜像至所述第一数据中心的第一集群节点,所述第一镜像包括所述第一镜像元数据和所述第一镜像块文件;
91.当已保存时,发送所述第一镜像至所述第一数据中心的第一集群节点,所述第一镜像包括所述第一镜像元数据和保存于所述第一数据中心的所述缓存服务中的所述第一镜像块文件。
92.总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书的保护范围之内。
93.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何
设备的组合。
94.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
95.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
96.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献