一种镜像管理方法及装置与流程

文档序号:12305014阅读:208来源:国知局
一种镜像管理方法及装置与流程

本发明涉及计算机技术领域,特别是涉及一种镜像管理方法及装置。



背景技术:

docker为了实现镜像的快速分发与复用采用了镜像分层技术,上层中文件的修改基于其下一层的内容,镜像整体则是由各层构成单向的依赖链。其中,依赖关系是在软件工程对象模型中描述两个模型元素(类、用例等)之间的语义连接关系,其中一个模型元素是独立的,另一个模型元素不是独立的,依赖关系依赖赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于依赖关系的模型元素。例如:一个类使用另一个类的对象作为操作的参数,一个类用另一个类的对象作为它的数据成员,一个类向另一个类发消息等,这样的两个类之间都存在依赖关系。

在现有技术中对镜像加载时,只能按照依赖次序串行加载,导致加载速度慢。



技术实现要素:

本发明提供了一种镜像管理方法及装置,以解决现有技术中镜像加载时依赖次序串行加载,导致加载速度过慢的问题。

为了解决上述问题,本发明公开了一种镜像管理方法,包括构建第一镜像层,确定所述第一镜像层是否与末端集合中的元素镜像层存在依赖关系,其中,所述末端集合中存在至少一个元素镜像层;若第一镜像层与所述末端集合中的元素镜像层存在依赖关系,则将与所述第一镜像层存在依赖关系的元素镜像层从所述末端集合中删除,并记录所述第一镜像层与删除的元素镜像层的依赖关系;判断删除元素镜像层后的末端集合是否为空集合;若所述末端集合为空集合,则将所述第一镜像层添加至所述末端集合中;当确定不存在层级高于所述第一镜像层的镜像层时,则创建一个空镜像层,并记录该空镜像层依赖当前末端集合中的所有元素镜像层。

优选地,在所述判断删除元素镜像层后的末端集合是否为空集合的步骤之后,所述方法还包括:若所述末端集合为非空集合,则确定所述末端集合中包含的各元素镜像层对应的依赖镜像层,将所述元素镜像层对应的依赖镜像层添加至第一集合中;确定所述第一镜像层是否与第一集合中的元素镜像层存在依赖关系;若所述第一镜像层与所述第一集合中的元素镜像层存在依赖关系,则将与所述第一镜像层存在依赖关系的元素镜像层从所述第一集合中删除,并记录所述第一镜像层与删除的元素镜像层的依赖关系;判断删除元素镜像层后的第一集合是否为空集合,若所述删除元素镜像层后的第一集合为非空集合,则确定所述删除元素镜像层后的第一集合中的所有元素镜像层的依赖层,将所有元素镜像层的依赖层添加至所述删除元素镜像层后的第一集合中,并将所述删除元素镜像层后的第一集合中的原有元素镜像层删除;返回执行所述确定所述第一镜像层是否与第一集合中的元素镜像层存在依赖关系的步骤,直至所述第一集合为空集合为止。

优选地,在所述判断删除镜像层元素后的第一集合是否为空集合的步骤之后,所述方法还包括:当判断所述第一集合为空集合时,将所述第一镜像层添加至所述末端集合中。

优选地,在将所述第一镜像层添加至所述末端集合中的步骤之后,所述方法还包括:若存在层级高于所述第一镜像层的镜像层,则返回执行构建第一镜像层的步骤,构建新的镜像层。

优选地,在所述创建一个空镜像层的步骤之后,所述方法还包括:按照所述记录的各依赖关系,进行对多个镜像层的同时加载。

为了解决上述问题,本发明还公开了一种镜像管理装置,所述装置包括:构建模块,用于构建第一镜像层,确定所述第一镜像层是否与末端集合中的元素镜像层存在依赖关系,其中,所述末端集合中存在至少一个元素镜像层;第一删除模块,用于若第一镜像层与所述末端集合中的元素镜像层存在依赖关系,则将与所述第一镜像层存在依赖关系的元素镜像层从所述末端集合中删除,并记录所述第一镜像层与删除的元素镜像层的依赖关系;第一判断模块,用于判断删除元素镜像层后的末端集合是否为空集合;第一添加模块,用于当所述第一判断模块的判断结果为是时,则将所述第一镜像层添加至所述末端集合中;空镜像层构建模块,用于当确定不存在层级高于所述第一镜像层的镜像层时,则创建一个空镜像层,并记录该空镜像层依赖当前末端集合中的所有元素镜像层。

优选地,所述装置还包括:第二添加模块,用于在所述第一判断模块判断删除元素镜像层后的末端集合是否为空集合之后,若所述末端集合为非空集合,则确定所述末端集合中包含的各元素镜像层对应的依赖镜像层,将所述元素镜像层对应的依赖镜像层添加至第一集合中;依赖关系确定模块,用于确定所述第一镜像层是否与第一集合中的元素镜像层存在依赖关系;第二删除模块,用于若所述第一镜像层与所述第一集合中的元素镜像层存在依赖关系,则将与所述第一镜像层存在依赖关系的元素镜像层从所述第一集合中删除,并记录所述第一镜像层与删除的元素镜像层的依赖关系;第二判断模块,用于判断删除元素镜像层后的第一集合是否为空集合,若所述删除元素镜像层后的第一集合为非空集合,则确定所述删除元素镜像层后的第一集合中的所有元素镜像层的依赖层,将所有元素镜像层的依赖层添加至所述删除元素镜像层后的第一集合中,并将所述删除元素镜像层后的第一集合中的原有元素镜像层删除;第一返回模块,用于返回执行所述确定所述第一镜像层是否与第一集合中的元素镜像层存在依赖关系的步骤,直至所述第一集合为空集合为止。

优选地,所述装置还包括:第三添加模块,用于当判断所述第一集合为空集合时,将所述第一镜像层添加至所述末端集合中。

优选地,所述装置还包括:第二返回模块,用于在所述第一添加模块将所述第一镜像层添加至所述末端集合中之后,若存在层级高于所述第一镜像层的镜像层,则返回执行构建第一镜像层的步骤,构建新的镜像层。

优选地,所述装置还包括:加载模块,用于按照所述记录的各依赖关系,进行对多个镜像层的同时加载。

与现有技术相比,本发明具有以下优点:

本发明实施例提供的一种镜像的管理方案,构建第一镜像层,确定第一镜像层是否与末端集合中的元素镜像层存在依赖关系,将与第一镜像层存在依赖关系的元素镜像层从末端集合中删除,并记录第一镜像层与删除的元素镜像层的依赖关系,判断删除元素镜像层后的末端集合是否为空集合,若末端集合为空集合,则将第一镜像层添加至末端集合中,当确定不存在层级高于第一镜像层的镜像层时,则创建一个空镜像层,并记录该空镜像层依赖当前末端集合中的所有元素镜像层,镜像构建完成。可见,通过本发明实施例提供的一种镜像的管理方案,使用有向无环图替代单向依赖链,通过进行拓扑排序实现对多个镜像层的并行加载,最终达到加速镜像加载的目的,增强用户的使用体验。

附图说明

图1是本发明实施例一的一种镜像管理方法的步骤流程图;

图2是本发明实施例二的一种镜像管理方法的步骤流程图;

图3是本发明实施例三的一种镜像的管理装置的结构框图;

图4是本发明实施例四的一种镜像的管理装置的结构框图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

实施例一

参照图1,示出了本发明实施例一的一种镜像管理方法的步骤流程图。

本发明实施例提供的镜像管理方法包括以下步骤:

步骤101:构建第一镜像层,确定第一镜像层是否与末端集合中的元素镜像层存在依赖关系。

其中,末端集合中存在至少一个元素镜像层。

步骤102:若第一镜像层与末端集合中的元素镜像层存在依赖关系,则将与第一镜像层存在依赖关系的元素镜像层从末端集合中删除,并记录第一镜像层与删除的元素镜像层的依赖关系。

例如:记层l0为基础镜像层,c为当前不被任何层依赖的层的集合,初始只包含l0,对于层l1、l2(假设按照原单向依赖,l1为下层,l2为上层),如果l2中修改的文件集合与l1中修改的文件集合有交集,则称l2依赖l1,否则l2不依赖l1。构建镜像就是构建依赖关系有向无环图的过程,集合c记录的是这个有向无环图当前的末端,即为末端集合。

步骤103:判断删除元素镜像层后的末端集合是否为空集合。

判断删除元素镜像层后的末端集合是否只存在基础镜像层,若只存在基础镜像层,则删除元素镜像层后的末端集合为空集合,若存在基础镜像层以外的镜像层,则删除元素镜像层后的末端集合不为空集合。

步骤104:若末端集合为空集合,则将第一镜像层添加至末端集合中。

步骤105:当确定不存在层级高于第一镜像层的镜像层时,则创建一个空镜像层,并记录该空镜像层依赖当前末端集合中的所有元素镜像层。

例如,构建第一镜像层l,遍历集合末端集合c,对于末端集合c中层lx,如果第一镜像层l依赖lx,则将第一镜像层lx从末端集合c中去除,并记录该依赖关系,当确定不存在层级高于第一镜像层l的镜像层时,则创建一个空镜像层l_image,并记录该空镜像层依赖当前末端集合中的所有镜像层,镜像构建完成。

本发明实施例提供的一种镜像的管理方法,构建第一镜像层,确定第一镜像层是否与末端集合中的元素存在依赖关系,将与第一镜像层存在依赖关系的元素镜像层从末端集合中删除,并记录第一镜像层与删除的元素镜像层的依赖关系,判断删除元素镜像层后的末端集合是否为空集合,若是,则将第一镜像层添加至末端集合中,当确定不存在层级高于第一镜像层的镜像层时,则创建一个空镜像层,并记录该空镜像层依赖当前末端集合中的所有元素镜像层,镜像构建完成。可见,通过本发明实施例提供的一种镜像的管理方法,使用有向无环图替代单向依赖链,通过进行拓扑排序实现对多个镜像层的并行加载,最终达到加速镜像加载的目的,增强用户的使用体验。

实施例二

参照图2,示出了本发明实施例二的一种镜像管理方法的步骤流程图。

本发明实施例提供的镜像管理方法包括以下步骤:

步骤201:构建第一镜像层,确定第一镜像层是否与末端集合中的元素镜像层存在依赖关系。

其中,末端集合中存在至少一个元素镜像层。

步骤202:若第一镜像层与末端集合中的元素镜像层存在依赖关系,则将与第一镜像层存在依赖关系的元素镜像层从末端集合中删除,并记录第一镜像层与删除的元素镜像层的依赖关系。

例如:记层l0为基础镜像层,c为当前不被任何层依赖的层的集合,初始只包含l0,对于层l1、l2(假设按照原单向依赖,l1为下层,l2为上层),如果l2中修改的文件集合与l1中修改的文件集合有交集,则称l2依赖l1,否则l2不依赖l1。构建镜像就是构建依赖关系有向无环图的过程,集合c记录的是这个有向无环图当前的末端,即为末端集合。

步骤203:判断删除元素镜像层后的末端集合是否为空集合,若判断结果为是,则执行步骤204,若判断结果为否,则执行步骤208。

判断删除元素镜像层后的末端集合是否只存在基础镜像层,若只存在基础镜像层,则删除元素镜像层后的末端集合为空集合,若存在基础镜像层以外的镜像层,则删除元素镜像层后的末端集合不为空集合。

步骤204:若是,则将第一镜像层添加至末端集合中。

步骤205:若存在层级高于第一镜像层的镜像层,则返回执行构建第一镜像层的步骤,构建新的镜像层。

步骤206:当确定不存在层级高于第一镜像层的镜像层时,则创建一个空镜像层,并记录该空镜像层依赖当前末端集合中的所有元素镜像层。

例如,构建第一镜像层l,遍历集合末端集合c,对于末端集合c中层lx,如果第一镜像层l依赖lx,则将第一镜像层lx从末端集合c中去除,并记录该依赖关系,当确定不存在层级高于第一镜像层l的镜像层时,则创建一个空镜像层l_image,并记录该空镜像层依赖当前末端集合中的所有镜像层,镜像构建完成。

步骤207:按照记录的各依赖关系,进行镜像的并行加载。

至此,本次流程结束。

步骤208:若末端集合为非空集合,则确定末端集合中包含各元素镜像层对应的依赖镜像层,将元素镜像层对应的依赖镜像层添加至第一集合中。

当判断末端集合中包含除基础镜像层的镜像层时,则末端集合为空集合,将末端集合中包含的镜像层的依赖层添加至第一集合中。

步骤209:确定第一镜像层是否与第一集合中的元素镜像层存在依赖关系。

步骤210:若第一镜像层与第一集合中的元素镜像层存在依赖关系,则将与第一镜像层存在依赖关系的元素镜像层从第一集合中删除,并记录第一镜像层与删除的元素镜像层的依赖关系。

步骤211:判断删除元素镜像层后的第一集合是否为空集合,若删除元素镜像层后的第一集合为非空集合,则确定删除元素镜像层后的第一集合中的所有元素镜像层的依赖层,将删除元素镜像层后的第一集合中的原有元素镜像层删除。若判断结果为是,则执行步骤212。

当将将删除元素镜像层后的第一集合中的所有元素镜像层的依赖层替换至删除元素镜像层后的第一集合中,返回执行确定第一镜像层是否与第一集合中的元素镜像层存在依赖关系的步骤,直至判断第一集合为空集合为止。

步骤212:当判断第一集合为空集合时,将第一镜像层添加至末端集合中。

步骤208至步骤213与步骤201至步骤207类似对此不在赘述。

具体地,加载镜像的过程如图3所示,为拓扑排序图,分析镜像中各层间的依赖关系,完成拓扑排序,根据拓扑关系进行镜像层的并行加载。

括号内为本层修改的文件,箭头表示被依赖关系(a→b表示a被b依赖)。根据拓扑排序,图中同一种边框的镜像层互相无依赖,可并行加载。

本发明实施例提供的一种镜像的管理方法,构建第一镜像层,确定第一镜像层是否与末端集合中的元素镜像层存在依赖关系,将与第一镜像层存在依赖关系的元素镜像层从末端集合中删除,并记录第一镜像层与删除的元素镜像层的依赖关系,判断删除元素镜像层后的末端集合是否为空集合,若是,则将第一镜像层添加至末端集合中,当确定不存在层级高于第一镜像层的镜像层时,则创建一个空镜像层,并记录该空镜像层依赖当前末端集合中的所有镜像层,镜像构建完成。可见,通过本发明实施例提供的一种镜像的管理方法,使用有向无环图替代单向依赖链,通过进行拓扑排序实现对多个镜像层的并行加载,最终达到加速镜像加载的目的,增强用户的使用体验。

实施例三

参照图3,示出了本发明实施例三的一种镜像管理装置的结构框图。

本发明实施例提供的镜像管理装置包括:构建模块301,用于构建第一镜像层,确定所述第一镜像层是否与末端集合中的元素存在依赖关系,其中,所述末端集合中存在至少一个元素镜像层;第一删除模块302,用于若第一镜像层与所述末端集合中的元素镜像层存在依赖关系,则将与所述第一镜像层存在依赖关系的元素镜像层从所述末端集合中删除,并记录所述第一镜像层与删除的元素镜像层的依赖关系;第一判断模块303,用于判断删除元素镜像层后的末端集合是否为空集合;第一添加模块304,用于当所述第一判断模块的判断结果为是时,则将所述第一镜像层添加至所述末端集合中;空镜像层构建模块305,用于当确定不存在层级高于所述第一镜像层的镜像层时,则创建一个空镜像层,并记录该空镜像层依赖当前末端集合中的所有元素镜像层。

本发明实施例提供的一种镜像的管理装置,构建第一镜像层,确定第一镜像层是否与末端集合中的元素镜像层存在依赖关系,将与第一镜像层存在依赖关系的元素镜像层从末端集合中删除,并记录第一镜像层与删除的元素镜像层的依赖关系,判断删除元素镜像层后的末端集合是否为空集合,若是,则将第一镜像层添加至末端集合中,当确定不存在层级高于第一镜像层的镜像层时,则创建一个空镜像层,并记录该空镜像层依赖当前末端集合中的所有镜像层,镜像构建完成。可见,通过本发明实施例提供的一种镜像的管理装置,使用有向无环图替代单向依赖链,通过进行拓扑排序实现对多个镜像层的并行加载,最终达到加速镜像加载的目的,增强用户的使用体验。

实施例四

参照图4,示出了本发明实施例四的一种镜像管理装置的结构框图。

本发明实施例提供的镜像管理装置包括:构建模块401,用于构建第一镜像层,确定所述第一镜像层是否与末端集合中的元素镜像层存在依赖关系,其中,所述末端集合中存在至少一个元素镜像层;第一删除模块402,用于若第一镜像层与所述末端集合中的元素镜像层存在依赖关系,则将与所述第一镜像层存在依赖关系的元素镜像层从所述末端集合中删除,并记录所述第一镜像层与删除的元素镜像层的依赖关系;第一判断模块403,用于判断删除元素镜像层后的末端集合是否为空集合;第一添加模块404,用于当所述第一判断模块的判断结果为是时,则将所述第一镜像层添加至所述末端集合中;空镜像层构建模块405,用于当确定不存在层级高于所述第一镜像层的镜像层时,则创建一个空镜像层,并记录该空镜像层依赖当前末端集合中的所有元素镜像层。

优选地,所述装置还包括:第二添加模块406,用于在所述第一判断模块判断删除元素镜像层后的末端集合是否为空集合之后,若所述末端集合为非空集合,则确定所述末端集合中包含的各元素镜像层对应的依赖镜像层,将所述元素镜像层对应的依赖镜像层添加至第一集合中;依赖关系确定模块407,用于确定所述第一镜像层是否与第一集合中的元素镜像层存在依赖关系;第二删除模块408,用于若所述第一镜像层与所述第一集合中的元素镜像层存在依赖关系,则将与所述第一镜像层存在依赖关系的元素镜像层从所述第一集合中删除,并记录所述第一镜像层与删除的元素镜像层的依赖关系;第二判断模块409,用于判断删除元素镜像层后的第一集合是否为空集合,若所述删除元素镜像层后的第一集合为非空集合,则确定所述删除元素镜像层后的第一集合中的所有元素镜像层的依赖层,将所有元素镜像层的依赖层添加至所述删除元素镜像层后的第一集合中,并将所述删除元素镜像层后的第一集合中的原有元素镜像层删除;第一返回模块410,用于返回执行所述确定所述第一镜像层是否与第一集合中的元素镜像层存在依赖关系的步骤,直至所述第一集合为空集合为止。

所述装置还包括:第三添加模块411,用于当判断所述第一集合为空集合时,将所述第一镜像层添加至所述末端集合中。

所述装置还包括:第二返回模块412,用于在所述第一添加模块将所述第一镜像层添加至所述末端集合中之后,若存在层级高于所述第一镜像层的镜像层,则返回执行构建第一镜像层的步骤,构建新的镜像层。

所述装置还包括:加载模块413,用于按照所述记录的各依赖关系,进行对多个镜像层的同时加载。

本发明实施例提供的一种镜像的管理装置,构建第一镜像层,确定第一镜像层是否与末端集合中的元素镜像层存在依赖关系,将与第一镜像层存在依赖关系的元素镜像层从末端集合中删除,并记录第一镜像层与删除的元素镜像层的依赖关系,判断删除元素镜像层后的末端集合是否为空集合,若是,则将第一镜像层添加至末端集合中,当确定不存在层级高于第一镜像层的镜像层时,则创建一个空镜像层,并记录该空镜像层依赖当前末端集合中的所有镜像层,镜像构建完成。可见,通过本发明实施例提供的一种镜像的管理装置,使用有向无环图替代单向依赖链,通过进行拓扑排序实现对多个镜像层的并行加载,最终达到加速镜像加载的目的,增强用户的使用体验。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上对本发明所提供的一种镜像管理方法及装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1