系统升级方法及采用该方法升级的系统的制作方法

文档序号:6488704阅读:185来源:国知局
系统升级方法及采用该方法升级的系统的制作方法
【专利摘要】本发明的实施例提供一种系统升级方法及采用该方法升级的系统,涉及计算机【技术领域】,缩短系统升级时造成服务中断的时间。该方法包括:当系统的待升级进程接收到升级指令时,暂停所提供的服务;所述待升级进程记录并保存所述待升级进程的检测点信息;所述待升级进程执行升级操作,得到升级后进程;所述升级后进程读取相应的检测点信息,以恢复升级前进程所处状态和所提供的服务。本发明实施例应用于对计算机系统进行升级过程中。
【专利说明】系统升级方法及采用该方法升级的系统
【技术领域】
[0001]本发明涉及计算机【技术领域】,尤其涉及一种系统升级方法及采用该方法升级的系统。
【背景技术】
[0002]目前,一种实现计算机系统升级的方法为:将由旧系统处理的服务请求暂时转移到其它系统上,并在旧系统上重新部署新版本的服务,以实现将旧系统升级为新系统,之后当新系统上新版本的服务启动后,再将服务请求迁移回来,由新系统继续处理服务请求。
[0003]然而,采用上述方法实现系统升级时,由于服务请求的来回迁移,造成服务中断的时间较长。

【发明内容】

[0004]本发明的实施例提供一种系统升级方法及采用该方法升级的系统,缩短系统升级时造成服务中断的时间。
[0005]为达到上述目的,本发明的实施例采用如下技术方案:
[0006]一方面,提供一种系统升级方法,包括:
[0007]当系统的待升级进程接收到升级指令时,暂停所提供的服务;
[0008]所述待升级进程记录并保存所述待升级进程的检测点信息,所述检测点信息包括所述待升级进程当前所处状态的相关信息;
[0009]所述待升级进程执行升级操作,得到升级后进程,所述待升级进程和升级后进程两者的进程标识相同,且两者各自与其他进程之间的关系相同;
[0010]所述升级后进程读取相应的检测点信息,以恢复升级前进程所处状态和所提供的服务。
[0011]一种可能的实现方式中,所述待升级进程记录所述待升级进程的检测点信息包括:
[0012]待升级进程采用指定序列化工具记录所述待升级进程的检测点信息。
[0013]一种可能的实现方式中,所述待升级进程保存所述待升级进程的检测点信息包括:待升级进程在内存中保存所述待升级进程的检测点信息;
[0014]所述升级后进程读取相应的检测点信息包括:升级后进程从内存中读取相应的检测点信息。
[0015]一种可能的实现方式中,所述待升级进程执行exec系统调用,得到升级后进程所,述exec系统调用的参数为所述待升级进程的新二进制文件的名称。
[0016]另一方面,提供一种计算机系统,所述计算机系统包括待升级进程模块,
[0017]所述待升级进程模块用于,在接收到升级指令时,暂停所提供的服务;
[0018]所述待升级进程模块还用于,记录并保存所述待升级进程模块的检测点信息,所述检测点信息包括所述待升级进程模块当前所处状态的相关信息;[0019]所述待升级进程模块还用于,执行升级操作,得到升级后进程模块,所述待升级进程模块和升级后进程模块两者的进程模块标识相同,且两者各自与其他进程模块之间的关系相同;
[0020]所述升级后进程模块,还用于读取相应的检测点信息,以恢复升级前进程模块所处状态和所提供的服务。
[0021]一种可能的实现方式中,所述待升级进程模块用于采用指定序列化工具记录所述待升级进程模块的检测点信息。
[0022]一种可能的实现方式中,所述待升级进程模块用于在内存中保存所述待升级进程模块的检测点信息;升级后进程模块用于从内存中读取相应的检测点信息。
[0023]一种可能的实现方式中,所述待升级进程模块用于执行exec系统调用,得到升级后进程模块,所述exec系统调用的参数为所述待升级进程模块的新二进制文件的名称。
[0024]通过上述技术方案,系统的待升级进程接收到升级指令时,暂停所提供的服务;记录并保存所述待升级进程的检测点信息,执行升级操作,得到升级后进程,之后,由所述升级后进程读取相应的检测点信息,以恢复升级前进程所处状态和所提供的服务。由于所述待升级进程和升级后进程两者的进程标识相同,且两者各自与其他进程之间的关系相同,亦即,相当于所述待升级进程完成了自身的升级,因而,所述升级后进程读取相应的检测点信息之后,无需再重新建立与其他进程之间的关系(由于服务有可能需要多个进程之间的交互配合才能完成,因而,在恢复中断的服务之前,需要先恢复各个进程之间的关系),可以立即开始提供服务。当系统中的各个待升级进程均完成升级后,亦即系统的升级也随之完成。同时,由于进程的升级均在内存中进行,因而整个系统升级造成的服务暂停可以控制在毫秒内,与现有技术中需要将服务请求在两个系统之间进行迁移相比,大大缩短了系统升级时造成的服务中断时间。
【专利附图】

【附图说明】
[0025]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0026]图1为本发明实施例1提供的一种系统升级方法的流程图;
[0027]图2为本发明实施例1提供的另一种系统升级方法的流程图;
[0028]图3为本发明实施例2提供的一种计算机系统的结构示意图。
【具体实施方式】
[0029]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0030]实施例1
[0031]如图1所示,本发明实施例提供一种系统升级方法,包括:[0032]101、当系统的待升级进程接收到升级指令时,暂停所提供的服务。
[0033]其中,一个系统中运行有多个不同的进程,每个进程均为操作系统中一个正在运行中的程序。进程处于运行状态时,可以为用户提供该进程对应的服务。
[0034]其中,待升级进程接收到的升级指令可以由用户采用升级工具(例如,shell脚本)发出。升级指令的形式可以采用但不限于操作系统内部自定义的信号量,例如SIGUSR1和SI⑶SR2。
[0035]本文中对系统的升级是通过对各个待升级进程的升级来完成的,亦即当各个待升级进程均完成升级后,系统的升级也随之完成。
[0036]本文中的系统为终端上运行的计算机操作系统,该终端可以为提供一定服务的电子产品终端。例如,通信终端、提供一定服务的服务器和客户端等等。
[0037]102、所述待升级进程记录并保存所述待升级进程的检测点信息,以便于该待升级进程完成升级后,可以重新读取该检测点信息,来快速回复到升级前所处的状态。
[0038]其中,所述检测点信息包括所述待升级进程当前所处状态的相关信息。
[0039]例如,所述检测点信息可以用于记录待升级进程是处于就绪状态,准备提供服务;还是处于运行状态,正在提供服务,又或者是阻塞状态,在等待某种条件(如I/O操作或进程同步)满足之后,继续提供服务。
[0040]所述检测点信息还可以记录如果待升级进程处于运行状态,那么当前提供的服务对象、服务类型、服务的进展等信息。
[0041]103、所述待升级进程执行升级操作,得到升级后进程,所述待升级进程和升级后进程两者的进程标识相同,且两者各自与其他进程之间的关系相同。
[0042]104、所述升级后进程读取相应的检测点信息,以恢复升级前进程所处状态和所提供的服务。
[0043]本实施例中,所述待升级进程和升级后进程两者的进程标识相同,且两者各自与其他进程之间的关系相同,亦即,相当于所述待升级进程完成了自身的升级,因而,所述升级后进程读取相应的检测点信息之后,无需再重新建立与其他进程之间的关系(由于服务有可能需要多个进程之间的交互配合才能完成,因而,在恢复中断的服务之前,需要先恢复各个进程之间的关系),可以立即开始提供服务。当系统中的各个待升级进程均完成升级后,亦即系统的升级也随之完成。同时,由于进程的升级均在内存中进行,因而整个系统升级造成的服务暂停可以控制在毫秒内,与现有技术中需要将服务请求在两个系统之间进行迁移相比,大大缩短了系统升级时造成的服务中断时间。
[0044]一种可能的实现方式中,如图2所示,上述步骤102中所述待升级进程记录所述待升级进程的检测点信息具体可以采用如下步骤实现:1020、待升级进程采用指定序列化工具记录所述待升级进程的检测点信息。
[0045]其中,指定序列化工具例如可以为protobuf序列化工具。
[0046]上述步骤102中所述待升级进程保存所述待升级进程的检测点信息具体可以替换为:步骤1020、待升级进程在内存中保存所述待升级进程的检测点信息。上述步骤104中所述升级后进程读取相应的检测点信息可以替换为:步骤1040、升级后进程从内存中读取相应的检测点信息。
[0047]将所述检测点信息保存在内存中,而不是保存在外置存储器中,可以缩短后续升级后进程读取检测点信息的时间,进而可以进一步缩短进程升级的时间。
[0048]一种可能的实现方式中,如图2所示,上述步骤103中所述待升级进程执行升级操作,得到升级后进程可通过如下方式实现:所述待升级进程执行exec系统调用,所述exec系统调用的参数为所述待升级进程的新二进制文件的名称。
[0049]为了更好的理解上述exec系统调用,下面对进程空间和进程的二进制文件进行介绍如下:
[0050]该进程空间是操作系统为进程在内存中分配的虚拟空间,用于提供给进程运行时使用。该进程的二进制文件表示进程的静态实体,可以存储在磁盘上。当操作系统将该二进制文件加载到对应的进程空间时,则变为动态的实体,即为进程。
[0051]在升级前,用户需要将待升级进程的新二进制文件替换掉现有的旧二进制文件。该新二进制文件可以采用与旧二进制文件相同的名称。
[0052]上述exec系统调用可以通过指定文件的名称找到可执行文件,并执行该可执行文件。该可执行文件可以为二进制文件。因而,当待升级进程执行该exec系统调用时,亦即在该待升级进程内部执行了该新的二进制文件,可以将新二进制文件更新到所述待升级进程的进程空间,以覆盖掉升级前的旧二进制文件,从而实现了进程自身的升级。亦即该exec系统调用执行完成之后,进程即变为升级后的进程了。与此同时,进程在升级前后的标识及与其他进程之间的关系均没有发生变更,为后续快速恢复升级前进程所处状态提供了便利。
[0053]实施例2:
[0054]本发明实施例提供一种计算机系统,所述计算机系统中运行有若干进程模块,其中存在至少一个进程模块为待升级进程模块,如图3所示的一种应用场景中,该计算系统中的进程模块2和进程模块η均为待升级模块,每个待升级模块均具有如下功能,下面以一个待升级模块为例进行说明:
[0055]所述待升级进程模块用于,在接收到升级指令时,暂停所提供的服务;
[0056]其中,待升级进程模块接收到的升级指令可以由用户采用升级工具(例如,shell脚本)发出。升级指令的形式可以采用但不限于操作系统内部自定义的信号量。
[0057]所述待升级进程模块还用于,记录并保存所述待升级进程模块的检测点信息,所述检测点信息包括所述待升级进程模块当前所处状态的相关信息;
[0058]例如,所述检测点信息可以用于记录待升级进程模块是处于就绪状态,准备提供服务;还是处于运行状态,正在提供服务,又或者是阻塞状态,在等待某种条件(如I/o操作或进程模块同步)满足之后,继续提供服务。
[0059]所述检测点信息还可以记录如果待升级进程模块处于运行状态,那么当前提供的服务对象、服务类型、服务的进展等信息。
[0060]所述待升级进程模块还用于,执行升级操作,得到升级后进程模块,所述待升级进程模块和升级后进程模块两者的进程模块标识相同,且两者各自与其他进程模块之间的关系相同;
[0061]所述升级后进程模块,用于读取相应的检测点信息,以恢复升级前进程模块所处状态和所提供的服务。
[0062]本实施例中,系统的待升级进程模块接收到升级指令时,暂停所提供的服务;记录并保存所述待升级进程模块的检测点信息,执行升级操作,得到升级后进程模块,之后,由所述升级后进程模块读取相应的检测点信息,以恢复升级前进程模块所处状态和所提供的服务。由于所述待升级进程模块和升级后进程模块两者的进程模块标识相同,且两者各自与其他进程模块之间的关系相同,亦即,相当于所述待升级进程模块完成了自身的升级,因而,所述升级后进程模块读取相应的检测点信息之后,无需再重新建立与其他进程模块之间的关系(由于服务有可能需要多个进程模块之间的交互配合才能完成,因而,在恢复中断的服务之前,需要先恢复各个进程模块之间的关系),可以立即开始提供服务。当系统中的各个待升级进程模块均完成升级后,亦即系统的升级也随之完成。同时,由于进程模块的升级均在内存中进行,因而整个系统升级造成的服务暂停可以控制在毫秒内,与现有技术中需要将服务请求在两个系统之间进行迁移相比,大大缩短了系统升级时造成的服务中断时间。
[0063]一种可能的实现方式中,所述待升级进程模块用于采用指定序列化工具记录所述待升级进程模块的检测点信息。其中,指定序列化工具例如可以为protobuf序列化工具。
[0064]—种可能的实现方式中,所述待升级进程模块用于在内存中保存所述待升级进程模块的检测点信息;升级后进程模块用于从内存中读取相应的检测点信息。
[0065]将所述检测点信息保存在内存中,而不是保存在外置存储器中,可以缩短后续升级后进程模块读取检测点信息的时间,进而可以进一步缩短进程模块升级的时间。
[0066]—种可能的实现方式中,所述待升级进程模块用于执行exec系统调用,得到升级后进程模块,所述exec系统调用的参数为所述待升级进程模块的新二进制文件的名称。
[0067]上述 exec系统调用可以通过指定文件的名称找到可执行文件,并执行该可执行文件。该可执行文件可以为二进制文件。因而,当待升级进程模块执行该exec系统调用时,亦即在该待升级进程模块内部执行了该新的二进制文件,可以将新二进制文件更新到所述待升级进程模块的进程模块空间,以覆盖掉升级前的旧二进制文件,从而实现了进程模块自身的升级。亦即该exec系统调用执行完成之后,进程模块即变为升级后的进程模块了。与此同时,进程模块在升级前后的标识及与其他进程模块之间的关系均没有发生变更,为后续快速恢复升级前进程模块所处状态提供了便利。
[0068]本文中的系统为终端上运行的计算机操作系统,该终端可以为提供一定服务的电子产品终端。例如,通信终端、提供一定服务的服务器和客户端等等。
[0069]通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0070]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
【权利要求】
1.一种系统升级方法,其特征在于,包括: 当系统的待升级进程接收到升级指令时,暂停所提供的服务; 所述待升级进程记录并保存所述待升级进程的检测点信息,所述检测点信息包括所述待升级进程当前所处状态的相关信息; 所述待升级进程执行升级操作,得到升级后进程,所述待升级进程和升级后进程两者的进程标识相同,且两者各自与其他进程之间的关系相同; 所述升级后进程读取相应的检测点信息,以恢复升级前进程所处状态和所提供的服务。
2.根据权利要求1所述的,其特征在于,所述升级指令采用操作系统内部自定义的信号量表不。
3.根据权利要求1所述的,其特征在于,所述待升级进程记录所述待升级进程的检测点信息包括:待升级进程采用指定序列化工具记录所述待升级进程的检测点信息。
4.根据权利要求1所述的方法,其特征在于,所述待升级进程保存所述待升级进程的检测点信息包括:待升级进程在内存中保存所述待升级进程的检测点信息; 所述升级后进程读取相应的检测点信息包括:升级后进程从内存中读取相应的检测点信息。
5.根据权利要求1所述的方法,其特征在于,所述待升级进程执行升级操作,得到升级后进程包括: 所述待升级进程执行exec系统调用,得到升级后进程,所述exec系统调用的参数为所述待升级进程的新二进制文件的名称。
6.一种计算机系统,其特征在于,包括待升级进程模块, 所述待升级进程模块用于,在接收到升级指令时,暂停所提供的服务; 所述待升级进程模块还用于,记录并保存所述待升级进程模块的检测点信息,所述检测点信息包括所述待升级进程模块当前所处状态的相关信息; 所述待升级进程模块还用于,执行升级操作,得到升级后进程模块,所述待升级进程模块和升级后进程模块两者的进程模块标识相同,且两者各自与其他进程模块之间的关系相同; 所述升级后进程模块,还用于读取相应的检测点信息,以恢复升级前进程模块所处状态和所提供的服务。
7.根据权利要求6所述的计算机系统,其特征在于,所述升级指令采用操作系统内部自定义的信号量表不。
8.根据权利要求6所述的计算机系统,其特征在于,所述待升级进程模块用于采用指定序列化工具记录所述待升级进程模块的检测点信息。
9.根据权利要求6所述的计算机系统,其特征在于,所述待升级进程模块用于在内存中保存所述待升级进程模块的检测点信息; 升级后进程模块用于从内存中读取相应的检测点信息。
10.根据权利要求6所述的计算机系统,其特征在于,所述待升级进程模块用于执行exec系统调用,得到升级后进程模块,所述exec系统调用的参数为所述待升级进程模块的新二进制文件的名称。
【文档编号】G06F9/445GK103677870SQ201210332222
【公开日】2014年3月26日 申请日期:2012年9月10日 优先权日:2012年9月10日
【发明者】严俊明, 马博, 陈卓, 罗韩梅, 林恬 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1