[go: up one dir, main page]

CN117255129A - 镜像部署方法、服务器和系统 - Google Patents

镜像部署方法、服务器和系统 Download PDF

Info

Publication number
CN117255129A
CN117255129A CN202210658113.5A CN202210658113A CN117255129A CN 117255129 A CN117255129 A CN 117255129A CN 202210658113 A CN202210658113 A CN 202210658113A CN 117255129 A CN117255129 A CN 117255129A
Authority
CN
China
Prior art keywords
node
layer
data
mirror
common layer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210658113.5A
Other languages
English (en)
Inventor
侯安州
林蓁蓁
陈思
聂雨虹
胡晨曦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dell Products LP
Original Assignee
Dell Products LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Dell Products LP filed Critical Dell Products LP
Priority to CN202210658113.5A priority Critical patent/CN117255129A/zh
Priority to US17/860,764 priority patent/US12118054B2/en
Publication of CN117255129A publication Critical patent/CN117255129A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Algebra (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本公开的实施例提供了一种镜像部署的方法、服务器和系统。该方法包括:仓库服务器接收来自于多个节点的拉取镜像的请求,其中,第一节点请求拉取的镜像为第一镜像;仓库服务器检测到多个节点所请求拉取的多个镜像的层均包括共同层;仓库服务器生成共同层的数据的传输路径,传输路径包括由仓库服务器将共同层的数据传输给第二节点,第二节点再将共同层的数据分发给其他节点;仓库服务器根据传输路径向第一节点发送设置信息;仓库服务器向第二节点发送共同层的数据;第一节点根据设置信息从第三节点获取共同层的数据。实施该方法,可以提高docker镜像下载、传输和部署的效率,减少网络传输开销,缩短镜像部署总时间。

Description

镜像部署方法、服务器和系统
技术领域
本公开的实施例涉及计算机技术领域,并且更具体地涉及镜像部署方法、服务器和系统。
背景技术
Docker是一种开源的应用容器引擎,用于自动化部署应用。它可以允许开发者打包应用以及依赖包到容器(container)中,并且允许在主机或虚拟机上运行若干个容器,每个容器即是一个独立的虚拟环境或应用。
在边缘应用场景中,边缘节点(edge node)(也可以称为边缘端节点)所运行的容器来源于镜像(image),而镜像可以由用户自制或由运行中的容器提交来生成,镜像生成后,可以推送(push)到云端的docker仓库服务(registry)中进行保存,边缘节点也可以从docker仓库拉取(pull)所需镜像到本地节点以运行容器。
发明内容
根据本公开的示例实施例,提供了一种镜像部署方案,用于解决docker镜像部署时网络传输开销较大、部署总时间较长的问题。
在本公开的第一方面中,提供了一种镜像部署方法,应用于docker系统,docker系统包括仓库服务器和多个节点,该方法可以包括:由仓库服务器接收来自于多个节点的拉取镜像的请求,其中,第一节点请求拉取的镜像为第一镜像。仓库服务器检测到多个节点所请求拉取的多个镜像的层均包括共同层。仓库服务器生成共同层的数据的传输路径,传输路径包括由仓库服务器将共同层的数据传输给第二节点,第二节点为仓库服务器在多个节点中所选择的用于将从仓库服务器获取到的共同层的数据分发给其他节点的起始节点。仓库服务器根据传输路径向第一节点发送设置信息,设置信息包括指示第一节点从第三节点获取共同层的数据。仓库服务器向第二节点发送共同层的数据。第一节点根据设置信息从第三节点获取到共同层的数据。
实施第一方面提供的方法,可以使得相同的镜像层只需从云端向边缘端传输一次,避免不同边缘节点向仓库服务器重复拉取相同的镜像层,进而减少了网络传输开销,提高了docker镜像下载、传输和部署的效率,缩短了镜像部署的总时间。
在一些实施例中,该方法还可以包括:响应于第一节点向仓库服务器拉取剩余层的请求,仓库服务器向第一节点发送剩余层的数据,剩余层是第一镜像中除去共同层之外的其他层。
在一些实施例中,该方法还可以包括:仓库服务器根据获取到的第一镜像所包括的层,生成第一镜像的层列表,层列表中包括共同层。仓库服务器向第一节点发送第一镜像的层列表。
在一些实施例中,层列表中还包括剩余层,该方法还可以包括:在完成获取共同层的数据之后,第一节点根据层列表中指示的剩余层向仓库服务器发送拉取剩余层的请求。
在一些实施例中,该方法还可以包括:根据第四节点发送的部署参数,第一节点向仓库服务器发送拉取第一镜像的请求,部署参数包括标识第一节点的待部署的镜像为第一镜像的参数,第四节点用于安排多个节点中的待部署的镜像。
在一些实施例中,传输路径为有向无环图。
在一些实施例中,该方法还可以包括:仓库服务器将共同层分成多个数据块,多个数据块中的每个数据块对应一个哈希值。其中,仓库服务器向第一节点发送的设置信息还包括多个数据块对应的哈希值。
在一些实施例中,第一节点可以根据多个数据块对应的哈希值向第三节点请求获取组成共同层的多个数据块。
在本公开的第二方面中,提供了一种镜像部署方法,应用于服务器,该方法可以包括:接收来自于多个节点的拉取镜像的请求,其中,第一节点请求拉取的镜像为第一镜像。检测到多个节点所请求拉取的多个镜像的层均包括共同层。生成共同层的数据的传输路径,该传输路径包括将共同层的数据传输给第二节点,第二节点为在多个节点中被选择用于将共同层的数据分发给其他节点的起始节点。根据传输路径向第一节点发送设置信息,设置信息包括指示第一节点从第三节点获取共同层的数据。向第二节点发送共同层的数据,其中,第一节点根据设置信息从第三节点获取到共同层的数据。
实施第二方面提供的方法,可以使得相同的镜像层只需从云端向边缘端传输一次,避免不同边缘节点向仓库服务器重复拉取相同的镜像层,进而减少了网络传输开销,提高了docker镜像下载、传输和部署的效率,缩短了镜像部署的总时间。
在一些实施例中,该方法还可以包括:响应于第一节点拉取剩余层的请求,向第一节点发送剩余层的数据,剩余层是第一镜像中除去共同层之外的其他层。
在一些实施例中,该方法还可以包括:根据获取到的第一镜像所包括的层,生成第一镜像的层列表,层列表中包括共同层。向第一节点发送第一镜像的层列表。
在一些实施例中,层列表中还包括剩余层,该方法还可以包括:在完成获取共同层的数据之后,接收到第一节点根据层列表中指示的剩余层而生成的拉取剩余层的请求。
在一些实施例中,所接收到的第一节点拉取第一镜像的请求是根据第四节点发送的部署参数而生成的,部署参数包括标识第一节点的待部署的镜像为第一镜像的参数,第四节点用于安排多个节点的待部署的镜像。
在一些实施例中,该传输路径为有向无环图。
在一些实施例中,该方法还可以包括:将共同层分成多个数据块,多个数据块中的每个数据块对应一个哈希值。向第一节点发送的设置信息还包括多个数据块对应的哈希值。
在一些实施例中,该方法还可以包括:第一节点根据多个数据块对应的哈希值从第三节点获取到组成共同层的多个数据块。
在本公开的第三方面中,提供了一种用于镜像部署的服务器。该服务器包括:处理器,以及与处理器耦合的存储器,存储器具有存储于其中的指令,指令在被处理器执行时使服务器执行动作,该动作包括:接收来自于多个节点的拉取镜像的请求,其中,第一节点请求拉取的镜像为第一镜像。检测到多个节点所请求拉取的多个镜像的层均包括共同层。生成共同层的数据的传输路径,传输路径包括将共同层的数据传输给第二节点,第二节点为在多个节点中被选择用于将共同层的数据分发给其他节点的起始节点。根据传输路径向第一节点发送设置信息,设置信息包括指示第一节点从第三节点获取共同层的数据。向第二节点发送共同层的数据,其中,第一节点根据设置信息从第三节点获取到共同层的数据。
实施第三方面提供的服务器,可以使得相同的镜像层只需从云端向边缘端传输一次,避免不同边缘节点向仓库服务器重复拉取相同的镜像层,进而减少了网络传输开销,提高了docker镜像下载、传输和部署的效率,缩短了镜像部署的总时间。
在一些实施例中,该动作还包括:响应于第一节点拉取剩余层的请求,向第一节点发送剩余层的数据,剩余层是第一镜像中除去共同层之外的其他层。
在一些实施例中,该动作还包括:根据获取到的第一镜像所包括的层,生成第一镜像的层列表,层列表中包括共同层。向第一节点发送第一镜像的层列表。
在一些实施例中,层列表中还包括剩余层,该动作还包括:在完成获取共同层的数据之后,接收到第一节点根据层列表中指示的剩余层而生成的拉取剩余层的请求。
在一些实施例中,所接收到的第一节点拉取第一镜像的请求是根据第四节点发送的部署参数而生成的,部署参数包括标识第一节点的待部署的镜像为第一镜像的参数,第四节点用于安排多个节点的待部署的镜像。
在一些实施例中,传输路径为有向无环图。
在一些实施例中,该动作还包括:将共同层分成多个数据块,多个数据块中的每个数据块对应一个哈希值。其中,向第一节点发送的设置信息还包括多个数据块对应的哈希值。
在一些实施例中,该动作还包括:第一节点根据多个数据块对应的哈希值从第三节点获取到组成共同层的多个数据块。
在本公开的第四方面中,提供了一种docker系统,包括仓库服务器和多个节点,其中仓库服务器可以实现为本公开的第三方面中的服务器。
在本公开的第五方面中,提供了一种计算机程序产品,计算机程序产品被有形地存储在计算机可读介质上并且包括机器可执行指令,该机器可执行指令在被执行时使机器执行根据本公开的第二方面的方法。
在本公开的第六方面中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序在由设备执行时使得设备执行根据本公开的第二方面的方法。
通过以上描述可以看到,根据本公开的各实施例的方案,可以使得相同的镜像层只需从云端向边缘端传输一次,避免不同边缘节点向仓库服务器重复拉取相同的镜像层,进而减少了网络传输开销,提高了docker镜像下载、传输和部署的效率,缩短了镜像部署的总时间。
应当理解的是,提供发明内容部分是为了简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或主要特征,也无意限制本公开的范围。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其它特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1示出了本公开的多个实施例能够在其中实现的边缘场景100的示意图;
图2示出了根据本公开的一些实施例的镜像部署方法200的流程图;
图3A示出了根据本公开的一些实施例的应用镜像部署技术方案的示例过程;
图3B示出了根据本公开的一些实施例的应用镜像部署技术方案的示例过程;
图3C示出了根据本公开的一些实施例的应用镜像部署技术方案的示例过程;
图3D示出了根据本公开的一些实施例的应用镜像部署技术方案的示例过程;
图3E示出了根据本公开的一些实施例的应用镜像部署技术方案的示例过程;
图4示出了根据本公开的一些实施例的用于镜像部署的功能模块的示意图;以及
图5示出了可以用来实现本公开的实施例的设备的示意性结构图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其它明确的和隐含的定义。
容器技术是实现操作系统虚拟化的一种途径,可以使资源在隔离的进程中运行应用程序及其依赖关系。容器技术和宿主机共享硬件资源及操作系统,可以实现资源的动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。容器可以将操作系统层虚拟化,相对于虚拟机的硬件虚拟化,容器具有更便携、更灵活、部署快、体积小、占用资源少等优势。
通过使用容器,可以轻松打包应用程序的代码、配置和依赖关系,将其变成容易使用的构建块,从而实现环境一致性、运营效率、开发人员生产力和版本控制等诸多目标。容器可以帮助保证应用程序快速、可靠、一致地部署,其间不受部署环境的影响。容器赋予开发者对资源更多的精细化控制能力,使基础设施(infrastructure)效率更高。
Docker是一种开源的应用容器引擎,使用客户端—服务器(CS)架构,用于开发应用、交付(shipping)应用、运行应用,可以为容器提供更强的隔离兼容。Docker允许开发者将基础设施中的应用单独分割出来,打包应用以及依赖包(包括系统环境和配置),形成容器,并且部署到主机或虚拟机上并运行若干个容器,实现应用的快速交付,每个容器即是一个独立的虚拟环境或应用,不同容器之间保持彼此相互独立或隔离,互不影响。
镜像(image)是指示创建容器的只读模板,容器是镜像的可运行实例。镜像是一种特殊的文件系统,不仅提供了提供容器运行时所需的程序、库、资源、配置等文件,还包含为运行时准备的一些配置参数,如匿名卷、环境变量、用户等。
Docker镜像可以以分层存储的形式保存于文件系统中,不同的镜像可能具有相同的某些层(layer)。镜像是基于联合文件系统(unionFS)来实现的,联合文件系统是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下,即基于增量式修改文件、读写分层、部分共享来实现。
Docker仓库服务(registry)是用于集中存储镜像、分发镜像的服务,又可称为docker仓库服务器或者docker仓库注册服务器。一个Docker仓库服务中可以包含多个仓库(repository),仓库是用于集中存放镜像的场所,每个仓库可以包含多个具备不同标签(tag)的镜像。如果想运行某个容器,可以从docker仓库服务中下载对应的镜像到本地节点,然后通过该镜像创建容器。相应的,如果本地节点对容器进行读写,生成新的镜像的层,还需要将新的镜像推送到仓库服务。
随着对容器的读写,相应的docker镜像的大小也变得越来越大,甚至可能达到几十GB。在边缘场景中,从云端的docker仓库服务下载并部署镜像到边缘端节点时,或者在混合云场景中,从公有云到私有云或者从私有云到公有云部署镜像时,会通过广域网(WAN)以及局域网(LAN),由于广域网传输速度通常小于局域网,所以镜像的下载速度会受到WAN网络带宽的限制。如果边缘端节点同时需要部署多个镜像,分别独立地向docker仓库拉取镜像会使得网络带宽开销较大以及镜像部署的时间较长。因此,提高docker镜像下载和部署的效率、缩短部署时间是个亟需解决的问题。在网络速度是非可控变量的情况下,可以优化镜像部署方法从而提高镜像部署效率,缩短镜像部署时间。
由于镜像可以以分层存储的形式存储,不同的镜像可以具备某些相同的层或相似的层,尤其是操作系统基层。在一些实施例中,同一边缘端的不同节点分别从仓库服务中拉取所需不同镜像时,镜像的相同的层也会被重复拉取,这导致了网络传输带宽的浪费,影响镜像下载速率。例如在一些示例中,操作系统基层具有比应用层更大的镜像层大小,那么该操作系统基层需要消耗更多时间来传输,重复传输会消耗较多时间和网络开销。在一些实施例中,一个节点可以在获取同一边缘端的其他节点已下载镜像的相同的层,以节省网络开销,但是如果不同节点拉取镜像的动作是独立的,在查询了其他节点不存在已下载的镜像的相同的层时,存在具有相同的层的不同节点同时分别向仓库服务拉取镜像的情况,这仍然会导致镜像的相同的层会被重复拉取,各节点没有协调,数据传输混乱等问题,浪费了网络资源和镜像部署总时间,因此还存在提升镜像部署效率的空间。
本公开提供了一种镜像部署技术方案,用于解决以上描述的网络传输开销较大、镜像部署总时间较长的问题。该镜像部署技术方案可以使得在边缘场景或者混合云场景等应用场景中快速部署docker镜像,包括在docker仓库服务器中增加镜像协调器(imagecoordinator)和工作者协调器(worker coordinator),用于协调镜像的分发,以及设置包括流水线阶段(pipeline stage)和非流水线阶段(non-stage pipeline)的两阶段docker镜像部署过程,在边缘节点处可以增加流水线代理(pipeline agent,PA)和领导者节点(leader node),用于协助流水线阶段的镜像数据传输。其中,docker仓库服务器可以分析出多个节点所需镜像的共同层,并针对共同层的数据传输建立流水线。在流水线阶段,docker仓库服务器将共同层的数据发送给领导者节点,再由领导者节点根据流水线设置将共同层的数据分发给其他节点;在非流水线阶段,各个节点再独立地向docker仓库服务器拉取所需镜像的剩余层。
实施本公开提供的技术方案,可以使得相同的镜像层只需从云端向边缘端传输一次,避免不同边缘节点向仓库服务器重复拉取相同的镜像层,进而减少了网络传输开销,提高了docker镜像下载、传输和部署的效率,缩短了镜像部署的总时间。
本公开的各实施例可以应用于边缘场景中,图1示出了一种边缘场景100的示意图。
如图1所示,边缘场景100可以包括云计算层101、边缘计算层102、终端层103等。其中,云计算101可以包括一个或多个云服务器集群;边缘计算层102可以包括一个或多个边缘节点集群,每个边缘节点集群可以包括一个或多个边缘节点;终端层103可以包括多个终端设备,如智能手机、平板电脑、笔记本电脑、台式电脑、智能手环、智能手表等。本申请实施例对云计算层101、边缘计算层102、终端层103的实现设备类型等不作任何限定。
边缘计算层102与云计算层101之间的通信网络可以是广域网或城域网。边缘节点集群中的各个边缘节点之间的通信网络可以是局域网(LAN)。边缘节点集群与对应的多个终端之间的通信连接可以是无线连接,如蓝牙连接、无线局域网(WLAN)连接等,也可以是有线连接,如宽带连接、通用串行总线(USB)连接等。本申请实施例对云计算层101、边缘计算层102、终端层103中各设备之间的通信连接方式等不作任何限定。
边缘场景所涉及的边缘计算是物联网中云计算能力在边缘节点中的拓展。可以在边缘节点部署部分资源,这能够加快数据处理与数据传输速度,能够快速响应本地终端的消息,并且部署在边缘节点的资源可以在网络异常的环境下正常运行。
结合边缘场景,在一些实施例中,docker仓库服务器位于云计算层101,docker仓库服务器中保存有一个或多个镜像。边缘节点所运行的容器来源于镜像,边缘节点可以根据需求从docker仓库服务器拉取所需镜像到本地边缘节点以运行容器,或者边缘节点可以从同一个边缘节点集群的其他边缘节点处获取其已下载的镜像。
根据本公开提供的技术方案,docker仓库服务器中可以增加镜像协调器和工作者协调器,用于协调镜像的分发,边缘节点处可以增加流水线代理和领导者节点,用于协助流水线阶段的镜像数据传输。这将在下文中进一步详细描述。
可以理解的是,上述边缘场景100仅为本公开提供的一个应用场景的示例,本公开提供的技术方案还可以应用于混合云场景等,例如在公有云上的docker仓库服务器中包含多个镜像,私有云上的节点可以从公有云上的docker仓库服务器拉取所需镜像,镜像会经由网络从公有云部署到私有云上。本公开提供的技术方案可以应用在包括远端—近端、跨网络传输的多种场景中,本公开的范围在此方面不受限制。
图2示出了根据本公开的一些实施例的镜像部署方法200的流程图,该方法200可以应用于docker系统,docker系统中可以包括仓库服务器和多个节点。结合图3A-图3E所示的示例,本实施例中的仓库服务器可以实现为docker仓库服务302,节点可以实现为边缘端310的边缘节点如节点311、节点312、节点313、节点314等。
应当理解的是,方法200还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。应当理解的是,在本公开的实施例中,任意边缘节点或仓库服务器可以由一个实体设备实现,例如服务器、计算机、移动终端等,也可以由多个实体设备共同实现。可以理解的是,任意边缘节点或仓库服务器可以是实体设备内的一个逻辑功能模块,也可以是由多个实体设备组成的一个逻辑功能模块。应当理解的是,在下述的本申请实施例中,可以由一个实体设备执行本申请实施例提供的方法中的各个步骤,也可以由多个实体设备协作执行本申请实施例提供的方法中的各个步骤,本申请实施例对此不作任何限制。
在框201,仓库服务器接收来自于多个节点的拉取镜像的请求。
其中,第一节点请求拉取的镜像为第一镜像。第一节点可以是边缘端的任意一个节点,在本实施例中第一节点并不特指某一个节点。
在一些实施例中,根据第四节点发送的部署参数,第一节点向仓库服务器发送拉取第一镜像的请求。在本公开的实施例中,第四节点又被称为主节点。即,仓库服务器接收到的第一节点拉取第一镜像的请求是根据主节点发送的部署参数而生成的。其中,部署参数包括标识第一节点的待部署的镜像为第一镜像的参数,主节点用于安排多个节点的待部署的镜像。
结合参考图3A所示的示例,边缘端310的主节点315向各个边缘节点发送指示待部署镜像的参数。该部署脚本包括唯一批处理标识符、所需部署镜像的编号等参数。结合参考图3B所示的示例,各个边缘节点分别根据该参数向云端101的docker仓库服务302的镜像协调器303发送镜像拉取请求。
在框202,仓库服务器检测到多个节点所请求拉取的多个镜像的层均包括共同层。
共同层即这些节点所需镜像中相同的层。
在一些实施例中,仓库服务器根据获取到的第一镜像所包括的层,生成第一镜像的层列表,层列表中包括共同层和剩余层。
在一些实施例中,仓库服务器向第一节点发送第一镜像的层列表。
在一些实施例中,仓库服务器将共同层分成多个数据块,多个数据块中的每个数据块对应一个哈希值。
结合参考图3C所示的示例,docker仓库服务302的镜像协调器303可以向每个边缘节点发送对应所生成的镜像的层列表和共同层的数据块的列表(如哈希值)。
在框203,仓库服务器生成共同层的数据的传输路径。
在本公开的实施例中,传输路径也可以被称为流水线。
在一些实施例中,传输路径包括由仓库服务器将共同层的数据传输给第二节点,第二节点为仓库服务器在边缘端的多个节点中被选择用于将从仓库服务器获取到的共同层的数据分发给其他节点的起始节点。在本公开的实施例中,第二节点又可称为领导者节点。第二节点可以是第一节点,第二节点可以不是第一节点,本实施例不作限制。结合参考图3D所示的示例,在流水线阶段,docker仓库服务302的工作者协调器304随机地或者根据预先设定的策略选择节点314作为领导者节点。
在一些实施例中,传输路径为有向无环图。结合参考图3D所示的示例,所设置的传输镜像的共同层X1的流水线为:docker仓库服务302→节点314→节点313→节点312/节点311。
本实施例对如何选择领导者节点,对设置流水线的策略、方法和要求以及流水线的表现形式不作任何限制。
在框204,仓库服务器根据传输路径向第一节点发送设置信息。
在一些实施例中,设置信息包括指示第一节点从第三节点获取共同层的数据,在本公开的实施例中,第三节点又可被称为第一节点的上游节点。某个节点的上游节点是指在共同层的数据传输流水线中该节点直接获取共同层数据的前一个节点。一个节点可以从其上游节点获取到共同层的数据块,还可以将共同层的数据块发送给其下游节点。这里所表达的一个节点的上游节点、下游节点是为了方便描述在流水线中与该节点直接相关联的数据传输节点,而非旨在限制本公开。一个节点可以具有一个或多个上游节点,也可以具有一个或多个下游节点,本公开的实施例不作限制。
在一些实施例中,仓库服务器向第一节点发送的设置信息还包括多个数据块对应的哈希值。
结合参考图3D所示的示例,docker仓库服务302的工作者协调器304向每个边缘节点发送流水线的相关设置信息,该设置信息可以包括每个边缘节点对应的上游节点和/或下游节点、镜像的层列表和相同的层的数据块的哈希值等。
在框205,仓库服务器向第二节点发送共同层的数据。
结合参考图3D所示的示例,在流水线阶段,docker的仓库服务302的工作者协调器304向节点314发送共同层X1的数据。
在框206,第一节点根据设置信息从第三节点获取到共同层的数据。
即,根据设置信息共同层的数据经由第一节点的上游节点被传输到第一节点。
在一些实施例中,第一节点根据多个数据块对应的哈希值向第三节点请求获取组成共同层的多个数据块。然后,响应于拉取数据块的请求,第三节点向第一节点发送组成共同层的多个数据块。第一节点从第三节点处获取到组成共同层的多个数据块。即,响应于第一节点根据多个数据块对应的哈希值所生成的向第一节点的上游节点获取多个数据块的请求,组成共同层的多个数据块经由第一节点的上游节点被传输到第一节点。结合参考图3D所示的示例,每个节点接收到对应的设置信息之后,流水线代理根据流水线的设置信息并行地传输相同的镜像层的数据块,直至传输完成。
在框207,响应于第一节点向仓库服务器拉取剩余层的请求,仓库服务器向第一节点发送剩余层的数据。
其中,剩余层是第一镜像中除去共同层之外的其他层。
在流水线阶段结束传输共同层之后,非流水线阶段开始,用于传输不同镜像的剩余层。
在一些实施例中,在完成获取共同层的数据之后,第一节点根据层列表中指示的剩余层向仓库服务器发送拉取剩余层的请求。即,在完成获取共同层的数据之后,仓库服务器接收到第一节点根据层列表中指示的剩余层而生成的拉取剩余层的请求。
结合参考图3E所示的示例,各个边缘节点独立且并行地向docker仓库服务302请求拉取docker镜像的剩余层。响应于接收到拉取docker镜像的剩余层的请求,工作者协调器304向对应边缘节点传输剩余层的数据。其中,工作者协调器304可以根据预先设定的策略控制对各节点的传输速率,例如,工作者协调器304可以控制对各节点的传输速率,设置对某一个边缘节点的传输速率相对于其他边缘节点更快,以使得该边缘节点优先部署镜像。本申请实施例对剩余层的传输方法、策略等不作任何限制。
以上所有步骤结束后,所有节点完成部署相应的docker镜像。即,第一节点完整获得第一镜像。
本申请实施例提供的镜像部署方法旨在改变了各个边缘节点的拉取镜像的请求对象,优化了镜像层的传输路径。原本每个边缘节点都向仓库服务器发起拉取所需镜像的请求,在仓库服务器分析得到多个边缘节点所需的镜像具备共同层的时候,仓库服务器就可以针对该共同层的数据传输建立流水线,并分别告知这多个边缘节点可以向该流水线中的自身节点的上游节点发起拉取共同层的请求,使得共同层的传输效率更高。对于除去共同层的所需镜像的剩余层,这多个边缘节点可以继续向仓库服务器发起拉取剩余层的请求。
由于边缘节点之间分发数据的局域网传输速度通常是快于云端与边缘端之间的广域网传输速度,以及在传输镜像之前各个边缘节点被通知了相应的层列表和镜像的共同层,所以实施本实施例提供的方法可以使得镜像的共同层只需从云端的仓库服务器向边缘端传输一次,还避免了相同的镜像层被重复拉取,进而节省了网络传输开销,提高了镜像部署效率,缩短了镜像部署的总时间。
图3A-图3E示出了本公开的应用镜像部署技术方案的一个示例过程的示意图。以下将详细描述图3A-图3E示出的示例过程。
在图3A-图3E的示例中,云端301包括docker仓库服务302,Docker仓库服务302中设置有镜像协调器303和工作者协调器304等。边缘端310的边缘节点包括节点311、节点312、节点313、节点314等。其中,docker仓库服务302中保存有多个镜像,边缘端310的节点可以向云端301的docker仓库服务302请求拉取所需镜像。在本示例中,节点311需要部署镜像A,镜像A包括层X1、层X2、层X3;节点312需要部署镜像B,镜像B包括层X1、层X4、层X5;节点313需要部署镜像C,镜像C包括层X1、层X6;节点314需要部署镜像D,镜像D包括层X1、层X7。可以看出,节点311、节点312、节点313、节点314所需的不同镜像具有共同层X1,其中层X1包括数据块X1D1、数据块X1D2、数据块X1D3等。
其中,docker仓库服务302中的镜像协调器303可以用于接收来自边缘端310的各个边缘节点(或者称为工作者节点)的拉取镜像的请求,镜像协调器303还可以用于分析所有镜像的层以生成层列表,镜像协调器303还可以用于为在流水线阶段中传输的相同的镜像层生成数据块,镜像协调器303还可以用于向边缘端310的各个边缘节点发送相关的层列表和相同的层的数据块列表。
工作者协调器304可以用于协调边缘端310的各个边缘节点的docker镜像传输代理,还用于建立用于流水线阶段的相同的镜像层的传输流水线,以及协调非流水线阶段的剩余镜像数据的传输等。其中,docker镜像传输代理用于协助边缘节点的镜像传输。
边缘端节点部署镜像的过程可以分为镜像请求阶段、流水线阶段、非流水阶段等。
镜像请求阶段的步骤可以包括:边缘端310的主节点(masternode)315向各个边缘节点发送指示待部署镜像的参数,各个边缘节点分别根据该参数向云端101的docker仓库服务302发送镜像拉取请求,docker仓库服务302中的镜像协调器303接收来自各个边缘节点的镜像拉取请求,然后镜像协调器303根据这多个镜像拉取请求所携带的参数分析每个边缘节点所请求的docker镜像,为每个边缘节点生成对应的镜像的层列表。如果获取到不同边缘节点所需的不同docker镜像具有相同的层,则可以将该相同的层生成用于流水线阶段的数据传输的数据块。之后镜像协调器303可以向每个边缘节点发送对应所生成的镜像的层列表和相同的层的数据块的哈希值。
在一些实施例中,主节点315向所有边缘节点发送部署脚本,该部署脚本包括唯一批处理标识符(unique batch identifier)、所需部署镜像的编号等参数。其中,唯一批处理标识符用于标识不同的镜像拉取请求批次以避免混淆,所需部署镜像的编号用于标识需要部署的是哪个或哪些镜像。在一个示例中,唯一批处理标识符可以用BATCH_UUID表示,所需部署镜像的编号可以用NUM_OF_DEPLOYMENT表示。其中,主节点315可以是边缘端310的一个单独的节点,用于统筹、管理、分配边缘节点的镜像的部署或存储。
参考图3A的示例,主节点315可以向节点311、节点312、节点313、节点314发送部署脚本,该部署脚本包括唯一批处理标识符、所需部署镜像的编号等参数。例如,在本批次中,主节点315向节点311发送的部署脚本中指示节点311需要部署镜像A,主节点315向节点312发送的部署脚本中指示节点312需要部署镜像B,主节点315向节点313发送的部署脚本中指示节点313需要部署镜像C,主节点315向节点314发送的部署脚本中指示节点314需要部署镜像D。
各个边缘节点可以分别根据接收到的主节点315的部署脚本的参数,如唯一批处理标识符和所需部署镜像的编号等,向docker仓库服务302发起相应的镜像拉取请求。其中,镜像拉取请求中携带有唯一批处理标识符、所需部署镜像的编号等参数。
参考图3B的示例,边缘端310的节点311向docker仓库服务302的镜像协调器303发起镜像拉取请求A,该镜像拉取请求A指示节点311请求获取镜像A;节点312向docker仓库服务302的镜像协调器303发起镜像拉取请求B,该镜像拉取请求B指示节点312请求获取镜像B;节点313向docker仓库服务302的镜像协调器303发起镜像拉取请求C,该镜像拉取请求C指示节点313请求获取镜像C;节点314向docker仓库服务302的镜像协调器303发起镜像拉取请求D,该镜像拉取请求D指示节点314请求获取镜像D。
Docker仓库服务302中的镜像协调器303接收到来自各个边缘节点的镜像拉取请求,然后docker仓库服务302可以根据这多个镜像拉取请求分析每个边缘节点所请求的docker镜像的层,并针对每个边缘节点的镜像拉取请求生成层列表。如果获取到不同的docker镜像具有相同的层,即方法200中所述的共同层,则可以将该相同的层分成多个数据块,并生成这多个数据块对应的哈希值以用于流水线阶段的数据传输。然后镜像协调器303将所生成的层列表和相同的层的数据块哈希值发送给各个边缘节点。
将镜像的相同的层分成多个数据块用于传输,并将这多个数据块对应的哈希值发送给各个边缘节点,是为了在数据传输过程中,相对于直接将镜像层封装为数据包传输来说,减少在流水线阶段中的数据传输的丢包率、错误率,在各个边缘节点之间传送相同的层时使得传输成功率得到提高。在另一些实施例中,也可以不生成数据块而以其他方式传输镜像的数据,本公开的范围在此方面不受限制。
例如,参考图3C的示例,镜像协调器303可以根据接收到的镜像拉取请求A、镜像拉取请求B、镜像拉取请求C、镜像拉取请求D,获取到该批次的节点311需要镜像A、节点312需要镜像B、节点313需要镜像C、节点314需要镜像D,然后分析镜像A、镜像B、镜像C、镜像D的层,得到镜像A包括层X1、层X2、层X3,镜像B包括层X1、层X4、层X5,镜像C包括层X1、层X6,镜像D包括层X1、层X7。镜像协调器303分析得出镜像A、镜像B、镜像C、镜像D具有共同的层X1,可以将该层X1分成数据块X1D1、数据块X1D2、数据块X1D3等多个数据块用于传输,并生成这些数据块的哈希值。然后镜像协调器303向节点311发送所生成的层列表(包括层X1、层X2、层X3)和层X1的数据块的哈希值,向节点312发送所生成的层列表(包括层X1、层X4、层X5)和层X1的数据块的哈希值,向节点313发送所生成的层列表(包括层X1、层X6)和层X1的数据块的哈希值,向节点314发送所生成的层列表(包括层X1、层X7)和层X1的数据块的哈希值。
在镜像请求阶段之后,云端301的docker仓库服务302向边缘端310的各个边缘节点传输其所需部署的镜像的数据,包括流水线阶段和非流水线阶段。流水线阶段用于传输相同的镜像层,非流水线阶段用于传输不同镜像的剩余层。
流水线阶段的步骤可以包括:工作者协调器304随机地或者根据预先设定的策略选择一个边缘节点作为领导者节点。工作者协调器304针对相同的镜像层建立数据传输的流水线。工作者协调器304向每个边缘节点发送流水线的相关设置信息,该设置信息可以包括每个边缘节点对应的上游节点和/或下游节点、镜像的层列表和相同的层的数据块的哈希值。每个节点接收到对应的设置信息之后,流水线代理根据流水线的设置信息并行地传输相同的镜像层的数据块,直至传输完成。
其中,领导者节点是docker镜像部署的流水线阶段中的边缘节点的主导角色,也即边缘端310中从docker仓库服务302处接收共同层数据的起始节点,用于直接从docker仓库服务302拉取镜像的相同的层,并且再将该相同的层的数据分发给同一边缘端310的其他节点。这样,相同的镜像层只需从云端301向边缘端310传输一次,然后边缘端310的各边缘节点之间再进行分发。
流水线代理是边缘节点中的临时代理,用于在docker镜像部署的流水线阶段协助流水线的镜像数据传输,其生命周期只存在于流水线阶段。
在一些实施例中,可以根据预先设定的策略、衡量指标或特定要求等来优化设置流水线,以最小化优化总传输时间或者服务提供时间,设置流水线的方法以及流水线的形式可以是多种多样的,不同的设置策略可能生成不同的流水线。本实施例对如何选择领导者节点,对设置流水线的策略、方法和要求以及流水线的表现形式不作任何限制。
在一些实施例中,流水线可以编排为按一定顺序流向,由有向非循环图表示。在一个示例中,参考图3D,在流水线阶段,选择节点314作为领导者节点,所设置的传输相同的镜像层X1的流水线为:docker仓库服务302→节点314→节点313→节点312/节点311。工作者协调器304向节点314发送流水线的相关设置信息,可以包括节点314的上游节点是docker仓库服务302、节点314的下游节点是节点313、节点314对应的镜像的层列表(包括层X1、层X6)和层X1的数据块的哈希值。工作者协调器304向节点313发送流水线的相关设置信息,可以包括节点313的上游节点是节点314、节点313的下游节点是节点312和节点311、节点313对应的镜像的层列表(包括层X1、层X5)和层X1的数据块的哈希值。工作者协调器304向节点312发送流水线的相关设置信息,可以包括节点312的上游节点是节点313、节点312对应的镜像的层列表(包括层X1、层X4、层X5)和层X1的数据块的哈希值。工作者协调器304向节点311发送流水线的相关设置信息,可以包括节点311的上游节点是节点313、节点311对应的镜像的层列表(包括层X1、层X2、层X3)和层X1的数据块的哈希值。每个边缘节点可以根据层X1的数据块的哈希值向上游节点拉取层X1的数据块。节点311、节点312、节点313、节点314接收到对应的设置信息之后,流水线代理根据流水线的设置信息并行地传输镜像层X1的数据块,直至传输完成。即,docker仓库服务可以将层X1的数据块传送给节点314;节点313根据层X1的数据块的哈希值向上游节点即节点314拉取层X1的数据块,然后节点314可以将已获得的层X1的数据块传送给节点313;节点312根据层X1的数据块的哈希值向上游节点即节点313拉取层X1的数据块,然后节点313可以将已获得的层X1的数据块传送给节点312;节点311根据层X1的数据块的哈希值向上游节点即节点313拉取层X1的数据块,然后节点313可以将已获得的层X1的数据块传送给节点311。
在流水线阶段结束传输相同的镜像层之后,非流水线阶段开始,用于传输不同镜像的剩余层。非流水阶段的步骤可以包括:各个边缘节点独立且并行地向docker仓库服务302请求拉取docker镜像的剩余层。响应于接收到拉取docker镜像的剩余层的请求,工作者协调器304向对应边缘节点传输剩余层的数据。其中,工作者协调器304可以根据预先设定的策略控制对各节点的传输速率,例如,工作者协调器304可以控制对各节点的传输速率,设置对某一个边缘节点的传输速率相对于其他边缘节点更快,以使得该边缘节点优先部署镜像。本申请实施例对剩余层的传输方法、策略等不作任何限制。
参考图3E的示例,在非流水线阶段,各自独立且并行地,节点311向docker仓库服务302请求拉取除了层X1的镜像A的剩余的层X2、层X3的数据,节点312向docker仓库服务302请求拉取除了层X1的镜像B的剩余的层X4、层X5的数据,节点313向docker仓库服务302请求拉取除了层X1的镜像C的剩余的层X6的数据,节点314向docker仓库服务302请求拉取除了层X1的镜像D的剩余的层X7的数据。
以上所有阶段结束后,所有边缘节点完成部署相应的docker镜像。即,节点311完整获得镜像A、节点312完整获得镜像B、节点313完整获得镜像C、节点314完整获得镜像D。
本申请实施例提供的镜像部署方案旨在改变了各个边缘节点的拉取镜像的请求对象,优化了镜像层的传输路径。原本每个边缘节点都向仓库服务器发起拉取所需镜像的请求,在仓库服务器分析得到多个边缘节点所需的镜像具备共同层的时候,仓库服务器就可以针对该共同层的数据传输建立流水线,并分别告知这多个边缘节点可以向该流水线中的自身节点的上游节点发起拉取共同层的请求,使得共同层的传输效率更高。对于除去共同层的所需镜像的剩余层,这多个边缘节点可以继续向仓库服务器发起拉取剩余层的请求。
由于边缘节点之间分发数据的局域网传输速度通常是快于云端301与边缘端310之间的广域网传输速度,以及在传输镜像之前各个边缘节点被通知了相应的层列表和相同的镜像层,所以实施本实施例提供的方法可以使得相同的镜像层只需从云端301向边缘端310传输一次,还避免了相同的镜像层被重复拉取,进而节省了网络传输开销,提高了镜像部署效率,缩短了镜像部署的总时间。
图4示出了根据本公开的一些实施例的用于镜像部署的docker系统400的功能模块的示意图。本申请实施例可以对docker系统400进行功能模块的划分,例如,可以将docker系统400的各个功能划分各个功能模块,也可以将docker系统400的两个或两个以上的功能集成在一个功能模块中,本实施例不作限制。
如图4所示,docker系统400可以包括仓库服务器401、多个边缘节点410。其中,在一些实施例中,仓库服务器401可以用于实现前述各个实施例中所描述的仓库服务器的功能,边缘节点410可以被实现为前述各个实施例中的所描述的边缘节点的功能,为了简洁,这里不多赘述。docker系统400、仓库服务器401、边缘节点410中的各个功能模块可以通过软件、硬件或者两者结合的方式实现。
如图4所示,仓库服务器401可包括:镜像协调模块402和工作者协调模块403等。
镜像协调模块402可用于接收来自边缘节点410的拉取镜像的请求,镜像协调模块402还可以用于分析所有被请求拉取的镜像的层以生成层列表,镜像协调模块402还可以用于为在流水线阶段中传输的镜像的共同层生成数据块,镜像协调模块402还可以用于向边缘节点410发送相关的层列表和共同层的数据块列表。
可以理解的,关于镜像协调模块402包括的各个功能的具体实现可参考前述各个实施例中对镜像协调器的详细描述,这里不多赘述。
工作者协调模块403可用于协调边缘节点410的docker镜像传输代理,工作者协调模块403可用于随机地或者根据预先设定的策略选择领导者节点,工作者协调模块403可用于建立用于流水线阶段的镜像的共同层的传输流水线,工作者协调模块403可用于协调非流水线阶段的剩余镜像数据的传输等。工作者协调模块403还可用于向边缘节点410发送流水线的相关设置信息,该设置信息可以包括边缘节点410所对应的上游节点和/或下游节点、其所需镜像的层列表和共同层的数据块的哈希值。工作者协调模块403还可以用于控制对边缘节点410传输数据的传输速率。
可以理解的,关于工作者协调模块403包括的各个功能的具体实现可参考前述各个实施例中对工作者协调器的详细描述,这里不多赘述。
如图4所示,边缘节点410可包括:拉取模块411、获取模块412、传输模块413等。
拉取模块411可用于向仓库服务器401请求拉取所需镜像,拉取模块411还可用于根据设置信息向上游节点请求拉取共同层的数据,拉取模块411还可用于根据层列表向仓库服务器401请求拉取除去共同层的所需镜像的剩余层。
获取模块412可用于接收主节点发送的指示待部署镜像的参数,获取模块412还用于获取仓库服务器401发送的流水线相关的设置信息。
传输模块413可用于将共同层的数据传送给流水线中的下游节点。
可以理解的,关于边缘节点410的拉取模块411、获取模块412、传输模块413所包括的各个功能的具体实现可参考前述各个实施例中的详细描述,这里不多赘述。
图4中所示的这些模块和/或单元可以部分或者全部地实现为硬件模块、软件模块、固件模块或者其任意组合。特别地,在某些实施例中,上文描述的流程、方法或过程可以由存储系统或与存储系统对应的主机或独立于存储系统的其它计算设备中的硬件来实现。
图5示出了可以用于实施根据本公开的一些实施例的示例设备500的示意性结构图。设备500可以用于实现前述边缘节点或仓库服务器等。如图5所示,设备500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的计算机程序指令或者从存储单元508加载到随机访问存储器(RAM)503中的计算机程序指令,来执行各种适当的动作和处理。在RAM 503中,还可存储设备500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
设备500中的多个部件连接至I/O接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其它设备交换信息/数据。
处理单元501可以执行上文所描述的各个方法和/或处理,例如方法200。例如,在一些实施例中,方法200可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由ROM 502和/或通信单元509而被载入和/或安装到设备500上。当计算机程序加载到RAM503并由CPU 501执行时,可以执行上文描述的方法200的一个或多个步骤。备选地,在其它实施例中,CPU 501可以通过其它任何适当的方式(例如,借助于固件)而被配置为执行方法200。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)等等。
在一些实施例中,以上所描述的方法和过程可以被实现为计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
本文描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如互联网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言,以及常规的过程式编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个框中规定的功能/动作。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
附图中的流程图和框图显示了根据本公开的多个实施例的设备、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这取决于所涉及的功能。也要注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中技术的技术改进,或者使得本技术领域的其它普通技术人员能理解本文公开的各实施例。

Claims (15)

1.一种镜像部署方法,所述方法包括:
接收来自于多个节点的拉取镜像的请求,其中,第一节点请求拉取的镜像为第一镜像;
检测到所述多个节点所请求拉取的多个镜像的层均包括共同层;
生成所述共同层的数据的传输路径,所述传输路径包括将所述共同层的数据传输给第二节点,所述第二节点为在所述多个节点中被选择用于将所述共同层的数据分发给其他节点的起始节点;
根据所述传输路径向所述第一节点发送设置信息,所述设置信息包括指示所述第一节点从第三节点获取所述共同层的数据;
向所述第二节点发送所述共同层的数据,其中,所述第一节点根据所述设置信息从所述第三节点获取到所述共同层的数据。
2.根据权利要求1所述的方法,还包括:
响应于所述第一节点拉取剩余层的请求,向所述第一节点发送所述剩余层的数据,所述剩余层是所述第一镜像中除去所述共同层之外的其他层。
3.根据权利要求2所述的方法,还包括:
根据获取到的所述第一镜像所包括的层,生成所述第一镜像的层列表,所述层列表中包括所述共同层;
向所述第一节点发送所述第一镜像的层列表。
4.根据权利要求3所述的方法,所述层列表中还包括所述剩余层,所述方法还包括:
在完成获取所述共同层的数据之后,接收到所述第一节点根据所述层列表中指示的所述剩余层而生成的拉取所述剩余层的请求。
5.根据权利要求1所述的方法,所接收到的所述第一节点拉取所述第一镜像的请求是根据第四节点发送的部署参数而生成的,所述部署参数包括标识所述第一节点的待部署的镜像为所述第一镜像的参数,所述第四节点用于安排所述多个节点的待部署的镜像。
6.根据权利要求1所述的方法,所述传输路径为有向无环图。
7.根据权利要求1所述的方法,还包括:
将所述共同层分成多个数据块,所述多个数据块中的每个数据块对应一个哈希值,其中,向所述第一节点发送的所述设置信息还包括所述多个数据块对应的哈希值;
所述第一节点根据所述设置信息从所述第三节点获取到所述共同层的数据,包括:
所述第一节点根据所述多个数据块对应的哈希值从所述第三节点获取到组成所述共同层的所述多个数据块。
8.一种服务器,包括:
处理器;以及
与所述处理器耦合的存储器,所述存储器具有存储于其中的指令,所述指令在被处理器执行时使所述服务器执行动作,所述动作包括:
接收来自于多个节点的拉取镜像的请求,其中,第一节点请求拉取的镜像为第一镜像;
检测到所述多个节点所请求拉取的多个镜像的层均包括共同层;
生成所述共同层的数据的传输路径,所述传输路径包括将所述共同层的数据传输给第二节点,所述第二节点为在所述多个节点中被选择用于将所述共同层的数据分发给其他节点的起始节点;
根据所述传输路径向所述第一节点发送设置信息,所述设置信息包括指示所述第一节点从第三节点获取所述共同层的数据;
向所述第二节点发送所述共同层的数据,其中,所述第一节点根据所述设置信息从所述第三节点获取到所述共同层的数据。
9.根据权利要求8所述的服务器,所述动作还包括:
响应于所述第一节点拉取剩余层的请求,向所述第一节点发送所述剩余层的数据,所述剩余层是所述第一镜像中除去所述共同层之外的其他层。
10.根据权利要求9所述的服务器,所述动作还包括:
根据获取到的所述第一镜像所包括的层,生成所述第一镜像的层列表,所述层列表中包括所述共同层;
向所述第一节点发送所述第一镜像的层列表。
11.根据权利要求10所述的服务器,所述层列表中还包括所述剩余层,所述动作还包括:
在完成获取所述共同层的数据之后,接收到所述第一节点根据所述层列表中指示的所述剩余层而生成的拉取所述剩余层的请求。
12.根据权利要求8所述的服务器,所接收到的所述第一节点拉取所述第一镜像的请求是根据第四节点发送的部署参数而生成的,所述部署参数包括标识所述第一节点的待部署的镜像为所述第一镜像的参数,所述第四节点用于安排所述多个节点的待部署的镜像。
13.根据权利要求8所述的服务器,所述传输路径为有向无环图。
14.根据权利要求8所述的服务器,所述动作还包括:
将所述共同层分成多个数据块,所述多个数据块中的每个数据块对应一个哈希值,其中,向所述第一节点发送的所述设置信息还包括所述多个数据块对应的哈希值;
所述第一节点根据所述设置信息从所述第三节点获取到所述共同层的数据,包括:
所述第一节点根据所述多个数据块对应的哈希值从所述第三节点获取到组成所述共同层的所述多个数据块。
15.一种计算机程序产品,所述计算机程序产品被有形地存储在计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使机器执行根据权利要求1至7中任一项所述的方法。
CN202210658113.5A 2022-06-10 2022-06-10 镜像部署方法、服务器和系统 Pending CN117255129A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210658113.5A CN117255129A (zh) 2022-06-10 2022-06-10 镜像部署方法、服务器和系统
US17/860,764 US12118054B2 (en) 2022-06-10 2022-07-08 Method, server, and system for image deployment

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210658113.5A CN117255129A (zh) 2022-06-10 2022-06-10 镜像部署方法、服务器和系统

Publications (1)

Publication Number Publication Date
CN117255129A true CN117255129A (zh) 2023-12-19

Family

ID=89077717

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210658113.5A Pending CN117255129A (zh) 2022-06-10 2022-06-10 镜像部署方法、服务器和系统

Country Status (2)

Country Link
US (1) US12118054B2 (zh)
CN (1) CN117255129A (zh)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4637145B2 (ja) * 2007-07-20 2011-02-23 株式会社コナミデジタルエンタテインメント ネットワークシステム、ノード機器、データ配信方法、および、プログラム
US10528366B2 (en) * 2017-06-05 2020-01-07 International Business Machines Corporation Facilitating multi-inheritance within a single inheritance container-based environment
CN109104451A (zh) * 2017-06-21 2018-12-28 阿里巴巴集团控股有限公司 Docker镜像的下载方法及节点、Docker镜像的预热方法及节点

Also Published As

Publication number Publication date
US12118054B2 (en) 2024-10-15
US20230401273A1 (en) 2023-12-14

Similar Documents

Publication Publication Date Title
US9229759B2 (en) Virtual machine provisioning using replicated containers
CN113296792B (zh) 存储方法、装置、设备、存储介质和系统
US20180343111A1 (en) Supporting distributed ledgers in a micro-services environment
CN113645262A (zh) 云计算服务系统和方法
CN105474177B (zh) 分布式处理系统、设备、方法和记录介质
CN113127430B (zh) 镜像信息处理方法、装置、计算机可读介质及电子设备
US9729610B2 (en) Method for intercepting an instruction produced by an application on a computer
US12067380B2 (en) System and method of offloading and migrating management controller functionalities using containerized services and application thereof
CN113434283B (zh) 服务调度方法及装置、服务器、计算机可读存储介质
CN113741952B (zh) 一种软件包管理方法、装置、设备及介质
CN110851143B (zh) 源码部署方法、装置、设备及存储介质
WO2020001162A1 (zh) 容器管理方法、装置和设备
CN114238237B (zh) 任务处理方法、装置、电子设备和计算机可读存储介质
KR20110080448A (ko) 애플리케이션 구축 시스템 및 그 방법
CN113222174B (zh) 模型管理方法及装置
CN113805858B (zh) 持续部署脚本语言开发的软件的方法和装置
US9626213B2 (en) System and method for file injection in virtual machine configuration
CN117591247A (zh) 云环境虚拟机的修复方法、装置及电子设备
US12353874B2 (en) Efficient configuration management in continuous deployment
CN117255129A (zh) 镜像部署方法、服务器和系统
CN108833532B (zh) 基于物联网的服务处理方法、装置和系统
US20240256395A1 (en) Method and System for Instant Availability of Container Platform Workloads
CN114675872B (zh) 一种对应用程序的数据处理方法、装置、设备及存储介质
CN111274211B (zh) 应用文件的存储方法、装置及系统
CN114706656A (zh) 创建容器镜像的方法、装置、电子设备和计算机可读介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination