一种镜像管理方法、系统、设备和存储介质与流程
未命名
09-24
阅读:76
评论:0
1.本技术涉及云计算技术领域,涉及但不限于一种镜像管理方法、系统、设备和存储介质。
背景技术:
2.相关技术中,通过云平台管理项目openstack管理云环境中的镜像文件,openstack可以用来构建管理公有云,私有云,管理基础设施即服务(infrastructure as a service,iaas)层的计算、存储、网络等资源,将这些资源池化提供给调用者使用,目前广泛应用于云计算领域。
3.然而,openstack在进行镜像文件管理时,管理面和数据面紧耦合,不利于镜像管理服务的分布式部署和弹性扩缩容。
技术实现要素:
4.有鉴于此,本技术实施例提供一种镜像管理方法、系统、设备和存储介质。
5.第一方面,本技术实施例提供一种镜像管理方法,所述方法包括:所述镜像管理系统的第一服务接收客户端发送的镜像文件传输请求,所述镜像文件传输请求携带镜像文件的第一参数;所述第一服务基于所述第一参数,在数据库中管理所述镜像文件的元数据,并将管理后的元数据发送至所述客户端;所述客户端调用第二目标服务的传输接口,将所述镜像文件传输请求和所述管理后的元数据上传至所述第二目标服务;所述第二目标服务为从所述镜像管理系统的至少一个第二服务中选择的服务;所述第二目标服务调用初始化后的驱动程序,基于所述镜像文件传输请求,在所述第二目标服务和后端之间进行所述镜像文件的传输;所述第二目标服务获取更新完成的元数据,并将更新完成的元数据发送至所述第一服务,以供所述第一服务更新所述数据库中的元数据。
6.第二方面,本技术实施例提供一种镜像管理方法,所述方法包括:向镜像管理系统的第一服务发送镜像文件传输请求,以供所述第一服务基于所述镜像文件传输请求携带的镜像文件的第一参数,在数据库中管理所述镜像文件的元数据;所述镜像文件传输请求携带镜像文件的第一参数;接收所述第一服务发送的管理后的元数据;调用第二目标服务的传输接口,将所述镜像文件传输请求和所述管理后的元数据上传至所述第二目标服务,以供所述第二目标服务调用初始化后的驱动程序,基于所述镜像文件传输请求,在所述第二目标服务和后端之间进行所述镜像文件的传输;所述第二目标服务获取更新完成的元数据,并将更新完成的元数据发送至所述第一服务,以供所述第一服务更新所述数据库中的元数据;其中,所述第二目标服务为从所述镜像管理系统的至少一个第二服务中选择的服务。
7.第三方面,本技术实施例提供一种镜像管理系统,包括:第一服务和第二服务,其中:所述第一服务,用于接收客户端发送的镜像文件传输请求,所述镜像文件传输请求携带镜像文件的第一参数;基于所述第一参数,在数据库中管理所述镜像文件的元数据,并将管
理后的元数据发送至所述客户端;其中,所述客户端调用第二目标服务的传输接口,将所述镜像文件传输请求和所述管理后的元数据上传至所述第二目标服务;所述第二目标服务为从所述镜像管理系统的至少一个第二服务中选择的服务;所述第二目标服务,用于调用初始化后的驱动程序,基于所述镜像文件传输请求,在所述第二目标服务和后端之间进行所述镜像文件的传输;获取更新完成的元数据,并将更新完成的元数据发送至所述第一服务,以供所述第一服务更新所述数据库中的元数据。
8.第四方面,本技术实施例提供一种电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本技术实施例所述镜像管理方法中的步骤。
9.第五方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本技术实施例所述镜像管理方法中的步骤。
10.本技术实施例中,第一服务glance-api负责接收镜像文件删除请求,涉及镜像元数据的操作等管理面的工作,第二服务glance-storage负责镜像文件的存储、删除和后端驱动程序的管理等数据面的工作,通过将镜像管理服务的管理面与数据面分离,可以仅扩展数据面,不用使管理面也被迫进行扩容,可以适应公有云场景下组件服务的分布式部署和弹性扩缩容的需求,减少软件维护成本,降低服务之间的耦合度。
附图说明
11.图1为本技术实施例一种镜像管理方法的流程示意图;
12.图2为本技术实施例一种镜像管理系统的架构示意图;
13.图3为本技术实施例另一种镜像管理方法的流程示意图;
14.图4为本技术实施例又一种镜像管理方法的流程示意图;
15.图5为本技术实施例再一种镜像管理方法的流程示意图;
16.图6为本技术实施例还一种镜像管理方法的流程示意图;
17.图7为本技术实施例还一种镜像管理方法的流程示意图;
18.图8为本技术实施例一种镜像管理系统的第一服务和第二服务交互示意图;
19.图9为本技术实施例还一种镜像管理方法的流程示意图;
20.图10为相关技术一种镜像管理系统的架构示意图;
21.图11为本技术实施例一种镜像管理系统的组成结构示意图;
22.图12为本技术实施例设备的一种硬件实体示意图。
具体实施方式
23.下面结合附图和实施例对本技术的技术方案进一步详细阐述。
24.图1为本技术实施例一种镜像管理方法的流程示意图,如图1所示,该方法包括:
25.步骤s102:镜像管理系统的第一服务接收客户端发送的镜像文件传输请求,所述镜像文件传输请求携带镜像文件的第一参数;
26.其中,镜像是一种文件存储形式,是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像;可以把许多文件做成一个镜像文件;所述镜像文件传输请求用于请求在所述客户端和用于存储镜像文件的后端(又称存储后端)之间进
service,s3)和swift等;可以调用初始化后的驱动程序进行镜像文件的传输(上传或下载)和删除等处理操作。
36.步骤s110:所述第二目标服务获取更新完成的元数据,并将更新完成的元数据发送至所述第一服务,以供所述第一服务更新所述数据库中的元数据。
37.其中,在镜像文件传输过程中以及传输完成后,镜像文件的状态等元数据会发生更新,在目标glance-storage可以获取镜像文件的状态、大小、存储位置和校验码等元数据,并将所述元数据发送至glance-api更新。
38.本技术实施例中,第一服务glance-api负责接收镜像文件处理请求,涉及镜像元数据的操作等管理面的工作,第二服务glance-storage负责镜像文件的存储、传输和后端驱动程序的管理等数据面的工作,通过将镜像管理服务的管理面与数据面分离,可以仅扩展数据面,不用使管理面也被迫进行扩容,可以适应公有云场景下组件服务的分布式部署和弹性扩缩容的需求,减少软件维护成本,降低服务之间的耦合度。
39.图3为本技术实施例另一种镜像管理方法的流程示意图,如图3所示,该方法包括:
40.步骤s302:第一服务接收客户端发送的镜像文件上传请求,所述镜像文件上传请求携带镜像文件和所述镜像文件的第一参数;
41.步骤s304:所述第一服务基于所述第一参数,在数据库中创建所述镜像文件的元数据,并将创建完成的元数据发送至所述客户端;
42.步骤s306:所述客户端调用第二目标服务的上传接口,将所述镜像文件上传请求和创建完成的元数据上传至所述第二目标服务;
43.步骤s308:所述第二目标服务调用初始化后的驱动程序,将所述镜像文件上传至后端;
44.其中,在所述目标glance-storage收到镜像文件上传请求时,可以先更新镜像状态为“saving”,表示正在上传镜像文件,并将更新后的镜像状态发送至所述glance-api,以供所述glance-api更新所述数据库中镜像文件的镜像状态为“saving”。
45.步骤s310:所述第二目标服务获取更新完成的元数据,并将更新完成的元数据发送至所述第一服务,以供所述第一服务更新所述数据库中的元数据。
46.其中,所述目标glance-storage将所述镜像文件上传至后端时,可以同时获取镜像状态、镜像文件的大小、镜像文件的校验码以及镜像文件的存储地址信息等镜像元数据;此时所述镜像状态可以是“uploading”,表示镜像文件已上传,并将所述镜像元数据发送至所述glance-api服务,以供所述glance-api对所述数据库中的镜像元数据进行更新。
47.本技术实施例中,第一服务glance-api负责接收镜像文件上传请求,涉及镜像元数据的操作等管理面的工作,第二服务glance-storage负责镜像文件的存储、上传和后端驱动程序的管理等数据面的工作,通过将镜像管理服务的管理面与数据面分离,可以仅扩展数据面,不用使管理面也被迫进行扩容,可以适应公有云场景下组件服务的分布式部署和弹性扩缩容的需求,减少软件维护成本,降低服务之间的耦合度。
48.图4为本技术实施例又一种镜像管理方法的流程示意图,如图4所示,该方法包括:
49.步骤s402:镜像管理系统的第一服务接收客户端发送的镜像文件下载请求,所述镜像文件下载请求携带镜像文件的第一参数;
50.步骤s404:所述第一服务基于所述第一参数,更新数据库中所述镜像文件的元数
据;
51.步骤s406:所述客户端调用第二目标服务的下载接口,将所述镜像文件下载请求和更新完成的元数据上传至所述第二目标服务;
52.步骤s408:所述第二目标服务调用初始化后的驱动程序,从后端下载所述镜像文件;
53.其中,在步骤s408之后,所述方法还包括:所述第二目标服务将所述镜像文件通过下载接口发送至客户端,完成镜像文件的下载。
54.步骤s410:所述第二目标服务获取更新完成的元数据,并将更新完成的元数据发送至所述第一服务,以供所述第一服务更新所述数据库中的元数据。
55.本技术实施例中,第一服务glance-api负责接收镜像文件下载请求,涉及镜像元数据的操作等管理面的工作,第二服务glance-storage负责镜像文件的存储、下载和后端驱动程序的管理等数据面的工作,通过将镜像管理服务的管理面与数据面分离,可以仅扩展数据面,不用使管理面也被迫进行扩容,可以适应公有云场景下组件服务的分布式部署和弹性扩缩容的需求,减少软件维护成本,降低服务之间的耦合度。
56.在一些实施例中,如图5所示,在步骤s110之后,所述方法还包括以下步骤s112至步骤s120:
57.步骤s112:所述第一服务接收客户端发送的镜像文件删除请求;所述镜像文件删除请求携带所述镜像文件的第二参数;
58.其中,所述第二参数可以包括镜像文件的名称、大小、校验码等,可以基于所述第二参数,生成所述镜像文件的部分元数据。
59.步骤s114:所述第一服务基于所述第二参数,在所述数据库中更新所述镜像文件的元数据,并将更新完成的元数据至所述客户端;
60.步骤s116:所述第一服务调用所述第二目标服务的删除函数,将所述镜像文件删除请求和所述更新完成的元数据上传至所述第二目标服务;
61.步骤s118:所述第二目标服务调用初始化后的驱动程序,从后端删除所述镜像文件;
62.步骤s120:所述第二服务获取再更新完成的元数据,并将再更新完成的元数据发送至所述第一服务,以供所述第一服务更新所述数据库中的元数据。
63.本技术实施例中,第一服务glance-api负责接收镜像文件删除请求,涉及镜像元数据的操作等管理面的工作,第二服务glance-storage负责镜像文件的存储、删除和后端驱动程序的管理等数据面的工作,通过将镜像管理服务的管理面与数据面分离,可以仅扩展数据面,不用使管理面也被迫进行扩容,可以适应公有云场景下组件服务的分布式部署和弹性扩缩容的需求,减少软件维护成本,降低服务之间的耦合度。
64.在一些实施例中,如图6所示,在步骤s106之前,所述方法还可以包括步骤s1051和步骤s1052:
65.步骤s1051:所述客户端调用所述第一服务的节点列表接口,从所述数据库的数据表中查询可用的第二服务;所述数据表基于至少一个第二服务上报的状态信息生成;
66.其中,所述状态信息包括所述glance-storage的节点信息、节点状态和最新心跳上报时间等;所述glance-api可以新增glance-storage的节点列表接口和记录节点列表的
数据表;所述节点列表接口可以用于获取数据表中glance-storage的状态信息;可以对glance-storage节点进行状态信息的监控,并上报至所述glance-api。
67.为了使glance-storage可以进行灵活扩缩容,glance-storage的状态信息不存储在任何客户端,避免所有记录了状态信息的客户端同步修改并进行重启,灵活性高。
68.步骤s1052:所述客户端从所述可用的第二服务中选择第二目标服务。
69.其中,客户端需要进行上传或下载镜像文件时,可以先获取可用的glance-storage节点列表,然后随机调用其中一个glance-storage节点的上传或下载接口。
70.本技术实施例中,通过glance-api增加节点列表接口来实时查询数据表中当前可用的glance-storage节点列表,glance-storage的状态信息没有存储在任何客户端,避免所有记录了状态信息的客户端同步修改并进行重启,灵活性高,使glance-storage可以进行灵活扩缩容。
71.在一些实施例中,如图7所示,在步骤s1051之前,所述方法还可以包括步骤s1050:
72.步骤s1050:每一所述第二服务通过消息队列的单向请求方法cast将对应第二服务的状态信息上报至所述第一服务。
73.其中,为了准确反馈节点状态,同时为了及时将新扩容或下线的节点反馈给glance-api,glance-storage新增周期性心跳上报机制,定时通过消息队列将心跳信息(即状态信息)传给glance-api。可以通过直接调用openstack的oslo_service公共库定义该周期性任务,上报的状态信息中包括节点信息、节点状态、时间戳,所述glance-api接收后将这些状态信息更新到数据库中。
74.步骤s110中“所述第二目标服务将更新完成的元数据发送至所述第一服务”可以通过以下步骤s1101实现:
75.步骤s1101:所述第二目标服务通过消息队列的请求与响应方法call调用所述第一服务的更新函数,更新所述数据库中所述镜像文件的元数据;
76.步骤s116中“所述第一服务调用第二目标服务的删除函数”可以通过以下步骤s1161实现:
77.步骤s1161:所述第一服务通过消息队列的所述call方法调用第二目标服务的删除函数。
78.其中,引入消息队列可以用于管理面和数据面之间的消息传递:消息队列可以用于上传、下载镜像文件时镜像元数据的更新,以及删除镜像文件时消息的传递,以及glance-storage的心跳信息上报,实现glance-api服务和glance-storage服务之间的交互。
79.相关技术中,镜像服务只会作为客户端给消息队列发送通知消息(notification消息),不会作为消息队列的消费者(接收者);如图8所示,glance-api 81和glance-storage 82都可以作为消费者在消息队列中注册队列。通过调用openstack的oslo_messaging公共库来实现transport、topic、queue等信息的注册。
80.glance-storage 82作为远程过程调用(remote procedure call,rpc)消息的消费者时可以只定义一个删除函数delete 821,用于glance-api 81接收镜像文件删除请求后,glance-api 81的删除接口811通过消息队列的call方法调用该删除函数821同步删除存储后端的镜像文件。
81.作为消息的发送者,glance-storage 82可以通过消息队列的call方法调用glance-api 81的更新函数update 812,用于在通过glance-storage 82的上传接口upload 822上传镜像完成,或通过glance-storage 82的下载接口download 823下载镜像完成后,更新镜像的状态、大小、校验码,存储路径等元数据。
82.同时glance-storage 82中可以定义心跳发送函数heartbeat_send824通过消息队列的cast方法向glance-api 81的心跳接收函数heartbeat_accept 813周期性上报本节点的状态信息。
83.需要说明的是,所述glance-api作为rpc消息的消费者,定义update函数用于glance-storage更新镜像元数据时调用,并在更新完成后给call消息的回调队列回复结果(即更新结果),同时定义heartbeat_accept函数813接受glance-storage 82的心跳消息(即状态信息)。所述glance-api 81作为rpc消息的发送者,通过消息队列的call方法在删除镜像时调用glance-storage 82的删除函数delete。
84.本技术实施例中,通过消息队列可以实现负责管理面的glance-api和负责数据面的glance-storage之间进行消息的交互,glance-storage通过消息队列将glance-storage的状态信息上报至所述glance-api,可以及时准确地反馈节点状态信息至glance-api,以供所述客户端调用所述glance-api的节点列表接口,从数据表中可用的glance-storage中更高效地确定目标glance-storage;glance-storage通过消息队列调用glance-api的更新函数更新数据库中的元数据,可以实现在文件传输完成后高效地完成镜像文件的元数据的更新;所述glance-api调用目标glance-storage的删除函数删除存储后端的镜像文件,可以更高效地完成镜像文件的删除。
85.在一些实施例中,如图9所示,步骤s104中“所述第一服务基于所述第一参数,在数据库中管理所述镜像文件的元数据”可以通过以下步骤s1041实现:
86.步骤s1041:所述第一服务基于所述第一参数,调用自身的数据库访问接口,在数据库中管理所述镜像文件的元数据。
87.相关技术中,一般通过glance中的glance-registry服务独立负责数据库读写,本技术实施例中可以将负责数据库读写的相关文件全部删除,包括服务启动文件,wsgi接口定义文件,配置管理文件,client文件等。将所述glance-api中涉及到调用glance-registry的部分全部修改为直接调用所述glance-api中的数据库访问接口(db_api函数),以此实现所述glance-api进行数据库读写时不会进行wsgi接口调用,通过调用自身的数据库访问接口,在数据库中管理所述镜像文件的元数据,整合镜像管理服务的api服务与数据库读写服务,减少镜像管理服务节点,不需要单独维护glance-registry服务,有利于整体镜像服务的维护,实现镜像服务所有管理面业务的整合。
88.在一些实施例中,如图9所示,在步骤s108之前,所述方法可以包括以下步骤:
89.步骤s107:所述第二目标服务对所述驱动程序进行初始化;
90.所述步骤s108中“所述第二目标服务调用初始化后的驱动程序,基于所述镜像文件传输请求,在所述第二目标服务和后端之间进行所述镜像文件的传输”可以通过以下步骤s1081实现:
91.步骤s1081:所述第二目标服务调用自身初始化后的驱动程序,基于所述镜像文件传输请求,在所述第二目标服务和后端之间进行所述镜像文件的传输。
92.相关技术中,镜像服务的驱动层是一个独立的第三方包,例如可以使glance项目中的glance_store包,不利于整体维护。在本技术实施例中,可以将镜像服务数据面和对接后端的驱动层整合:将驱动层的驱动程序全部整合进新增的glance-storage服务中,负责镜像文件数据流的传输和后端驱动程序的管理。可以将glance_store包废弃,将其中的驱动层以及对驱动的初始化部分抽离出来整合进glance-storage中,对接glance-storage中定义的上传接口upload、下载接口download和delete函数。在glance-storage对自身驱动初始化完成后,可以直接调用后端驱动进行镜像文件的上传、下载、删除等操作,实现了镜像服务所有数据面业务的整合,减少软件维护成本。
93.本技术实施例还提供一种镜像管理方法,所述方法包括:
94.客户端向镜像管理系统的第一服务发送镜像文件传输请求,以供所述第一服务基于所述镜像文件传输请求携带镜像文件的第一参数,在数据库中管理所述镜像文件的元数据;
95.所述客户端接收所述第一服务发送的管理后的元数据;
96.所述客户端调用第二目标服务的传输接口,将所述镜像文件传输请求和所述管理后的元数据上传至所述第二目标服务,以供所述第二目标服务调用初始化后的驱动程序,基于所述镜像文件传输请求,在所述第二目标服务和后端之间进行所述镜像文件的传输;所述第二目标服务获取更新完成的元数据,并将更新完成的元数据发送至所述第一服务,以供所述第一服务更新所述数据库中的元数据;
97.其中,所述第二目标服务为从所述镜像管理系统的至少一个第二服务中选择的服务。
98.相关技术中,如图10所示,glance主要模块包括glance-api 101,glance-registry 102和glance_store 103。
99.其中,glance-api 101,用于对外提供wsgi接口,接收客户端104的处理请求,在glance-api 101的v2版本的接口中也可以直接与数据库105交互,进行数据库读写,同时调用glance_store 103实现对存储后端106的对接,进行镜像文件的读写。
100.glance-registry 102,用于提供wsgi接口给glance-api 101调用,进行数据库读写,在glance-api 101的v2版本的接口中,逐渐被glance-api 101集成,由glance-api 101直接与数据库105交互,但使用glance-api 101的v1版本的接口仍然需要调用glance-registry 102与数据库105交互,进行数据库读写。
101.glance_store 103,为独立的驱动包,可以集成多种后端驱动,用于镜像文件的存储后端106的对接管理。
102.该镜像管理服务glance-api 101对外暴露两个wsgi接口,glance-registry 102实际只会给glance-api 101调用。客户端104和数据库105之间镜像文件上传下载的数据流经过glance-api节点101,同时glance-api节点101还需要进行数据库105中镜像元数据的管理以及客户端104的请求的接收处理。
103.相关技术中,openstack中镜像管理服务glance,管理面数据面紧耦合;glance-api服务与数据库读写服务分离,镜像服务有独立的glance-registry服务,负责数据库的读写,glance-api服务也可以进行数据库读写,不需要单独维护glance-registry服务;镜像服务与后端驱动程序分离。
104.相关技术中的openstack镜像管理方法有如下缺点:
105.首先,管理面和数据面紧耦合,不利于镜像管理服务的分布式部署和弹性扩缩容,在公有云场景下有明显的缺点。
106.镜像元数据的管理操作由glance-api服务完成,包括镜像的创建,下载,更新,删除等。镜像上传、下载请求产生的镜像文件数据流也是直接由glance-api服务处理。glance-api服务实际承担了管理面和数据面的双重功能。openstack管理的资源池中如果需要对glance进行扩缩容,需要直接部署或者下线glance-api服务,此时所有记录了api节点信息的配置如haproxy中都需要进行同步修改并进行服务重启,灵活性不够。扩缩容大部分情况下只需要针对数据面,但是由于管理数据耦合,管理面被迫也进行扩容。
107.其次,glance-api服务与数据库读写服务分离,造成管理面的业务分散在两个服务中:在镜像元数据管理中,glance-registry服务只进行数据库读写,glance-api服务负责进行业务逻辑编排(在glance-api的v2版本的接口中也承担了数据库读写)。如果需要通过glance-registry读写数据库,都需要经过wsgi端口调用。镜像管理服务节点数量不会太多,没有必要单独维护一个服务专门用于数据库读写。
108.最后,驱动(driver)层与镜像服务分离,造成数据面的业务分散在glance-api和glance_store中:镜像服务通过不同的驱动对接不同的后端,所有的驱动都集成在一个三方库glance_store中,该库只有glance会使用,与服务端相分离,部署时需要单独部署,不利于整体镜像服务的维护。
109.本技术实施例中,首先,将镜像服务管理面和数据面分离,将原来集成了镜像元数据管理和镜像文件数据传输功能的glance-api服务分解成glance-api和glance-storage两个服务。glance-api负责所有的镜像元数据管理工作,glance-storage负责镜像文件的存储,镜像文件数据流的传输,后端驱动的管理等数据面的工作。
110.镜像文件的传输数据流不再经过glance-api节点,glance-storage暴露端口和可调用接口,直接与客户端建立镜像文件传输连接。
111.glance-api服务中涉及对后端存储进行调用的操作全部剥离出来放到glance-storage中,主要涉及将glance-api的v1版本和v2版本的接口中upload接口和download接口剥离放到glance-storage中,将v1版本和v2版本的接口中的删除接口delete入口保留,删除镜像时调用后端存储的部分同样剥离glance-api放到glance-storage中。glance-storage服务对外提供两个接口,分别是上传和下载接口,与glance-api剥离出的upload和download接口整合。同时定义镜像文件删除函数delete,glance-api可以通过消息队列调用该删除函数删除存储在后端的镜像文件。
112.相关技术中glance-api的v1版本接口支持一体化创建镜像,即将镜像元数据的创建和镜像文件的上传整合在一个接口中。本技术实施例的管理面和数据面分离后,这种整合方式需要禁止。和v2版本的接口保持一致,镜像元数据的创建和镜像文件的上传接口完全解耦。
113.其次,为了保证glance-storage可以进行灵活扩缩容,glance-storage的节点信息可以不存储在任何客户端。glance-api新增节点列表接口和记录节点列表的数据表,所述节点列表接口用于获取数据表中glance-storage的节点状态信息。该数据表依据glance-storage节点周期性上报的状态信息生成;所述状态信息可以包括glance-storage
节点信息,节点状态,最新心跳上报时间等。
114.glance-storage对外暴露两个接口(即上传接口和下载接口)用于进行镜像文件的上传或下载,客户端需要进行上传或下载镜像文件时,先获取可用的glance-storage节点列表,然后随机调用其中一个glance-storage节点的接口。
115.为了准确反馈glance-storage节点的状态信息,同时为了及时将新扩容或下线的节点反馈给glance-api,glance-storage新增周期性心跳上报机制,定时通过消息队列将心跳信息(即状态信息)传给glance-api。可以通过直接调用openstack的oslo_service公共库定义该周期性任务,上报的周期中包括节点信息、节点状态、时间戳等状态信息,glance-api接收后将这些状态信息更新到数据库中的数据表中。
116.接着,引入消息队列用于管理面和数据面之间的消息传递:消息队列主要用于删除镜像文件时消息的传递,上传、下载镜像文件时镜像元数据的更新,以及glance-storage的周期性心跳上报。
117.再者,将镜像服务管理面和数据库读写服务整合:将glance-registry服务废弃,将其整体功能整合进新的glance-api服务中。
118.最后,镜像服务数据面和对接后端的驱动层整合:将驱动程序全部整合进新增的glance-storage服务中,负责镜像文件数据流的传输和后端driver的管理。
119.本技术实施例可以实现管理面数据面解耦,数据库读写服务与glance-api服务整合,后端驱动与数据面服务整合,同时引入消息队列,实现服务之间的交互。
120.本技术实施例提出一种openstack镜像文件上传方法,所述方法包括以下步骤:
121.步骤s51:客户端调用glance-api服务创建镜像元数据,glance-api将镜像元数据返回给客户端。
122.步骤s52:客户端调用glance-api的glance-storage节点列表接口,获取当前可用的glance-storage节点列表。
123.步骤s53:客户端随机选择一个可用的glance-storage节点,调用glance-storage节点镜像文件上传接口,上传镜像文件上传请求,所述镜像文件上传请求中包括待上传的镜像文件,同时将获得的镜像元数据同步传递。
124.步骤s54:glance-storage收到镜像文件上传请求后,先通过消息队列更新镜像的状态为“saving”。
125.步骤s55:glance-storage进行存储后端驱动的初始化,并调用后端驱动将镜像文件上传至后端,同时获取镜像状态,大小,校验码以及存储地址信息等元数据。
126.步骤s56:glance-storage通过消息队列中的call方法将镜像元数据发给glance-api服务的更新函数update进行更新,更新完成后将call消息的回调队列回复结果返回给客户端,完成本次镜像文件上传。
127.本技术实施例提出将openstack镜像管理服务管理面与数据面分离以适应公有云场景下分布式部署和弹性扩缩容的需求;使用消息队列对镜像管理服务的后端存储服务glance-storage进行节点状态监控以及上报;整合镜像管理服务的api服务与数据库读写服务,实现镜像服务所有管理面业务的整合;整合镜像服务数据面和对接后端的驱动层,减少软件维护成本,降低服务之间的耦合度,同时实现镜像服务所有数据面业务的整合。
128.基于前述的实施例,本技术实施例提供一种镜像管理系统,该镜像管理系统包括
所包括的各服务,可以通过设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(cpu,central processing unit)、微处理器(mpu,microprocessor unit)、数字信号处理器(dsp,digital signal processing)或现场可编程门阵列(fpga,field programmable gate array)等。
129.图11为本技术实施例一种镜像管理系统的组成结构示意图,如图11所示,所述系统1100包括第一服务1101和第二服务1102,其中:
130.所述第一服务1101,用于接收客户端发送的镜像文件传输请求,所述镜像文件传输请求携带镜像文件的第一参数;基于所述第一参数,在数据库中管理所述镜像文件的元数据,并将管理后的元数据发送至所述客户端;
131.其中,所述客户端调用第二目标服务1102的传输接口,将所述镜像文件传输请求和所述管理后的元数据上传至所述第二目标服务1102;所述第二目标服务1102为从所述镜像管理系统的至少一个第二服务中选择的服务;
132.所述第二目标服务1102,用于调用初始化后的驱动程序,基于所述镜像文件传输请求,在所述第二目标服务1102和后端之间进行所述镜像文件的传输;获取更新完成的元数据,并将更新完成的元数据发送至所述第一服务1101,以供所述第一服务1101更新所述数据库中的元数据。
133.在一些实施例中,所述镜像文件传输请求包括镜像文件上传请求,所述镜像文件上传请求还携带待上传的所述镜像文件;所述第一服务,用于基于所述第一参数,在数据库中创建所述镜像文件的元数据;其中,所述客户端调用第二目标服务的上传接口,将所述镜像文件上传请求和创建完成的元数据上传至所述第二目标服务;所述第二目标服务,用于调用初始化后的驱动程序,将所述镜像文件上传至后端。
134.在一些实施例中,所述镜像文件传输请求包括镜像文件下载请求;所述第一服务,用于基于所述第一参数,更新数据库中所述镜像文件的元数据;所述客户端调用第二目标服务的下载接口,将所述镜像文件下载请求和更新完成的元数据上传至所述第二目标服务;所述第二目标服务,用于调用初始化后的驱动程序,从后端下载所述镜像文件。
135.在一些实施例中,所述第一服务,还用于接收客户端发送的镜像文件删除请求;所述镜像文件删除请求携带所述镜像文件的第二参数;基于所述第二参数,在所述数据库中更新所述镜像文件的元数据,并将更新完成的元数据至所述客户端;调用所述第二目标服务的删除函数,将所述镜像文件删除请求和所述更新完成的元数据上传至所述第二目标服务;所述第二目标服务,还用于调用初始化后的驱动程序,从后端删除所述镜像文件;获取再更新完成的元数据,并将再更新完成的元数据发送至所述第一服务,以供所述第一服务更新所述数据库中的元数据。
136.在一些实施例中,所述客户端,用于调用所述第一服务的节点列表接口,从所述数据库的数据表中查询可用的第二服务;所述数据表基于至少一个第二服务上报的状态信息生成;从所述可用的第二服务中选择第二目标服务。
137.在一些实施例中,每一所述第二服务,用于通过消息队列的单向请求方法cast将对应第二服务的状态信息上报至所述第一服务;通过消息队列的请求与响应方法call调用所述第一服务的更新函数,更新所述数据库中所述镜像文件的元数据;所述第一服务,用于通过消息队列的所述call方法调用第二目标服务的删除函数。
138.在一些实施例中,所述第一服务,用于基于所述第一参数,调用自身的数据库访问接口,在数据库中管理所述镜像文件的元数据。
139.在一些实施例中,所述第二目标服务,还用于对所述驱动程序进行初始化;调用自身初始化后的驱动程序,基于所述镜像文件传输请求,在所述第二目标服务和后端之间进行所述镜像文件的传输。
140.需要说明的是,本技术实施例中,如果以软件功能模块的形式实现上述的镜像管理方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备(可以是手机、平板电脑、台式机、个人数字助理、导航仪、数字电话、视频电话、电视机、传感设备等)执行本技术各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本技术实施例不限制于任何特定的硬件和软件结合。
141.以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本技术装置实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
142.对应地,本技术实施例提供一种设备,图12为本技术实施例设备的一种硬件实体示意图,如图12所示,该电子设备1200的硬件实体包括:包括存储器1201和处理器1202,所述存储器1201存储有可在处理器1202上运行的计算机程序,所述处理器1202执行所述程序时实现上述实施例镜像管理方法中的步骤。
143.存储器1201配置为存储由处理器1202可执行的指令和应用,还可以缓存待处理器1202以及设备1200中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(flash)或随机访问存储器(random access memory,ram)实现。
144.对应地,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中提供的镜像管理方法中的步骤。
145.这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同设备实施例相似的有益效果。对于本技术存储介质和方法实施例中未披露的技术细节,请参照本技术设备实施例的描述而理解。
146.应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本技术的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
147.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有
的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
148.在本技术所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
149.上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。另外,在本技术各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
150.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(read only memory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。或者,本技术上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得计算机设备(可以是手机、平板电脑、台式机、个人数字助理、导航仪、数字电话、视频电话、电视机、传感设备等)执行本技术各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。
151.本技术所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。本技术所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。本技术所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
152.以上所述,仅为本技术的实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
技术特征:
1.一种镜像管理方法,其特征在于,应用于镜像管理系统,所述方法包括:所述镜像管理系统的第一服务接收客户端发送的镜像文件传输请求,所述镜像文件传输请求携带镜像文件的第一参数;所述第一服务基于所述第一参数,在数据库中管理所述镜像文件的元数据,并将管理后的元数据发送至所述客户端;所述客户端调用第二目标服务的传输接口,将所述镜像文件传输请求和所述管理后的元数据上传至所述第二目标服务;所述第二目标服务为从所述镜像管理系统的至少一个第二服务中选择的服务;所述第二目标服务调用初始化后的驱动程序,基于所述镜像文件传输请求,在所述第二目标服务和后端之间进行所述镜像文件的传输;所述第二目标服务获取更新完成的元数据,并将更新完成的元数据发送至所述第一服务,以供所述第一服务更新所述数据库中的元数据。2.根据权利要求1所述的方法,其特征在于,所述镜像文件传输请求包括镜像文件上传请求,所述镜像文件上传请求还携带待上传的所述镜像文件;所述第一服务基于所述第一参数,在数据库中管理所述镜像文件的元数据,包括:所述第一服务基于所述第一参数,在数据库中创建所述镜像文件的元数据;所述客户端调用第二目标服务的传输接口,将所述镜像文件传输请求和所述管理后的元数据上传至所述第二目标服务,包括:所述客户端调用第二目标服务的上传接口,将所述镜像文件上传请求和创建完成的元数据上传至所述第二目标服务;所述第二目标服务调用初始化后的驱动程序,基于所述镜像文件传输请求,在所述第二目标服务和后端之间进行所述镜像文件的传输,包括:所述第二目标服务调用初始化后的驱动程序,将所述镜像文件上传至后端。3.根据权利要求1所述的方法,其特征在于,所述镜像文件传输请求包括镜像文件下载请求;所述第一服务基于所述第一参数,在数据库中管理所述镜像文件的元数据,包括:所述第一服务基于所述第一参数,更新数据库中所述镜像文件的元数据;所述客户端调用第二目标服务的传输接口,将所述镜像文件传输请求和所述管理后的元数据上传至所述第二目标服务,包括:所述客户端调用第二目标服务的下载接口,将所述镜像文件下载请求和更新完成的元数据上传至所述第二目标服务;所述第二目标服务调用初始化后的驱动程序,基于所述镜像文件传输请求,在所述第二目标服务和后端之间进行所述镜像文件的传输,包括:所述第二目标服务调用初始化后的驱动程序,从后端下载所述镜像文件。4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:所述第一服务接收客户端发送的镜像文件删除请求;所述镜像文件删除请求携带所述镜像文件的第二参数;所述第一服务基于所述第二参数,在所述数据库中更新所述镜像文件的元数据,并将更新完成的元数据至所述客户端;所述第一服务调用所述第二目标服务的删除函数,将所述镜像文件删除请求和所述更新完成的元数据上传至所述第二目标服务;
所述第二目标服务调用初始化后的驱动程序,从后端删除所述镜像文件;所述第二目标服务获取再更新完成的元数据,并将再更新完成的元数据发送至所述第一服务,以供所述第一服务更新所述数据库中的元数据。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:所述客户端调用所述第一服务的节点列表接口,从所述数据库的数据表中查询可用的第二服务;所述数据表基于至少一个第二服务上报的状态信息生成;所述客户端从所述可用的第二服务中选择第二目标服务。6.根据权利要求5所述的方法,其特征在于,所述方法还包括:每一所述第二服务通过消息队列的单向请求方法cast将对应第二服务的状态信息上报至所述第一服务;所述第二目标服务将更新完成的元数据发送至所述第一服务,包括:所述第二目标服务通过消息队列的请求与响应方法call调用所述第一服务的更新函数,更新所述数据库中所述镜像文件的元数据;所述第一服务调用第二目标服务的删除函数,包括:所述第一服务通过消息队列的所述call方法调用第二目标服务的删除函数。7.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:所述第二目标服务对所述驱动程序进行初始化;所述第二目标服务调用初始化后的驱动程序,包括:所述第二目标服务调用自身初始化后的驱动程序。8.一种镜像管理方法,其特征在于,应用于客户端,所述方法包括:向镜像管理系统的第一服务发送镜像文件传输请求,以供所述第一服务基于所述镜像文件传输请求携带的镜像文件的第一参数,在数据库中管理所述镜像文件的元数据;接收所述第一服务发送的管理后的元数据;调用第二目标服务的传输接口,将所述镜像文件传输请求和所述管理后的元数据上传至所述第二目标服务,以供所述第二目标服务调用初始化后的驱动程序,基于所述镜像文件传输请求,在所述第二目标服务和后端之间进行所述镜像文件的传输;所述第二目标服务获取更新完成的元数据,并将更新完成的元数据发送至所述第一服务,以供所述第一服务更新所述数据库中的元数据;其中,所述第二目标服务为从所述镜像管理系统的至少一个第二服务中选择的服务。9.一种镜像管理系统,其特征在于,所述系统包括:第一服务和第二服务,其中:所述第一服务,用于接收客户端发送的镜像文件传输请求,所述镜像文件传输请求携带镜像文件的第一参数;基于所述第一参数,在数据库中管理所述镜像文件的元数据,并将管理后的元数据发送至所述客户端;其中,所述客户端调用第二目标服务的传输接口,将所述镜像文件传输请求和所述管理后的元数据上传至所述第二目标服务;所述第二目标服务为从所述镜像管理系统的至少一个第二服务中选择的服务;所述第二目标服务,用于调用初始化后的驱动程序,基于所述镜像文件传输请求,在所述第二目标服务和后端之间进行所述镜像文件的传输;获取更新完成的元数据,并将更新完成的元数据发送至所述第一服务,以供所述第一服务更新所述数据库中的元数据。
10.一种电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至8中任一项所述镜像管理方法中的步骤。11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至8中任一项所述镜像管理方法中的步骤。
技术总结
本申请公开了一种镜像管理方法、系统、设备和存储介质,所述方法包括:镜像管理系统的第一服务接收客户端发送的镜像文件传输请求,镜像文件传输请求携带镜像文件的第一参数;第一服务基于第一参数,在数据库中管理镜像文件的元数据,并将管理后的元数据发送至所述客户端;所述客户端调用第二目标服务的传输接口,将所述镜像文件传输请求和所述管理后的元数据上传至所述第二目标服务;所述第二目标服务调用初始化后的驱动程序,基于所述镜像文件传输请求,在所述第二目标服务和后端之间进行所述镜像文件的传输;所述第二目标服务获取更新完成的元数据,并将更新完成的元数据发送至所述第一服务,以供所述第一服务更新所述数据库中的元数据。中的元数据。中的元数据。
技术研发人员:刘小磊
受保护的技术使用者:中国移动通信集团有限公司
技术研发日:2022.06.29
技术公布日:2023/9/23
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/