系统服务的重载方法及装置的制造方法

文档序号:10569766阅读:332来源:国知局
系统服务的重载方法及装置的制造方法
【专利摘要】本发明公开了一种系统服务的重载方法及装置。其中,该方法包括:接收用于调用系统服务的调用请求,其中,系统服务中至少包括两条具有相同配置信息的服务进程;根据预先设置的服务重载状态,判断是否对系统服务进行重载,其中,服务重载状态至少包括:开启状态和关闭状态;当服务重载状态为开启状态时,获取与服务进程对应的进程属性,其中,进程属性用于标记创建服务进程的先后顺序;根据进程属性,确定在系统服务中用于应答调用请求的服务进程。本发明解决了由于系统服务重载,导致重载期间内的系统服务时延长的技术问题。
【专利说明】
系统服务的重载方法及装置
技术领域
[0001]本发明涉及互联网领域,具体而言,涉及一种系统服务的重载方法及装置。
【背景技术】
[0002]在各类操作系统中,往往通过运行中的各种系统服务来实现各类功能的。而一些用于提供网络服务的系统服务必须通过重新启动服务进程才能完成配置文件的重新载入或者服务进程的更新。
[0003]以Linux系统中的HAProxy网络服务为例进行说明。此网络服务是通过使用S0_REUSEP0RT选项实现,在将新创建的服务进程绑定到与原始服务进程完全相同的网络地址(IP地址)和网络端口后,开始对新创建服务进程的套接字进行监听,当新创建的服务进程创建后,发送信号通知原始服务进程关闭监听端口的监听套接字(socket)。但是,当新创建的服务进程与原始服务进程都绑定到同一个IP和端口,并且还未关闭对原始服务进程套接字的监听时,一旦有来自外部客户端发送的新的连接请求时,根据现有Linux系统内核中S0_REUSEP0RT选项的实现方法,新连接请求的第一个报文(SYN报文)存在同样的几率被分配到新建服务进程或原始服务进程当中。如果SYN报文被分配到原始服务进程,而紧接着停止对原始进程的套接字进行监听,根据TCP协议,操作系统将发送重置报文(TCP RST报文)至外部设备以重置连接。
[0004]针对上述问题,目前有一些解决方案。例如在服务进程重载期间配置过滤规则(i P tab I e s规则)丢弃掉重载期间新接收到的SYN报文。根据TCP协议,客户端在没有收到SYN/ACK报文一段时间后会重新发送SYN报文以重新连接。通过上述方案,虽然新连接不会被重置,但是客户端等待连接超时并重新发送SYN报文的时间很长,通常在I秒以上。而服务进程的重载时间往往只需要几十毫秒,带来了较长时间的时延。
[0005]另一中解决方案,可以利用Linux的流量控制工具(TC,TrafficControI)解决。首先,使用过滤规则标记客户端发送的新的SYN报文,再用TC暂时缓存上述SYN报文。在对服务进程完成重载之后,再释放上述TC缓存的SYN报文。上述方案虽然时间时延相对较短。但是,由于TC工具只能用于控制流出的数据流量,因而使用场景受到了一定的限制。
[0006]针对上述由于系统服务重载,导致重载期间内的系统服务时延长的问题,目前尚未提出有效的解决方案。

【发明内容】

[0007]本发明实施例提供了一种系统服务的重载方法及装置,以至少解决由于系统服务重载,导致重载期间内的系统服务时延长的技术问题。
[0008]根据本发明实施例的一个方面,提供了一种重载方法,包括:接收用于调用系统服务的调用请求,其中,上述系统服务中至少包括两条具有相同配置信息的服务进程,上述配置信息至少用于记录端口信息和套接字信息;根据预先设置的服务重载状态,判断是否对上述系统服务进行重载,其中,上述服务重载状态至少包括:开启状态和关闭状态;当上述服务重载状态为上述开启状态时,获取与上述服务进程对应的进程属性,其中,上述进程属性用于标记创建上述服务进程的先后顺序;根据上述进程属性,确定在上述系统服务中用于应答上述调用请求的上述服务进程。
[0009]进一步地,在接收用于调用系统服务的调用请求之前,上述方法还包括:获取正在运行中的第一服务进程的上述配置信息,其中,上述配置信息至少包括与上述第一服务进程对应的套接字;根据上述配置信息,创建第二服务进程;将上述服务重载状态设置为上述开启状态;以及,在根据上述进程属性,确定在上述系统服务中用于应答上述调用请求的上述服务进程之后,上述方法还包括:设置上述服务重载状态为上述关闭状态;结束未用于应答上述调用请求的上述服务进程。
[0010]进一步地,当上述进程属性通过字符参数实现时,在根据上述配置信息,创建第二服务进程之后,上述方法还包括:在与上述第二服务进程对应的上述配置信息中设置上述字符参数,其中,上述字符参数用于对新创建的上述服务进程的套接字进行标记。
[0011]进一步地,根据上述进程属性,确定在上述系统服务中用于应答上述调用请求的上述服务进程,包括:根据上述字符参数对上述系统服务中的上述服务进程进行运算处理,得到与上述服务进程对应的进程运算值;根据上述运算计算值,确定用于应答上述调用请求的上述服务进程。
[0012]进一步地,根据上述字符参数对上述系统服务中的上述服务进程进行运算处理包括:根据上述字符参数对上述系统服务中的上述服务进程进行加权运算;和/或根据上述字符参数对上述系统服务中的上述服务进程进行累加运算。
[0013]进一步地,当上述服务重载状态为上述关闭状态时,上述方法还包括:对上述第二服务进程的套接字的标记进行还原重置处理。
[0014]进一步地,当上述进程属性通过用于描述服务进程的创建时间的时间参数实现时,根据上述进程属性,确定在上述系统服务中用于应答上述调用请求的上述服务进程包括:将所有服务进程的时间参数分别与系统重启时间进行比较;根据比较结果,确定目标服务进程,其中,上述目标服务进程为时间参数与上述系统重启时间之间的时间差为正值的服务进程;从上述目标服务进程中任意选定一个进程作为应答上述调用请求的服务进程。
[0015]根据本发明实施例的另一方面,还提供了一种系统服务的重载装置,包括:接收模块,用于接收用于调用系统服务的调用请求,其中,上述系统服务中至少包括两条具有相同配置信息的服务进程;处理模块,用于根据预先设置的服务重载状态,判断是否对上述系统服务进行重载,其中,上述服务重载状态至少包括:开启状态和关闭状态;第一获取模块,用于当上述服务重载状态为上述开启状态时,获取与上述服务进程对应的进程属性,其中,上述进程属性用于标记创建上述服务进程的先后顺序;确定模块,用于根据上述进程属性,确定在上述系统服务中用于应答上述调用请求的上述服务进程。
[0016]进一步地,上述装置还包括:第二获取模块,用于获取正在运行中的第一服务进程的上述配置信息,其中,上述配置信息至少包括与上述第一服务进程对应的套接字;创建模块,用于根据上述配置信息,创建第二服务进程;第一设置模块,用于将上述服务重载状态设置为上述开启状态;第二设置模块,用于设置上述服务重载状态为上述关闭状态;终止模块,用于结束未用于应答上述调用请求的上述服务进程。
[0017]进一步地,当上述进程属性通过字符参数实现时,上述装置还包括:第一标记模块,用于在与上述第二服务进程对应的上述配置信息中设置上述字符参数,其中,上述字符参数用于对新创建的上述服务进程进行标记。
[0018]进一步地,上述确定模块包括:运算单元,用于根据上述字符参数对上述系统服务中的上述服务进程进行运算处理,得到与上述服务进程对应的进程运算值;第一确定单元,用于根据上述运算计算值,确定用于应答上述调用请求的上述服务进程。
[0019]进一步地,上述运算单元还用于:根据上述字符参数对上述系统服务中的上述服务进程进行加权运算;和/或根据上述字符参数对上述系统服务中的上述服务进程进行累加运算。
[0020]进一步地,当上述服务重载状态为上述关闭状态时,上述装置还包括:标记还原模块,用于对上述第二服务进程的套接字的标记进行还原重置处理。
[0021]进一步地,当上述进程属性通过用于描述服务进程的创建时间的时间参数实现时,上述确定模块包括:比较单元,用于将所有服务进程的时间参数分别与系统重启时间进行比较;第二确定单元,用于根据比较结果,确定目标服务进程,其中,上述目标服务进程为时间参数与上述系统重启时间之间的时间差为正值的服务进程;选择单元,用于从上述目标服务进程中任意选定一个进程作为应答上述调用请求的服务进程。
[0022]在本发明实施例中,采用接收用于调用系统服务的调用请求,其中,系统服务中至少包括两条具有相同配置信息的服务进程;根据预先设置的服务重载状态,判断是否对系统服务进行重载,其中,服务重载状态至少包括:开启状态和关闭状态;当服务重载状态为开启状态时,获取与服务进程对应的进程属性,其中,进程属性用于标记创建服务进程的先后顺序;根据进程属性,确定在系统服务中用于应答调用请求的服务进程的方式,达到了对服务进程进行选择的目的,从而实现了不间断的对系统服务进行更新的技术效果,进而解决了由于系统服务重载,导致重载期间内的系统服务时延长的技术问题。
【附图说明】
[0023]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0024]图1是根据本发明实施例的一种可选的系统服务的重载方法的流程图;
[0025]图2是根据本发明实施例的一种可选的系统服务的重载方法的流程图;
[0026]图3是根据本发明实施例的一种可选的系统服务的重载装置的示意图;
[0027]图4是根据本发明实施例的一种可选的系统服务的重载装置的示意图。
【具体实施方式】
[0028]为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0029]需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0030]根据本发明实施例,提供了一种系统服务的重载方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0031]图1是根据本发明实施例的系统服务的重载的流程图,如图1所示,该方法包括如下步骤:
[0032]步骤S21,接收用于调用系统服务的调用请求,其中,系统服务中至少包括两条具有相同配置信息的服务进程,配置信息至少用于记录端口信息和套接字信息。
[0033]具体的,在操作系统中,往往利用系统服务来实现各种各样的特定功能。而在对系统服务进行更新的过程中,为了降低由于更新而对系统服务实现的功能的影响,可以在结束原有服务进程之前,先创建一个与原有服务进程的配置信息相同的服务进程,并与原有服务进程同时运行一段时间。当新创建的服务进程成功创建并启动后,再结束原有服务进程。
[0034]步骤S23,根据预先设置的服务重载状态,判断是否对系统服务进行重载,其中,月艮务重载状态至少包括:开启状态和关闭状态。
[0035]具体的,在对系统服务进行更新之前,可以预先设置更新标识,S卩服务重载状态标识。在对系统服务进行调用时,通过读取服务重载状态,判断系统服务是否处于更新状态。其中,开启状态用于标识系统服务正在处于重载状态,而关闭状态用于标识系统服务未处于重载状态。
[0036]步骤S25,当服务重载状态为开启状态时,获取与服务进程对应的进程属性,其中,进程属性用于标记创建服务进程的先后顺序。
[0037]具体的,在对服务重载状态为开启状态时,说明此时系统服务中可能存在至少两个拥有同样配置信息的服务进程。为了使调用请求可以正常的发送至新创建的服务进程中,可以在调用之前获取在创建时记录的进程属性。通过进程属性判断拥有相同配置信息的各服务进程的创建顺序,以区分原有服务进程和新创建服务进程。
[0038]步骤S27,根据进程属性,确定在系统服务中用于应答调用请求的服务进程。
[0039]具体的,在根据与服务进程对应的进程属性,确定服务进程创建的先后顺序之后,将调用请求发送至后创建的服务进程当中,以避免在更新结束后由于原有服务进程关闭导致的系统服务中断情况的发生。
[0040]通过上述步骤S21至步骤S27,可以实现在具有相同配置信息的新创建的服务进程和原有的服务进程同时运行时,通过进程属性对新创建的服务进程和原有的服务进程进行区分。并将此时接收到的调用请求全部通过新创建的服务进程进行处理,从而达到了对服务进程进行选择的目的,从而实现了不间断的对系统服务进行更新的技术效果,进而解决了由于系统服务重载,导致重载期间内的系统服务时延长的技术问题。
[0041]在实际应用当中,以Linux系统的网络服务为例进行说明。当Linux系统的系统内核接收到一个向系统发送的新的用于建立TCP连接的连接请求时,系统接收到客户端发送的5¥1'1报文后,将调用_1]161:_1001^卯_118〖61161'()函数查找需要将此3¥1'1报文分配给哪个监听套接字(Listening socket),各个监听套接字对应着各个服务进程。在查找并确定监听套接字(即对应的服务进程)后,系统内核会根据SYN报文中指定的目的网络端口和IP地址等信息,通过加权计分的方法选择与SYN报文相匹配的系统进程。而对于启用了 S0_REUSEP0RT选项后,系统服务中会存在绑定到相同IP地址和网络端口的若干个套接字,由于这些与监听套接字中的各选项参数都相同,所以通过加权计分的方法计算得出的权重也是相同的。此时系统内核会在所有得分相同的监听套接字中,随机选择一个与监听套接字对应的服务进程。
[0042]因此,可以在监听套接字中的选项参数中加入用于标记服务进程创建先后的进程属性,使系统内核可以在若干个使用S0_REUSEP0RT选项,并具有相同IP地址和网络端口的监听套接字中进行选择时,从而可以利用进程属性确定最新启动的服务进程对应的监听套接字。
[0043]作为一种可选的实施方式,如图2所示,在步骤S21接收用于调用系统服务的调用请求之前,上述方法还可以包括:
[0044]步骤S201,获取正在运行中的第一服务进程的配置信息,其中,配置信息至少包括与第一服务进程对应的套接字。
[0045]步骤S203,根据配置信息,创建第二服务进程。
[0046]步骤S205,将服务重载状态设置为开启状态。
[0047]以及,在步骤S27根据进程属性,确定在系统服务中用于应答调用请求的服务进程之后,上述方法还可以包括:
[0048]步骤S28,设置服务重载状态为关闭状态。
[0049]步骤S29,结束未用于应答调用请求的服务进程。
[0050]具体的,在对服务进程进行更新之前,可以通过步骤S201至步骤S205,按照原有的第一服务进程的配置信息对新创建的第二服务进程进行配置,从而创建得到具有与第一服务进程相同监听套接字的第二服务进程。在创建得到第二服务进程后,在操作系统中进行状态标记,将服务重载状态设置为开启状态。从而系统可以通过服务重载状态在对服务进程进行调用之前,确定该系统服务是处于重载状态。以及,在系统服务完成重载之后,可以通过上述步骤S28至步骤S29,将服务重载状态设置为关闭状态,并结束系统服务中原有的服务进程。
[0051]作为一种可选的实施方式,当进程属性通过字符参数实现时,在步骤S203根据配置信息,创建第二服务进程之后,方法还可以包括:
[0052]步骤S204a,在与第二服务进程对应的配置信息中设置字符参数,其中,字符参数用于对新创建的服务进程的套接字进行标记。
[0053]具体的,可以通过步骤S204a在配置信息中设置用于标识服务进程创建先后顺序的成员变量。可选的,成员变量的类型可以是整形数字,也可以是字符串类型,当然还可以为布尔类型。通过成员变量,对新创建的服务进程与原有的服务进程进行区分。
[0054]作为一种可选的实施方式,在步骤S27根据进程属性,确定在系统服务中用于应答调用请求的服务进程中,可以包括:
[0055]步骤S271a,根据字符参数对系统服务中的服务进程进行运算处理,得到与服务进程对应的进程运算值。
[0056]步骤S273a,根据运算计算值,确定用于应答调用请求的服务进程。
[0057]具体的,通过步骤S271a至步骤S273a,在系统对服务进程进行加权运算时,将进程属性的数值纳入到服务进程权重值的计算范围内,从而可以从具有相同配置信息的服务进程中,确定新创建的服务进程。
[0058]作为一种可选的实施方式,根据字符参数对系统服务中的服务进程进行运算处理包括:根据字符参数对系统服务中的服务进程进行加权运算;和/或根据字符参数对系统服务中的服务进程进行累加运算。
[0059]作为一种可选的实施方式,当服务重载状态为关闭状态时,方法还包括:对第二服务进程的套接字的标记进行还原重置处理。这样,通过将标记进行复原处理,可以避免下次重启进程出现混乱甚至崩溃的问题。
[0060]作为一种可选的实施方式,当进程属性通过用于描述服务进程的创建时间的时间参数实现时,根据进程属性,确定在系统服务中用于应答调用请求的服务进程包括:将所有服务进程的时间参数分别与系统重启时间进行比较;根据比较结果,确定目标服务进程,其中,目标服务进程为时间参数与系统重启时间之间的时间差为正值的服务进程;从目标服务进程中任意选定一个进程作为应答调用请求的服务进程。
[0061]具体的,通过上述实施例,可以通过比较各个服务进程的时间参数与当前的系统重启时间,得到对应的时间差,进而确定时间差为正值的服务进程,并将它们作为目标服务进程,由于时间差为正值的服务进程都是新进程,这样,可以从这些新进程中任意选择一个作为应答调用请求的服务进程。
[0062]在实际应用当中,还以Linux系统的网络服务为例进行说明。当接收到SYN报文后,通过查询与服务进程相关的配置信息,确定服务进程的创建时间。与此同时,获取操作系统当前的系统时间,并利用当前的系统时间与各服务进程对应的创建时间,确定得到最新创建的服务进程,并将该服务进程作为用于应答调用请求的服务进程。
[0063]作为一种可选的实施方式,在Linux操作系统中,/proc文件系统是一个虚拟文件系统,可以通过这个虚拟文件系统在Linux系统的内核空间和用户空间之间进行通信。
[0064]首先,可以在/proc文件系统中增加一个内核配置选项,作为控制连接分配行为的开关,例如:/proc/sys/net/ipv4/reuseport_mark_new。当此选项被设置为0(默认值)时,系统内核的执行行为保持不变。而当此选项被设置为I时,内核将会对新创建的服务进程的监听套接字进行标记。同时,在Linux系统内核代码中,struct sock的结构体用于保存套接字的相关配置信息。可以在struct sock结构体中增加一个新的成员变量,通过该成员变量来实现对新创建服务进程的套接字进行标记。
[0065]然后,当执行重载网络服务之前,将proc文件系统中的reuseport_mark_new内核选项设置为I,从而告知Linux系统内核开始对新创建的套接字进行标记。当有新的客户端向Linux系统发送新的SYN连接时,可以通过struct sock结构体中成员变量对其加以标记。[ΟΟ??] 此时,执行网络服务重载脚本。在利用」net_lookup_listener()函数计算与套接字对应的服务进程的权重时,将对被标记的新创建的服务进程的套接字赋予额外的权重值,从而使其在具有相同配置信息中选择出来,并成为用于处理新的网络连接的SYN报文的套接字。而原有服务进程的套接字由于未被标记,不会获得额外的权重值,从而不会被选中来处理新的SYN报文。因此,这保证了在对系统服务进行重载时,SYN报文只会被交付给新创建的服务进程进行处理。
[0067]当网络服务重载完成后,再将proc文件系统中的reuseport_mark_new内核选项设置为O,使系统内核恢复至标准行为。
[0068]根据本发明实施例,还提供了一种系统服务的重载装置。图3是根据本申请实施例的系统服务的重载装置的示意图。
[0069]如图3所示,该装置可以包括:接收模块21、处理模块23、第一获取模块25和确定模块27 ο
[0070]其中,接收模块21,用于接收用于调用系统服务的调用请求,其中,系统服务中至少包括两条具有相同配置信息的服务进程,配置信息至少用于记录端口信息和套接字信息;处理模块23,用于根据预先设置的服务重载状态,判断是否对系统服务进行重载,其中,服务重载状态至少包括:开启状态和关闭状态;第一获取模块25,用于当服务重载状态为开启状态时,获取与服务进程对应的进程属性,其中,进程属性用于标记创建服务进程的先后顺序;确定模块27,用于根据进程属性,确定在系统服务中用于应答调用请求的服务进程。
[0071]通过上述接收模块21、处理模块23、第一获取模块25和确定模块27,可以实现在具有相同配置信息的新创建的服务进程和原有的服务进程同时运行时,通过进程属性对新创建的服务进程和原有的服务进程进行区分。并将此时接收到的调用请求全部通过新创建的服务进程进行处理,从而达到了对服务进程进行选择的目的,从而实现了不间断的对系统服务进行更新的技术效果,进而解决了由于系统服务重载,导致重载期间内的系统服务时延长的技术问题。
[0072]作为一种可选的实施方式,如图4所示,装置还包括:第二获取模块201、创建模块203和第一设置模块205、第二设置模块28和终止模块29。
[0073]其中,第二获取模块201,用于获取正在运行中的第一服务进程的配置信息,其中,配置信息至少包括与第一服务进程对应的套接字;创建模块203,用于根据配置信息,创建第二服务进程;第一设置模块205,用于将服务重载状态设置为开启状态以及,第二设置模块28,用于设置服务重载状态为关闭状态;终止模块29,用于结束未用于应答调用请求的服务进程。
[0074]具体的,在对服务进程进行更新之前,可以通过上述第二获取模块201、创建模块203和第一设置模块205,按照原有的第一服务进程的配置信息对新创建的第二服务进程进行配置,从而创建得到具有与第一服务进程相同监听套接字的第二服务进程。在创建得到第二服务进程后,在操作系统中进行状态标记,将服务重载状态设置为开启状态。从而系统可以通过服务重载状态在对服务进程进行调用之前,确定该系统服务是处于重载状态。以及在系统服务完成重载之后,可以通过上述第二设置模块28和终止模块29,将服务重载状态设置为关闭状态,并结束系统服务中原有的服务进程。
[0075]作为一种可选的实施方式,当进程属性通过字符参数实现时,上述装置还可以包括:第一标记模块。
[0076]其中,第一标记模块,用于在与第二服务进程对应的配置信息中设置字符参数,其中,字符参数用于对新创建的服务进程的套接字进行标记。
[0077]具体的,可以通过第一标记模块在配置信息中设置用于标识服务进程创建先后顺序的成员变量。可选的,成员变量的类型可以是整形数字,也可以是字符串类型,当然还可以为布尔类型。通过成员变量,对新创建的服务进程与原有的服务进程进行区分。
[0078]作为一种可选的实施方式,确定模块包括:运算单元,用于根据字符参数对系统服务中的服务进程进行运算处理,得到与服务进程对应的进程运算值;第一确定单元,用于根据运算计算值,确定用于应答调用请求的服务进程。
[0079]作为一种可选的实施方式,当进程属性通过字符参数实现时,装置还包括:第一标记模块,用于在与第二服务进程对应的配置信息中设置字符参数,其中,字符参数用于对新创建的服务进程进行标记。
[0080]作为一种可选的实施方式,确定模块包括:运算单元,用于根据字符参数对系统服务中的服务进程进行运算处理,得到与服务进程对应的进程运算值,其中,运算处理的运算方式包括加权运算和/或累加运算;确定单元,用于根据运算计算值,确定用于应答调用请求的服务进程。
[0081]作为一种可选的实施方式,装置还包括:第三设置模块,当进程属性通过时间参数实现时,在根据配置信息,创建第二服务进程之后,在与第二服务进程对应的配置信息中设置对应的时间参数,其中,对应的时间参数为第二服务进程的创建时间,确定模块包括:获取单元,用于获取系统的当前时间;计算单元,用于计算系统的当前时间与对应的时间参数之间的时间差;查找单元,用于根据计算得到的时间差,找到第二服务进程,并将第二服务进程作为应答调用请求的服务进程。
[0082]其中,装置部分实施例中的功能单元和/或模块与方法部分对应实施例中的步骤实现的功能与达到的技术效果类似,在此不再赘述。
[0083]上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0084]在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0085]在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0086]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0087]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0088]所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0089]以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【主权项】
1.一种系统服务的重载方法,其特征在于,包括: 接收用于调用系统服务的调用请求,其中,所述系统服务中至少包括两条具有相同配置信息的服务进程,所述配置信息至少用于记录端口信息和套接字信息; 根据预先设置的服务重载状态,判断是否对所述系统服务进行重载,其中,所述服务重载状态至少包括:开启状态和关闭状态; 当所述服务重载状态为所述开启状态时,获取与所述服务进程对应的进程属性,其中,所述进程属性用于标记创建所述服务进程的先后顺序; 根据所述进程属性,确定在所述系统服务中用于应答所述调用请求的所述服务进程。2.根据权利要求1所述的方法,其特征在于, 在接收用于调用系统服务的调用请求之前,所述方法还包括: 获取正在运行中的第一服务进程的所述配置信息,其中,所述配置信息至少包括与所述第一服务进程对应的套接字; 根据所述配置信息,创建第二服务进程; 将所述服务重载状态设置为所述开启状态; 以及,在根据所述进程属性,确定在所述系统服务中用于应答所述调用请求的所述服务进程之后,所述方法还包括: 设置所述服务重载状态为所述关闭状态; 结束未用于应答所述调用请求的所述服务进程。3.根据权利要求2所述的方法,其特征在于,当所述进程属性通过字符参数实现时,在根据所述配置信息,创建第二服务进程之后,所述方法还包括: 在与所述第二服务进程对应的所述配置信息中设置所述字符参数,其中,所述字符参数用于对新创建的所述服务进程的套接字进行标记。4.根据权利要求3所述的方法,其特征在于,根据所述进程属性,确定在所述系统服务中用于应答所述调用请求的所述服务进程,包括: 根据所述字符参数对所述系统服务中的所述服务进程进行运算处理,得到与所述服务进程对应的进程运算值; 根据所述运算计算值,确定用于应答所述调用请求的所述服务进程。5.根据权利要求4所述的方法,其特征在于,根据所述字符参数对所述系统服务中的所述服务进程进行运算处理包括: 根据所述字符参数对所述系统服务中的所述服务进程进行加权运算;和/或 根据所述字符参数对所述系统服务中的所述服务进程进行累加运算。6.根据权利要求3所述的方法,其特征在于,当所述服务重载状态为所述关闭状态时,所述方法还包括: 对所述第二服务进程的套接字的标记进行还原重置处理。7.根据权利要求1所述的方法,其特征在于,当所述进程属性通过用于描述服务进程的创建时间的时间参数实现时,根据所述进程属性,确定在所述系统服务中用于应答所述调用请求的所述服务进程包括: 将所有服务进程的时间参数分别与系统重启时间进行比较; 根据比较结果,确定目标服务进程,其中,所述目标服务进程为时间参数与所述系统重启时间之间的时间差为正值的服务进程; 从所述目标服务进程中任意选定一个进程作为应答所述调用请求的服务进程。8.一种系统服务的重载装置,其特征在于,包括: 接收模块,用于接收用于调用系统服务的调用请求,其中,所述系统服务中至少包括两条具有相同配置信息的服务进程; 处理模块,用于根据预先设置的服务重载状态,判断是否对所述系统服务进行重载,其中,所述服务重载状态至少包括:开启状态和关闭状态; 第一获取模块,用于当所述服务重载状态为所述开启状态时,获取与所述服务进程对应的进程属性,其中,所述进程属性用于标记创建所述服务进程的先后顺序; 确定模块,用于根据所述进程属性,确定在所述系统服务中用于应答所述调用请求的所述服务进程。9.根据权利要求8所述的装置,其特征在于,所述装置还包括: 第二获取模块,用于获取正在运行中的第一服务进程的所述配置信息,其中,所述配置信息至少包括与所述第一服务进程对应的套接字; 创建模块,用于根据所述配置信息,创建第二服务进程; 第一设置模块,用于将所述服务重载状态设置为所述开启状态; 第二设置模块,用于设置所述服务重载状态为所述关闭状态; 终止模块,用于结束未用于应答所述调用请求的所述服务进程。10.根据权利要求9所述的装置,其特征在于,当所述进程属性通过字符参数实现时,所述装置还包括: 第一标记模块,用于在与所述第二服务进程对应的所述配置信息中设置所述字符参数,其中,所述字符参数用于对新创建的所述服务进程进行标记。11.根据权利要求10所述的装置,其特征在于,所述确定模块包括: 运算单元,用于根据所述字符参数对所述系统服务中的所述服务进程进行运算处理,得到与所述服务进程对应的进程运算值; 第一确定单元,用于根据所述运算计算值,确定用于应答所述调用请求的所述服务进程。12.根据权利要求11所述的方法,其特征在于,所述运算单元还用于: 根据所述字符参数对所述系统服务中的所述服务进程进行加权运算;和/或 根据所述字符参数对所述系统服务中的所述服务进程进行累加运算。13.根据权利要求10所述的方法,其特征在于,当所述服务重载状态为所述关闭状态时,所述装置还包括: 标记还原模块,用于对所述第二服务进程的套接字的标记进行还原重置处理。14.根据权利要求8所述的装置,其特征在于,当所述进程属性通过用于描述服务进程的创建时间的时间参数实现时,所述确定模块包括: 比较单元,用于将所有服务进程的时间参数分别与系统重启时间进行比较; 第二确定单元,用于根据比较结果,确定目标服务进程,其中,所述目标服务进程为时间参数与所述系统重启时间之间的时间差为正值的服务进程; 选择单元,用于从所述目标服务进程中任意选定一个进程作为应答所述调用请求的服务进程。
【文档编号】G06F9/445GK105930191SQ201610278178
【公开日】2016年9月7日
【申请日】2016年4月28日
【发明人】洪珂, 陈迅
【申请人】网宿科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1