虚拟机管理服务模块热升级的方法和设备与流程

文档序号:13297251阅读:242来源:国知局
虚拟机管理服务模块热升级的方法和设备与流程

本申请涉及计算机领域,尤其涉及一种虚拟机管理服务模块热升级的技术。



背景技术:

虚拟化平台因其较佳地性能以及灵活快捷的服务能力成为互联领域的技术发展主流,在xen中(一种开放源代码虚拟化平台)中,xend(一种开放源代码虚拟化平台)作为vm(virtualmachine,虚拟机)生命周期中最重要的模块,它决定着vm创建、关闭、销毁等操作能否顺利完成。同时,它也是整个控制系统当中不可缺少的一环。

xend(xen中用来管理所有虚拟机的一个服务,虚拟机管理服务模块)以daemon进程(后台进程)的方式运行在物理服务器上,它里面主要包含了两个服务:httpserver(超文本传输协议服务)和xmlrpcserver(基于标准通用标记语言的远程过程调用协议服务)。这两个服务分别来处理libvirt(虚拟化工具接口库)和xm命令(xen的管理基本工具,包括开启、重启、关闭xen)发来的操作请求。那么从server层面来说,传统的热升级方法是每个server起两个进程,这两个进程之交替退出进行升级。这样做的前提是两server个进程之间是独立的,没有什么数据交互。但是对xend来说,在xend起来的过程,会给vm注册一些回调事件,同时里面还有一些定时任务。如果多次注册同一个事件就会引起数据的不一致。比如vmrelease事件(vm释放事件),如果多次释放同一个就会造成xendcore掉(崩溃)。

随着云集群规模的不断增大和整个控制系统版本迭代速度的加快,xend无法热升级已经成为其中最明显的短板。每次的xend版本迭代,我们都必须要关闭售卖以及限制用户相关操作来防止vm操作失败。这样不仅影响了用户体验,同时也给运维加重了不少负担。



技术实现要素:

本申请的目的是提供一种能够实现虚拟机管理服务模块热升级的方法和设备,以解决现有技术中虚拟机管理服务模块无法热升级的问题。

根据本申请的一个方面,提供了一种用于虚拟机管理服务模块热升级的方法,包括:

利用虚拟机管理服务模块进程创建请求接收线程和请求处理线程,其中,所述请求接收线程在热升级中持续接收服务请求;

创建处理线程管理单元;

由所述处理线程管理单元管理热升级期间所述请求处理线程的退出和新启动。

进一步地,利用虚拟机管理服务模块进程创建请求接收线程和请求处理线程,其中,所述请求接收线程用于持续接收服务请求、进行解析和编码、并将编码后的所述服务请求发送至消息栈,所述请求处理线程从所述消息栈中提取编码后的所述服务请求并处理所述服务请求。

进一步地,所述请求接收线程用于包括:

持续接收服务请求;

解析所述服务请求是否为正常请求,若否则反馈错误,若是则对所述服务请求进行编码;

将编码后的所述服务请求发送至所述消息栈。

进一步地,所述请求处理线程用于包括:

从所述消息栈中提取编码后的所述服务请求;

对编码后的所述服务请求进行解码处理;

解析解码处理后的所述服务请求,并查询所述服务请求对应的方法是否存在,若存在,则处理所述服务请求。

进一步地,所述处理线程管理单元管理热升级期间所述请求处理线程的退出和新启动包括:

接收热升级通知;

基于热升级通知触发服务处理进程的请求处理线程退出;

待所述请求处理线程退出后,判断其退出类型,若为热升级退出类型, 则启动新请求处理线程。

进一步地,待所述请求处理线程退出后,判断其退出类型,若为热升级退出类型,则启动新请求处理线程还包括:

启动新请求处理线程后,由所述新请求处理线程从所述消息栈中提取解析后的所述服务请求。

进一步地,基于热升级通知触发服务处理进程的请求处理线程退出还包括:

等待所述请求处理线程检查当前是否正在处理所述服务请求,若是则等待直至处理完毕后退出。

进一步地,所述方法还包括:

在启动所述新请求处理线程后,重新注册所有存活的监控事件。

进一步地,所述方法还包括:

将虚拟机管理服务模块相关主逻辑处理模块的引用类型设置为服务请求处理线程引用类型。

进一步地,所述虚拟机管理服务模块包括超文本传输协议服务处理进程及基于标准通用标记语言的远程过程调用协议服务处理进程中至少任一种。

根据本申请的另一个方面,提供了一种用于虚拟机管理服务模块热升级的设备,其中,所述设备包括:

线程创建装置,用于利用虚拟机管理服务模块进程创建请求接收线程和请求处理线程,其中,所述请求接收线程在热升级中持续接收服务请求;

管理创建装置,用于创建处理线程管理单元;

所述处理线程管理装置,用于由所述处理线程管理单元管理热升级期间所述请求处理线程的退出和新启动;

进一步地,所述线程创建装置用于利用虚拟机管理服务模块进程创建请求接收线程和请求处理线程,其中,

所述请求接收线程用于持续接收服务请求、进行解析和编码、并将编码后的所述服务请求发送至消息栈,所述请求处理线程从所述消息栈中提取编码后的所述服务请求并处理所述服务请求。

进一步地,所述请求接收线程用于包括:

持续接收服务请求;

解析所述服务请求是否为正常请求,若否则反馈错误,若是则对所述服务请求进行编码;

将编码后的所述服务请求发送至所述消息栈。

进一步地,所述请求处理线程用于包括:

从所述消息栈中提取编码后的所述服务请求;

对编码后的所述服务请求进行解码处理;

解析解码处理后的所述服务请求,并查询所述服务请求对应的方法是否存在,若存在,则处理所述服务请求。

进一步地,所述处理线程管理装置包括:

接收单元,用于接收热升级通知;

触发单元,用于基于所述热升级通知触发服务处理进程的请求处理线程退出;

启动单元,用于待所述请求处理线程退出后,判断其退出类型,若为热升级退出类型,则启动新请求处理线程。

进一步地,所述启动单元还用于:

在启动新请求处理线程后,调用所述新请求处理线程从所述消息栈中提取解析后的所述服务请求。

进一步地,所述触发单元还包括:

等待所述请求处理线程检查当前是否正在处理所述服务请求,若是则等待直至处理完毕后退出。

进一步地,所述设备还包括:

注册装置,用于在启动所述新请求处理线程后,重新注册所有存活的监控事件。

进一步地,所述方法还包括:设置装置,用于将虚拟机管理服务模块相关主逻辑处理模块的引用类型设置为服务请求处理线程引用类型。

进一步地,所述虚拟机管理服务模块包括超文本传输协议服务处理进程及基于标准通用标记语言的远程过程调用协议服务处理进程中至少任 一种。

相比于现有技术,本申请实施例所述的所述用于虚拟机管理服务模块热升级的方法和设备,通过对服务请求处理进程进行改进,将服务请求接收线程和服务请求处理线程独立开来,将服务请求的接收和服务请求的处理改为多线程处理,并将服务请求的主要处理逻辑由全局引用类型更改为服务请求处理线程引用类型,虚拟机管理服务模块的热升级阶段,服务请求接收线程持续接收服务请求,并进行解析和编码后发送至消息栈,服务请求处理线程退出并启动新服务请求处理线程后,主要处理逻辑随之重新加载,完成升级。

进一步地,通过处理线程对服务请求处理线程进行管理,当接受到热升级信号时,会通知服务请求处理线程退出,并在其退出后根据退出类型进行判断,当为热升级类型则启动新服务请求处理线程,去处理消息栈中的服务请求,同时对物理服务器上所有活的虚拟机的监控事件进行重新注册。从而实现了无消息丢失地对虚拟机管理服务模块进行热升级。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出根据本申请一个方面提供的用于虚拟机管理服务模块热升级的方法流程示意图;

图2示出根据本申请一具体场景中虚拟机管理服务模块的模块结构示意图;

图3示出根据本申请一优选实施例中虚拟机管理服务模块的数据流示意图;

图4示出根据本申请一优选实施例中所述处理线程管理单元管理热升级期间所述请求处理线程的退出和新启动的流程示意图;

图5示出根据本申请一优选实施例中虚拟机管理服务模块的热升级的流程示意图;

图6示出根据本申请另一个方面提供的用于虚拟机管理服务模块热升 级的方法流程示意图;

图7示出根据本申请一个方面提供的用于虚拟机管理服务模块热升级的设备示意图;

图8示出根据本申请一优选实施例中所述处理线程管理装置的装置示意图;

图9示出根据本申请另一个方面提供的用于虚拟机管理服务模块热升级的设备示意图;

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本申请作进一步详细描述。

虚拟机管理服务模块要做到热升级,需在升级过程中保证:1、来自外部的服务请求(如libvirt等)不能丢失;2、来自内部的请求(如内部关机、重启)不能丢失;3、上层控制系统无感知。

本申请通过对两个服务进程进行改进,在服务进程中创建请求接收线程和请求处理线程,将请求的接收和处理独立开来,且请求接收线程和请求处理线程之间通过线程的queue(消息栈)进行交互。同时,引入处理线程管理单元,启动的时候,它会把两个请求处理进程都拉起来。在热升级的时候,处理线程管理单元会给处理线程发退出信号,处理线程接收到信号之后会再次退出到服务请求管理装置。服务请求管理装置会通过退出类型(exitreason)来判断是正常关闭类型还是热升级类型。如果是热升类型,处理线程管理单元会让老的请求服务处理线程退出,然后再起动新的请求服务处理线程。

进一步地,将虚拟机管理服务模块相关主逻辑处理模块的调用类型设置为服务请求处理线程调用类型。由于主逻辑处理模块由全局调用改成了在处理线程调用,所以当新的处理线程起来之后,主逻辑处理模块也随着更新,从而实现热升级。

结合以上,图1示出根据本申请一个方面的用于虚拟机管理服务模块热升级的方法,其中,所述方法包括:

步骤s11:利用虚拟机管理服务模块进程创建请求接收线程和请求处理线程,其中,所述请求接收线程在热升级中持续接收服务请求;

步骤s12:创建处理线程管理单元;

步骤s13:所述处理线程管理单元管理热升级期间所述请求处理线程的退出和新启动。

通常,虚拟机管理服务模块以后台进程(daemon进程)的方式运行在物理服务器上,根据处理不同命令工具发来的操作请求,可以包括多个服务进程,例如超文本传输协议服务进程(httpserver进程)和基于标准通用标记语言的远程过程调用协议服务处理进程(xmlrpcserver进程)等。

图2示出根据本申请一具体场景中虚拟机管理服务模块的模块结构示意图,在一具体场景中,以xend为例,每个xenddaemon(虚拟机管理服务模块进程)主要有三个工作进程,分别为httpserver请求处理进程,xmlrpcserver请求处理进程,和处理线程管理单元进程。每个服务进程的请求接收线程和请求处理线程通过基于线程的消息队列来进行交互。

正常工作的时候,控制系统调用libvirt(虚拟化工具接口库)接口给xend的httpserver发服务请求,服务请求接收线程(requestreceiverofhttpserver)接收服务请求,并将服务请求发送至消息栈(msgqueue),服务请求处理线程(requesthandleofhttpserver)进行vm关机,创建,释放等操作。同时,xend自带的命令行工具(xmcli)会通过xmlrpcserver发送服务请求,服务请求接收线程(requestreceiverofxmlserver)接收服务请求,并将服务请求发送至消息栈(msgqueue),服务请求处理线程(requesthandleofxmlserver)进行虚拟机相关操作。此外,处理线程控制装置(servermanager)管理通过控制所述服务请求处理线程的升级实现xend的热升级工作。

进一步地,在所述步骤s11中,利用虚拟机管理服务模块进程创建请求接收线程和请求处理线程,其中,所述请求接收线程用于持续接收服务请求、进行解析和编码、并将编码后的所述服务请求发送至消息栈,所述请求处理线程从所述消息栈中提取编码后的所述服务请求并处理所述服 务请求。

具体地,通过将服务请求的接收和请求的处理独立开来形成两个接口,服务请求的接收和处理均改由多线程处理,并且服务请求接收线程把接收到的服务请求进行解析和编码成消息栈能识别的对象,并放入消息栈的消息队列中,服务请求处理线程把服务请求对应的对象从消息栈的消息队列中取出来进行解码后处理。

其中,所述请求接收线程持续地接收服务请求;解析所接收的所述服务请求,判断是否为正常请求,若否则反馈错误,若是则对所述服务请求进行编码,若否则返回错误信息;将编码后的所述服务请求发送至所述消息栈。所述请求处理线程持续地从所述消息栈中提取编码后的所述服务请求;对编码后的所述服务请求进行解码处理;解析解码处理后的所述服务请求,并查询所述服务请求对应的方法是否存在,若存在则处理所述服务请求,若不存在则抛错。

由于虚拟机管理服务模块处理服务请求过程中,处理服务请求的主逻辑处理模块由请求处理线程调用,升级过程只需重新启动请求处理线程,请求接收线程在热升级过程中,可持续接收服务请求,并对服务请求进行相应的解析和编码,并发送至消息栈,而请求处理线程在完成热升级后新的请求处理线程从消息栈中获取编码后的服务请求并处理,从而实现不会丢失外部服务请求且能够做到控制层无感知。

图3示出根据本申请一优选实施例中虚拟机管理服务模块的数据流示意图,具体地,以xend工作流程为例,包括:

1、控制系统通过libvirt或者xmcli(命令行工具)发送服务请求。

2、服务请求接收线程会对服务请求进行解析,如果不是正常请求则给请求发起者报错;如果是正常请求,则编码后放到消息栈(msgqueue)中,以待请求处理线程进行处理。

3、服务请求处理线程会一直去消息栈(msgqueue)中取相应的请求对象,然后进行解码。

4、服务请求处理线程会对解码后的服务请求进行分析,如果存在相应的方法则规则匹配(map)到具体处理方法中进行处理,如果没有相应 的方法,则给请求发起者报错。

进一步地,在所述步骤s12中,创建处理线程管理单元。

图4示出根据本申请一优选实施例中所述处理线程管理单元管理热升级期间所述请求处理线程的退出和新启动的流程示意图;其中,所述步骤s13包括:步骤s131、步骤s132和步骤s133。

进一步地,所述步骤s131中,接收热升级通知;所述步骤s132中,基于热升级通知触发服务处理进程的请求处理线程退出;所述步骤s133中,待所述请求处理线程退出后,判断其退出类型,若为热升级退出类型,则启动新请求处理线程。

进一步地,在所述步骤s132中,所述处理线程管理单元等待所述请求处理线程检查当前是否正在处理所述服务请求,若是则等待直至处理完毕后退出。并且,在步骤s133中,所述处理线程管理单元待所述请求处理线程退出后,判断其退出类型,若为热升级退出类型,则启动新请求处理线程还包括:启动新请求处理线程后,由所述新请求处理线程从所述消息栈中提取解析后的所述服务请求。

图5示出根据本申请一优选实施例中虚拟机管理服务模块的热升级的流程示意图,本申请中所述xend热升级的方法包括:

1、热升(xendreload)接口通过发送信号(signal)的方法通知请求处理线程管理单元要进行热升级;

2、处理线程管理单元在接收到热升信号后触发请求服务请求处理线程退出;

3、服务请求处理线程会检查目前是否正在处理请中,如果是则必须等当前正在处理的这个请求处理完成之后才能退出;

4、处理线程退出到处理线程管理单元中,处理线程管理单元通过退出类型,例如获取一个退出信号id(exitsignalid)来判断是热升级还是正常退出(shutdown),如果是正常退出,则直接退出,如果是热升级,则在退出之后再启动新的服务请求处理线程;

5、新的服务请求处理线程会主动去往消息栈里面获取相应的服务请求来进行处理。

在热升级过程中,消息栈持续接收服务请求接收线程解析并发送的服务请求,热升级结束后,新的服务请求处理线程会处理热升级期间积压的服务请求,随后持续处理正常的服务请求,从而确保热升级过程无消息丢失,且实现控制系统无感知。

图6示出根据本申请一优选实施例提供的用于虚拟机管理服务模块热升级的方法,所述方法包括步骤s14’、步骤s11’、步骤s12’、步骤s13’和步骤s15’。

其中,所述步骤s11’、所述步骤s12’和步骤s13’与图1所示的所述步骤s11、所述步骤s12和步骤s13的内容相同或基本相同,为简明起见,不再赘述,并以引用的方式包含于此。

进一步地,所述方法还包括步骤s14’,在步骤s14’中,将虚拟机管理服务模块相关主逻辑处理模块的引用类型设置为服务请求处理线程引用类型。通过将两个需要升级的主逻辑处理模块由原来全局的引用(import)改为只在服务请求处理线程引用类型,即请求处理函数中引用(import),这样才能保证修改的主逻辑处理模块在热升级完成后被重新加载。

进一步地,所述方法还包括步骤s15’,其中,步骤s15’在启动所述新请求处理线程后,重新注册所有存活的监控事件,以监控所述新请求处理线程的事件。

根据本申请另一方面,图7示出根据用于虚拟机管理服务模块热升级的设备,其中,所述设备包括:线程创建装置11、管理创建装置12和处理线程管理装置13。

其中,所述线程创建装置11利用虚拟机管理服务模块进程创建请求接收线程和请求处理线程,其中,所述请求接收线程在热升级中持续接收服务请求;所述管理创建装置12创建处理线程管理单元,所述处理线程管理装置13由所述处理线程管理单元管理热升级期间所述请求处理线程的退出和新启动。

通常,虚拟机管理服务模块以后台进程(daemon进程)的方式运行在物理服务器上,根据处理不同命令工具发来的操作请求,可以包括多个服务进程,例如超文本传输协议服务进程(httpserver进程)和基于标 准通用标记语言的远程过程调用协议服务处理进程(xmlrpcserve进程)等。

如图2所示,以xend为例,每个xenddaemon(虚拟机管理服务模块进程)主要有三个工作进程,分别为httpserver请求处理进程,xmlrpcserve请求处理进程,和处理线程管理单元进程。每个服务进程的请求接收线程和请求处理线程通过基于线程的消息队列来进行交互。

正常工作的时候,控制系统调用libvirt(虚拟化工具接口库)接口给xend的httpserver发服务请求,服务请求接收线程(requestreceiverofhttpserver)接收服务请求,并将服务请求发送至消息栈(msgqueue),服务请求处理线程(requesthandleofhttpserver)进行vm关机,创建,释放等操作。同时,xend自带的命令行工具(xmcli)会通过xmlrpcserve发送服务请求,服务请求接收线程(requestreceiverofxmlserver)接收服务请求,并将服务请求发送至消息栈(msgqueue),服务请求处理线程(requesthandleofxmlserver)进行虚拟机相关操作。此外,处理线程控制装置(servermanager)管理通过控制所述服务请求处理线程的升级实现xend的热升级工作。

进一步地,所述线程创建装置11利用虚拟机管理服务模块进程创建请求接收线程和请求处理线程,其中,所述请求接收线程用于持续接收服务请求、进行解析和编码、并将编码后的所述服务请求发送至消息栈,所述请求处理线程从所述消息栈中提取编码后的所述服务请求并处理所述服务请求。

具体地,通过将服务请求的接收和请求的处理独立开来形成两个接口,服务请求的接收和处理均改由多线程处理,并且服务请求接收线程把接收到的服务请求进行解析和编码成消息栈能识别的对象,并放入消息栈的消息队列中,服务请求处理线程把服务请求对应的对象从消息栈的消息队列中取出来进行解码后处理。

其中,所述请求接收线程持续地接收服务请求;解析所接收的所述服务请求,判断是否为正常请求,若否则反馈错误,若是则对所述服务请求进行编码,若否则返回错误信息;将编码后的所述服务请求发送至所述消 息栈。所述请求处理线程持续地从所述消息栈中提取编码后的所述服务请求;对编码后的所述服务请求进行解码处理;解析解码处理后的所述服务请求,并查询所述服务请求对应的方法是否存在,若存在则处理所述服务请求,若不存在则抛错。

由于虚拟机管理服务模块处理服务请求过程中,处理服务请求的主逻辑处理模块由请求处理线程调用,升级过程只需重新启动请求处理线程,请求接收线程在热升级过程中,可持续接收服务请求,并对服务请求进行相应的解析和编码,并发送至消息栈,而请求处理线程在完成热升级后新的请求处理线程从消息栈中获取编码后的服务请求并处理,从而实现不会丢失外部服务请求且能够做到控制层无感知。

图3示出根据本申请一优选实施例中虚拟机管理服务模块的数据流示意图,具体地,以xend工作流程为例,包括:

1、控制系统通过libvirt或者xmcli(命令行工具)发送服务请求。

2、服务请求接收线程会对服务请求进行解析,如果不是正常请求则给请求发起者报错;如果是正常请求,则编码后放到消息栈(msgqueue)中,以待请求处理线程进行处理。

3、服务请求处理线程会一直去消息栈(msgqueue)中取相应的请求对象,然后进行解码。

4、服务请求处理线程会对解码后的服务请求进行分析,如果存在相应的方法则规则匹配(map)到具体处理方法中进行处理,如果没有相应的方法,则给请求发起者报错。

进一步地,所述管理创建装置12创建处理线程管理单元,所述处理线程管理装置13由所述处理线程管理单元管理热升级期间所述请求处理线程的退出和新启动。

图8示出根据本申请一优选实施例中所述处理线程管理装置的装置示意图;进一步地,所述处理线程管理装置13包括:接收单元131,用于接收热升级通知;触发单元132,用于基于热升级通知触发服务处理进程的请求处理线程退出;启动单元133,用于待所述请求处理线程退出后,判断其退出类型,若为热升级退出类型,则启动新请求处理线程。

进一步地,所述触发单元132还用于等待所述请求处理线程检查当前是否正在处理所述服务请求,若是则等待直至处理完毕后退出。并且,所述启动单元133还用于待所述请求处理线程退出后,判断其退出类型,若为热升级退出类型,则启动新请求处理线程还包括:启动新请求处理线程后,由所述新请求处理线程从所述消息栈中提取解析后的所述服务请求。

如图4所示,以xend为例,虚拟机管理服务模块热升级的方法包括:

1、热升(xendreload)接口通过发送信号(signal)的方法通知请求处理线程管理单元要进行热升级;

2、处理线程管理单元在接收到热升信号后触发请求服务请求处理线程退出;

3、服务请求处理线程会检查目前是否正在处理请中,如果是则必须等当前正在处理的这个请求处理完成之后才能退出;

4、处理线程退出到处理线程管理单元中,处理线程管理单元通过退出类型,例如获取一个退出信号id(exitsignalid)来判断是热升级还是正常退出(shutdown),如果是正常退出,则直接退出,如果是热升级,则在退出之后再启动新的服务请求处理线程;

5、新的服务请求处理线程会主动去往消息栈里面获取相应的服务请求来进行处理。

在热升级过程中,消息栈持续接收服务请求接收线程解析并发送的服务请求,热升级结束后,新的服务请求处理线程会处理热升级期间积压的服务请求,随后持续处理正常的服务请求,从而确保热升级过程无消息丢失,且实现控制系统无感知。

图9示出根据本申请一优选实施例提供的用于虚拟机管理服务模块热升级的方法,所述方法包括设置装置14’、线程创建装置11’、管理创建装置12’、处理线程管理装置13’和注册装置15’。

其中,所述线程创建装置11’、所述管理创建装置12’和处理线程管理装置13’与图6所示的线程创建装置11、管理创建装置12和处理线程管理装置13的内容相同或基本相同,为简明起见,不再赘述,并以引用的方式包含于此。

进一步地,所述方法还包括设置装置14’,设置装置14’将虚拟机管理服务模块相关主逻辑处理模块的引用类型设置为服务请求处理线程引用类型。通过将两个需要升级的主逻辑处理模块由原来全局的引用(import)改为只在服务请求处理线程引用类型,即请求处理函数中引用(import),这样才能保证修改的主逻辑处理模块在热升级完成后被重新加载。

进一步地,所述方法还包括注册装置15’,其中,注册装置15’在启动所述新请求处理线程后,重新注册所有存活的监控事件,以监控所述新请求处理线程的事件。

相比于现有技术,本申请实施例所述的所述用于虚拟机管理服务模块热升级的方法和设备,通过对服务请求处理进程进行改进,将服务请求接收线程和服务请求处理线程独立开来,将服务请求的接收和服务请求的处理改为多线程处理,并将服务请求的主要处理逻辑由全局引用类型更改为服务请求处理线程引用类型,虚拟机管理服务模块的热升级阶段,服务请求接收线程持续接收服务请求,并进行解析和编码后发送至消息栈,服务请求处理线程退出并启动新服务请求处理线程后,主要处理逻辑随之重新加载,完成升级。

进一步地,通过处理线程对服务请求处理线程进行管理,当接受到热升级信号时,会通知服务请求处理线程退出,并在其退出后根据退出类型进行判断,当为热升级类型则启动新服务请求处理线程,去处理消息栈中的服务请求,同时对物理服务器上所有活的虚拟机的监控事件进行重新注册。从而实现了无消息丢失地对虚拟机管理服务模块进行热升级。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序 指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

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