请求分配方法、装置、电子设备及可读存储介质与流程

文档序号:24161259发布日期:2021-03-05 17:12阅读:111来源:国知局
请求分配方法、装置、电子设备及可读存储介质与流程

[0001]
本发明涉及互联网技术领域,尤其是一种请求分配方法、装置、电子设备及可读存储介质。


背景技术:

[0002]
随着互联网技术的飞速发展,用户需求频繁变化,为了应对用户在设计、开发、维护等方面的需求,微服务应运而生。微服务是一种高内聚低耦合的系统架构,将应用拆分成一组功能单一、可独立部署的微服务,相互间通过轻量级通信机制协同配合,实现敏捷开发与部署。目前,通常对微服务构造服务网格实现集成管理,在服务网格中,有些微服务的服务实例启动后需要根据服务启动时间渐近式进入完全服务的状态,针对这类服务实例,在为其分配用户的请求时,也需要渐近式递增并逐渐达到全量状态。
[0003]
相关技术中,在向服务实例分配用户的请求时,服务网格默认给所有可用的服务实例赋予相同的访问权重,访问权重通常取值为1,且访问权重可以变化。服务网格会按照访问权重的指示为服务实例分配请求,直至根据访问权重确定服务实例进入全量的服务状态。
[0004]
但是,发明人认识到上述的相关技术中至少存在以下技术问题:
[0005]
服务网格给所有可用的服务实例赋予的访问权重是相同的,但是每个服务实例的服务能力是不同的,很有可能服务网格根据访问权重确定服务实例进入全量的服务状态时,服务实例并没有真正进入全量的服务状态,会造成服务实例的负载过重,影响服务实例的稳定性,用户的请求存在处理失败的风险。


技术实现要素:

[0006]
有鉴于此,本申请提供了一种请求分配方法、装置、电子设备及可读存储介质,主要目的在于解决目前服务实例的负载过重,影响服务实例的稳定性,用户的请求存在处理失败的风险的问题。
[0007]
依据本发明第一方面,提供了一种请求分配方法,该方法包括:
[0008]
获取待启动的目标服务的预热参数,所述预热参数指示了所述目标服务包括的多个服务实例是否预热以及所述目标服务的预热周期和预热步长;
[0009]
监听服务接口,记录目标服务实例的启动时间,所述目标服务实例是所述多个服务实例中任一服务实例且是启动完成后注册在所述服务接口中的;
[0010]
当所述预热参数指示对所述目标服务实例预热时,确定当前时间,根据所述预热周期、所述当前时间和所述启动时间,计算实例权重值;
[0011]
按照所述实例权重值,分配接收到的用户请求。
[0012]
在另一个实施例中,所述监听服务接口,记录目标服务实例的启动时间之后,所述方法还包括:
[0013]
当所述预热参数未指示对所述目标服务实例预热时,确定标准请求流量;
[0014]
按照所述标准请求流量,向所述目标服务实例分配接收到的用户请求。
[0015]
在另一个实施例中,所述根据所述预热周期、所述当前时间和所述启动时间,计算实例权重值,包括:
[0016]
计算所述当前时间与所述启动时间的差值,生成包括所述差值以及所述预热周期的数值组;
[0017]
在所述数值组中确定目标数值作为所述实例权重值,所述目标数值是所述差值和所述预热周期中取值最小的一个。
[0018]
在另一个实施例中,所述按照所述实例权重值,向所述目标服务实例分配接收到的用户请求之后,所述方法还包括:
[0019]
读取所述多个服务实例对应的多个实例权重值;
[0020]
当检测到所述多个实例权重值中存在小于所述预热周期的第一指定实例权重值时,确定所述第一指定实例权重值对应的第一指定服务实例;
[0021]
根据所述预热步长,设置定时任务;
[0022]
按照所述定时任务,定时基于当前时间、所述预热周期以及所述第一指定服务实例的启动时间,为所述第一指定服务实例重新计算实例权重值,并按照重新计算的实例权重值向所述第一指定服务实例分配用户请求。
[0023]
在另一个实施例中,所述方法还包括:
[0024]
当计算得到的所述第一指定服务实例的实例权重值大于等于所述预热周期时,确定所述第一指定服务实例预热完毕,停止所述定时任务。
[0025]
在另一个实施例中,所述根据所述预热步长,设置定时任务之后,所述方法还包括:
[0026]
将所述目标服务的最后启动时间更新为所述目标服务实例的启动时间;
[0027]
将所述最后启动时间与所述定时任务关联;
[0028]
持续监听所述服务接口,并在监听到存在其他服务实例在所述服务接口中注册时,采用所述其他服务实例的启动时间对所述最后启动时间进行更新并与所述定时任务关联。
[0029]
在另一个实施例中,所述方法还包括:
[0030]
当检测到所述多个服务实例的多个实例权重值中存在小于所述预热周期的第二指定实例权重值时,读取所述最后启动时间,在所述多个服务实例的多个启动时间中确定实际最后启动时间,所述实际最后启动时间与当前时间的时间间隔小于所述多个启动时间中除所述实际最后启动时间外的其他启动时间与所述当前时间的时间间隔;
[0031]
若所述最后启动时间的取值与所述当前时间的时间间隔大于所述实际最后启动时间与所述当前时间的时间间隔,则确定所述定时任务被触发,基于所述定时任务,定时为所述第二指定实例权重值对应的第二指定服务实例重新计算实例权重值。
[0032]
依据本发明第二方面,提供了一种请求分配装置,该装置包括:
[0033]
获取模块,用于获取待启动的目标服务的预热参数,所述预热参数指示了所述目标服务包括的多个服务实例是否预热以及所述目标服务的预热周期和预热步长;
[0034]
监听模块,用于监听服务接口,记录目标服务实例的启动时间,所述目标服务实例是所述多个服务实例中任一服务实例且是启动完成后注册在所述服务接口中的;
[0035]
计算模块,用于当所述预热参数指示对所述目标服务实例预热时,确定当前时间,根据所述预热周期、所述当前时间和所述启动时间,计算实例权重值;
[0036]
分配模块,用于按照所述实例权重值,向所述目标服务实例分配接收到的用户请求。
[0037]
在另一个实施例中,所述装置还包括:
[0038]
第一确定模块,用于当所述预热参数未指示对所述目标服务实例预热时,确定标准请求流量;
[0039]
所述分配模块,还用于按照所述标准请求流量,向所述目标服务实例分配接收到的用户请求。
[0040]
在另一个实施例中,所述计算模块,用于计算所述当前时间与所述启动时间的差值,生成包括所述差值以及所述预热周期的数值组;在所述数值组中确定目标数值作为所述实例权重值,所述目标数值是所述差值和所述预热周期中取值最小的一个。
[0041]
在另一个实施例中,所述装置还包括:
[0042]
读取模块,用于读取所述多个服务实例对应的多个实例权重值;
[0043]
第二确定模块,用于当检测到所述多个实例权重值中存在小于所述预热周期的第一指定实例权重值时,确定所述第一指定实例权重值对应的第一指定服务实例;
[0044]
设置模块,用于根据所述预热步长,设置定时任务;
[0045]
所述分配模块,用于按照所述定时任务,定时基于当前时间、所述预热周期以及所述第一指定服务实例的启动时间,为所述第一指定服务实例重新计算实例权重值,并按照重新计算的实例权重值向所述第一指定服务实例分配用户请求。
[0046]
在另一个实施例中,所述装置还包括:
[0047]
停止模块,用于当计算得到的所述第一指定服务实例的实例权重值大于等于所述预热周期时,确定所述第一指定服务实例预热完毕,停止所述定时任务。
[0048]
在另一个实施例中,所述装置还包括:
[0049]
更新模块,用于将所述目标服务的最后启动时间更新为所述目标服务实例的启动时间;
[0050]
关联模块,用于将所述最后启动时间与所述定时任务关联;
[0051]
所述更新模块,还用于持续监听所述服务接口,并在监听到存在其他服务实例在所述服务接口中注册时,采用所述其他服务实例的启动时间对所述最后启动时间进行更新并与所述定时任务关联。
[0052]
在另一个实施例中,所述读取模块,还用于当检测到所述多个服务实例的多个实例权重值中存在小于所述预热周期的第二指定实例权重值时,读取所述最后启动时间,在所述多个服务实例的多个启动时间中确定实际最后启动时间,所述实际最后启动时间与当前时间的时间间隔小于所述多个启动时间中除所述实际最后启动时间外的其他启动时间与所述当前时间的时间间隔;
[0053]
所述分配模块,还用于若所述最后启动时间的取值与所述当前时间的时间间隔大于所述实际最后启动时间与所述当前时间的时间间隔,则确定所述定时任务被触发,基于所述定时任务,定时为所述第二指定实例权重值对应的第二指定服务实例重新计算实例权重值。
[0054]
依据本发明第三方面,提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述方法的步骤。
[0055]
依据本发明第四方面,提供了一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的方法的步骤。
[0056]
借由上述技术方案,本申请提供的一种请求分配方法、装置、电子设备及可读存储介质,根据成功启动的目标服务实例的启动时间以及该目标服务实例所在目标服务设置的包括多个服务实例是否预热以及目标服务的预热周期和预热步长的预热参数,动态计算目标服务实例的实例权重值,按照动态设置的实例权重向服务实例分配用户的请求,使服务实例能通过缓冲周期逐渐进入全量的工作状态,避免服务实例的负载过重,保证用户对服务的请求能得到有效的响应和处理,提升了服务的健壮性和稳定性。
[0057]
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
[0058]
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0059]
图1示出了本申请实施例提供的一种请求分配方法的流程示意图;
[0060]
图2a示出了本申请实施例提供的一种请求分配方法的流程示意图;
[0061]
图2b示出了本申请实施例提供的一种请求分配方法的流程示意图;
[0062]
图3a示出了本申请实施例提供的一种请求分配装置的结构示意图;
[0063]
图3b示出了本申请实施例提供的一种请求分配装置的结构示意图;
[0064]
图3c示出了本申请实施例提供的一种请求分配装置的结构示意图;
[0065]
图3d示出了本申请实施例提供的一种请求分配装置的结构示意图;
[0066]
图3e示出了本申请实施例提供的一种请求分配装置的结构示意图。
具体实施方式
[0067]
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
[0068]
本发明实施例提供了一种请求分配方法,如图1所示,该方法包括:
[0069]
101、获取待启动的目标服务的预热参数,预热参数指示了目标服务包括的多个服务实例是否预热以及目标服务的预热周期和预热步长。
[0070]
102、监听服务接口,记录目标服务实例的启动时间,目标服务实例是多个服务实例中任一服务实例且是启动完成后注册在服务接口中的。
[0071]
103、当预热参数指示对目标服务实例预热时,确定当前时间,根据预热周期、当前时间和启动时间,计算实例权重值。
[0072]
104、按照实例权重值,向目标服务实例分配接收到的用户请求。
[0073]
本发明实施例提供的方法,根据成功启动的目标服务实例的启动时间以及该目标服务实例所在目标服务设置的包括多个服务实例是否预热以及目标服务的预热周期和预热步长的预热参数,动态计算目标服务实例的实例权重值,按照动态设置的实例权重向服务实例分配用户的请求,使服务实例能通过缓冲周期逐渐进入全量的工作状态,避免服务实例的负载过重,保证用户对服务的请求能得到有效的响应和处理,提升了服务的健壮性和稳定性。
[0074]
本发明实施例提供了一种任务下发方法,如图2a所示,该方法包括:
[0075]
201、获取待启动的目标服务的预热参数。
[0076]
近年来,对微服务构造的服务网格通常为istio(一种对微服务构造的服务网格)服务网格,在基于istio服务网格的微服务集群环境下,有些微服务的服务实例启动后需要根据服务启动时间渐近式进入完全服务的状态,针对这类服务实例,在进行用户的请求分配时,也需要渐近式递增并逐渐达到全量状态,这一过程也即对服务的预热过程。而目前,服务网格在提供预热操作时,会默认给所有可用的服务实例赋予相同的访问权重,访问权重通常取值为1,且访问权重可以变化。服务网格会按照访问权重的指示向服务实例分配请求,直至根据访问权重确定服务实例进入全量的服务状态。但是发明人认识到,服务网格给所有可用的服务实例赋予的访问权重是相同的,但是每个服务实例的服务能力是不同的,很有可能服务网格根据访问权重确定服务实例进入全量的服务状态时,服务实例并没有真正进入全量的服务状态,会造成服务实例的负载过重,影响服务实例的稳定性,任务存在处理失败的风险。而且,服务实例中也有能力较强的,如果一味的限制服务能力,还可能导致服务实例启动后的一段时间内大量用户请求失败,影响服务的稳定性。因此,本发明提出了一种请求分配方法,根据成功启动的目标服务实例的启动时间以及该目标服务实例所在目标服务设置的包括多个服务实例是否预热以及目标服务的预热周期和预热步长的预热参数,动态计算目标服务实例的实例权重值,实现对服务实例渐进式的动态调权,进而按照动态设置的实例权重向服务实例分配请求,使服务实例能通过缓冲周期逐渐进入全量的工作状态,保证用户对服务的请求能得到有效的响应和处理,提升了服务的健壮性和稳定性。
[0077]
而为了实现本发明中的请求分配方法,首先需要获取待启动的目标服务的预热参数。该预热参数指示了目标服务包括的多个服务实例是否预热以及目标服务的预热周期和预热步长。一般预热周期默认为90秒,预热步长默认为5秒,预热参数包括的内容可随着预热场景的不同、服务的不同以及用户量的不同等进行变化,甚至可以根据服务集群内各个服务的历史统计数据动态调整每个服务的预热参数,来提升服务集群整体的和服务的弹性。本发明对预热参数的具体内容不进行限定。获取到该目标服务的预热参数后,服务网格便可以按照该预热参数的指示执行目标服务中服务实例的预热操作。另外,服务网格中可以设置一个预热程序,支持在服务粒度控制是否要为特定的服务或者服务实例开启预热。
[0078]
202、监听服务接口,记录目标服务实例的启动时间,当预热参数指示对目标服务实例预热时,执行下述步骤203至步骤206中的过程;当预热参数未指示对目标服务实例预热时,执行下述步骤207中的过程。
[0079]
在本发明实施例中,通常服务中的服务实例启动完成后,会将自身的启动状态注册在服务接口中,该服务接口具体可以是k8s api server(一种接口服务),因此,服务网格可以通过对该服务接口进行监听,确定哪些服务实例已经启动,进而对有预热需求的服务
实例进行预热,为这些服务实例动态计算实例权重值。具体地,服务网格会监听服务接口,记录目标服务实例的启动时间,该目标服务实例是多个服务实例中任一服务实例且是启动完成后注册在服务接口中的。也即该目标服务实例被服务网格发现是新启动的服务实例时,服务网格就会将这个目标服务实例记录下来,同时也记录该目标服务实例的启动时间。随后,服务网格会在获取到的预热参数中查询是否需要对该目标服务实例进行预热。当预热参数指示对目标服务实例预热时,确定需要对目标服务实例进行预热,需要动态为该目标服务实例进行实例权重的计算,也即执行下述步骤203至步骤207中的过程。而当预热参数未指示对目标服务实例预热时,确定不需要对该目标服务实例进行预热,直接按照正常的标准向目标服务实例分配用户请求,也即执行下述步骤207中的过程。
[0080]
203、当预热参数指示对目标服务实例预热时,确定当前时间,根据预热周期、当前时间和启动时间,计算实例权重值。
[0081]
在本发明实施例中,当预热参数指示对目标服务实例预热时,确定需要对目标服务实例进行预热,需要动态为该目标服务实例进行实例权重的计算,而计算当前时间下该目标服务实例的实例权重需要依赖当前时间、预热周期和启动时间,因此,服务网格会确定当前时间,根据预热周期、当前时间和启动时间,计算实例权重值,具体计算实例权重值的过程如下:
[0082]
首先,计算当前时间与启动时间的差值,生成包括差值以及预热周期的数值组。随后,在数值组中确定目标数值作为实例权重值,目标数值是差值和预热周期中取值最小的一个。也即计算当前时间与启动时间的差值,将差值和预热周期中的最小值作为实例权重值,具体可用公式1来表示该计算过程,公式1中的“min”用来确定差值和预热周期中的最小值:
[0083]
公式1:实例权重值=min(当前时间-启动时间,预热周期)
[0084]
204、按照实例权重值,向目标服务实例分配接收到的用户请求。
[0085]
在本发明实施例中,当完成了实例权重值的计算后,可以开始向目标服务实例分配接收到的用户请求。具体地,实际应用的过程中,服务网格会将目标服务实例与实例权重值一同下发到集群内所有的istio-proxy(网格的代理服务)代理中,此时各代理会按照实例权重值进行服务实例间的请求流量分发。需要说明的是,很有可能服务网格会在同一时间内检测到多个目标服务实例启动且同时计算得到多个目标服务实例的实例权重值,则服务网格可将全部目标服务实例连同这些目标服务实例对应的实例权重值下发到istio-proxy代理中。
[0086]
205、读取多个服务实例对应的多个实例权重值,当检测到多个实例权重值中存在小于预热周期的第一指定实例权重值时,确定第一指定实例权重值对应的第一指定服务实例,根据预热步长,设置定时任务,按照定时任务,定时基于当前时间、预热周期以及第一指定服务实例的启动时间,为第一指定服务实例重新计算实例权重值,并按照重新计算的实例权重值向第一指定服务实例分配用户请求。
[0087]
在本发明实施例中,由于每个服务实例的实例权重值都是动态计算的,启动时间不同,当前时间进行变化都会导致实例权重值的变化,而如果有些服务实例的实例权重值达到了预热参数中设置的预热周期,则表明该服务实例的预热过程已经结束。因此,服务网格会读取多个服务实例对应的多个实例权重值,在多个实例权重值中查询是否存在小于预
热周期的第一指定实例权重值。而当检测到多个实例权重值中存在小于预热周期的第一指定实例权重值时,表示该第一指定实例权重值对应的第一指定服务实例还处于预热状态中,需要继续动态为其计算实例权重值,所以,服务网格会根据预热步长,设置定时任务,按照定时任务,定时基于当前时间、预热周期以及第一指定服务实例的启动时间,为第一指定服务实例计算实例权重值,并按照重新计算的实例权重值向第一指定服务实例分配用户请求,直至该第一指定服务实例的实例权重值达到了预热周期为止。
[0088]
206、当计算得到的第一指定服务实例的实例权重值大于等于预热周期时,确定第一指定服务实例预热完毕,停止定时任务。
[0089]
在本发明实施例中,上述步骤205会基于定时任务定时为第一指定服务实例计算实例权重值。而当计算得到的第一指定服务实例的实例权重值大于等于预热周期时,可以确定第一指定服务实例预热完毕,停止定时任务。
[0090]
另外,当一个服务包含多个服务实例并且这些服务实例在很短时间内相继进入启动状态时(通常发生在服务部署阶段),会造成同一服务由于多个服务实例的变动造成实例权重值的频繁计算和下发。例如,一个包含30个服务实例的服务,预热周期90s、步长5s的启动周期内,极端情况下可能在90s内进行多达30
×
(90
÷
5)=540次的计算和下发。因此,在本申请实施例中,在某个服务实例启动后,服务网格会同步更新该服务实例所在服务的最后启动时间,将目标服务的最后启动时间更新为目标服务实例的启动时间。随后,服务网格将最后启动时间与定时任务关联。进一步地,服务网格会持续监听服务接口,并在监听到存在其他服务实例在服务接口中注册时,采用其他服务实例的启动时间对最后启动时间进行更新并与定时任务关联,从而保证最后启动时间是服务实例的启动时间中最大的一个。
[0091]
这样,完成了定时任务与最后启动时间的关联后,每当确定需要建立定时任务时,服务网格都会在定制新的定时任务计算服务权重前,查看当前定时任务关联的最后启动时间。也即当服务网格检测到多个服务实例的多个实例权重值中存在小于预热周期的第二指定实例权重值时,确定需要运行定时任务,因此,读取最后启动时间,在多个服务实例的多个启动时间中确定实际最后启动时间,该实际最后启动时间与当前时间的时间间隔小于多个启动时间中除实际最后启动时间外的其他启动时间与当前时间的时间间隔,也就是最近的启动时间。而若最后启动时间的取值与当前时间的时间间隔大于实际最后启动时间与当前时间的时间间隔,也即服务最后启动时间早于实际的服务最后启动时间,则确定定时任务被触发,基于定时任务,定时为第二指定实例权重值对应的第二指定服务实例重新计算实例权重值即可,取消当前新的定时任务的定制。通过这种方式,可以做到针对同一个服务,不管有多少服务实例发生实例权重取值的变更,同一时间统一下发一次实例权重取值,且计算下发间隔不少于预设步长。这种操作下可以剔除冗余的计算和下发,降低由于频繁计算和配置下发带来的计算和通信开销。
[0092]
207、当预热参数未指示对目标服务实例预热时,确定标准请求流量,按照标准请求流量,向目标服务实例分配接收到的用户请求。
[0093]
在本发明实施例中,当预热参数未指示对目标服务实例预热时,确定不需要对该目标服务实例进行预热,直接按照正常的标准向目标服务实例下发任务、分配流量即可。因此,服务网格确定标准请求流量,按照标准请求流量,向目标服务实例分配接收到的用户请求。
[0094]
综上所述,本发明实施例中整个的请求分配过程如下:
[0095]
参见图2b,b1、b2和b3是服务实例,在启动后,b1、b2和b3将自身的启动状态注册在k8s api server中。服务网格istio会对k8s api server进行监听,周期性为已经启动的服务实例计算实例权重值,并将服务实例和实例权重值同时下发到istio-proxy代理中,由代理按照实例权重值为服务实例分配用户请求等。
[0096]
本发明实施例提供的方法,根据成功启动的目标服务实例的启动时间以及该目标服务实例所在目标服务设置的包括多个服务实例是否预热以及目标服务的预热周期和预热步长的预热参数,动态计算目标服务实例的实例权重值,按照动态设置的实例权重向服务实例分配用户的请求,使服务实例能通过缓冲周期逐渐进入全量的工作状态,避免服务实例的负载过重,保证用户对服务的请求能得到有效的响应和处理,提升了服务的健壮性和稳定性。
[0097]
进一步地,作为图1所述方法的具体实现,本申请实施例提供了一种请求分配装置,如图3a所示,所述装置包括:获取模块301,监听模块302,计算模块303和分配模块304。
[0098]
该获取模块301,用于获取待启动的目标服务的预热参数,所述预热参数指示了所述目标服务包括的多个服务实例是否预热以及所述目标服务的预热周期和预热步长;
[0099]
该监听模块302,用于监听服务接口,记录目标服务实例的启动时间,所述目标服务实例是所述多个服务实例中任一服务实例且是启动完成后注册在所述服务接口中的;
[0100]
该计算模块303,用于当所述预热参数指示对所述目标服务实例预热时,确定当前时间,根据所述预热周期、所述当前时间和所述启动时间,计算实例权重值;
[0101]
该分配模块304,用于按照所述实例权重值,向所述目标服务实例分配接收到的用户请求。
[0102]
在具体的应用场景中,如图3b所示,该装置还包括:第一确定模块305。
[0103]
该第一确定模块305,用于当所述预热参数未指示对所述目标服务实例预热时,确定标准请求流量;
[0104]
该下发模块304,还用于按照所述标准请求流量,向所述目标服务实例分配接收到的用户请求。
[0105]
在具体的应用场景中,该计算模块303,用于计算所述当前时间与所述启动时间的差值,生成包括所述差值以及所述预热周期的数值组;在所述数值组中确定目标数值作为所述实例权重值,所述目标数值是所述差值和所述预热周期中取值最小的一个。
[0106]
在具体的应用场景中,如图3c所示,该装置还包括:读取模块306,第二确定模块307和设置模块308。
[0107]
该读取模块306,用于读取所述多个服务实例对应的多个实例权重值;
[0108]
该第二确定模块307,用于当检测到所述多个实例权重值中存在小于所述预热周期的第一指定实例权重值时,确定所述第一指定实例权重值对应的第一指定服务实例;
[0109]
该设置模块308,用于根据所述预热步长,设置定时任务;
[0110]
该分配模块304,用于按照所述定时任务,定时基于当前时间、所述预热周期以及所述第一指定服务实例的启动时间,为所述第一指定服务实例重新计算实例权重值,并按照重新计算的实例权重值向所述第一指定服务实例分配用户请求。
[0111]
在具体的应用场景中,如图3d所示,该装置还包括:停止模块309。
[0112]
该停止模块309,用于当计算得到的所述第一指定服务实例的实例权重值大于等于所述预热周期时,确定所述第一指定服务实例预热完毕,停止所述定时任务。
[0113]
在具体的应用场景中,如图3e所示,该装置还包括:更新模块310和关联模块311。
[0114]
该更新模块310,用于将所述目标服务的最后启动时间更新为所述目标服务实例的启动时间;
[0115]
该关联模块311,用于将所述最后启动时间与所述定时任务关联;
[0116]
该更新模块310,还用于持续监听所述服务接口,并在监听到存在其他服务实例在所述服务接口中注册时,采用所述其他服务实例的启动时间对所述最后启动时间进行更新并与所述定时任务关联。
[0117]
在具体的应用场景中,该读取模块305,还用于当检测到所述多个服务实例的多个实例权重值中存在小于所述预热周期的第二指定实例权重值时,读取所述最后启动时间,在所述多个服务实例的多个启动时间中确定实际最后启动时间,所述实际最后启动时间与当前时间的时间间隔小于所述多个启动时间中除所述实际最后启动时间外的其他启动时间与所述当前时间的时间间隔;
[0118]
该分配模块304,还用于若所述最后启动时间的取值与所述当前时间的时间间隔大于所述实际最后启动时间与所述当前时间的时间间隔,则确定所述定时任务被触发,基于所述定时任务,定时为所述第二指定实例权重值对应的第二指定服务实例重新计算实例权重值。
[0119]
本发明实施例提供的装置,根据成功启动的目标服务实例的启动时间以及该目标服务实例所在目标服务设置的包括多个服务实例是否预热以及目标服务的预热周期和预热步长的预热参数,动态计算目标服务实例的实例权重值,按照动态设置的实例权重向服务实例分配用户的请求,使服务实例能通过缓冲周期逐渐进入全量的工作状态,避免服务实例的负载过重,保证用户对服务的请求能得到有效的响应和处理,提升了服务的健壮性和稳定性。
[0120]
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
[0121]
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
[0122]
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
[0123]
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
[0124]
本发明实施例可以应用于计算机系统/服务器,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器一起使用的众所周知的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
[0125]
计算机系统/服务器可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数
据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
[0126]
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0127]
可能以许多方式来实现本发明的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和系统。用于所述方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
[0128]
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1