流量控制方法、装置、存储介质及电子设备与流程

文档序号:28494742发布日期:2022-01-15 03:52阅读:136来源:国知局
流量控制方法、装置、存储介质及电子设备与流程

1.本公开涉及网络技术领域,具体地,涉及一种流量控制方法、装置、存储介质及电子设备。


背景技术:

2.企业的数据生产中心通过对互联网上的部分网站进行不等并发量的访问来生产和采集互联网数据,由于互联网上不同网站具有不同的负载量,若在进行数据生产时的访问量达到了某一网站服务器负载的极限,则可能导致该网站瘫痪而无法对外提供服务。然而为了生产和采集到有效的数据,对网站服务器进行大规模的访问是必不可少的。
3.由上可知,现有的流量控制方法难以兼顾数据生产效率和服务器运行状态,目前迫切需要一种能够在不等并发量的访问过程中避免不同网站服务器瘫痪的技术方案。


技术实现要素:

4.本公开的目的是提供一种流量控制方法、装置、存储介质及电子设备,以解决相关技术中存在的问题。
5.为了实现上述目的,根据本公开实施例的第一方面,提供一种流量控制方法,所述方法包括:
6.响应于针对目标服务器的访问请求,获取所述目标服务器的负载状态;
7.如果所述负载状态为极限状态,则获取所述目标服务器的病态值;其中,所述极限状态用于表征体现所述目标服务器的负载大小的病态值达到预设的病态阈值,所述病态值与所述目标服务器对历史访问请求的响应中表征访问失败的响应次数正相关;
8.根据所述病态值,确定是否允许所述访问请求访问所述目标服务器。
9.可选地,所述方法还包括:
10.在所述目标服务器的负载状态为所述极限状态,并且所述目标服务器对访问请求的响应表征访问成功的情况下,根据目标服务器在预设时长内对访问请求的响应计算所述目标服务器的病态值;
11.在计算得到的所述病态值小于所述预设的病态阈值的情况下,将所述目标服务器的负载状态变更为非极限状态,所述非极限状态用于表征所述病态值未达到所述预设的病态阈值。
12.可选地,所述负载状态还包括非极限状态,所述非极限状态用于表征所述病态值未达到所述预设病态阈值,所述方法还包括:
13.在所述目标服务器的负载状态为所述非极限状态,并且所述目标服务器对访问请求的响应表征访问失败的情况下,根据目标服务器在预设时长内对访问请求的响应计算所述目标服务器的病态值;
14.在计算得到的所述病态值大于所述预设的病态阈值的情况下,将所述目标服务器的负载状态变更为所述极限状态。
15.可选地,所述在根据所述病态值,确定是否允许所述访问请求访问所述目标服务器,包括:
16.通过随机算法产生随机数,并通过比较所述随机数与所述病态值的大小关系,确定丢弃本所述访问请求或者将所述访问请求发送给所述目标服务器。
17.可选地,所述根据目标服务器在预设时长内对访问请求的响应计算所述目标服务器的病态值,包括:
18.开启时长为第一时长的第一时间窗口;
19.针对所述目标服务器在所述第一时间窗口内对访问请求的响应执行以下操作:
20.统计表征访问成功的第一响应次数以及表征访问失败的第二响应次数;
21.在每次更新所述第一响应次数以及所述第二响应次数后,根据更新后的所述第一响应次数以及所述第二响应次数计算得到所述目标服务器的第一病态值。
22.可选地,所述方法还包括:
23.在计算得到的第一病态值大于所述预设的病态阈值的情况下,将所述目标服务器的负载状态变更为所述极限状态,并关闭所述第一时间窗口。
24.可选地,所述方法还包括:
25.在计算得到的第一病态值大于所述预设的病态阈值的情况下,维持所述目标服务器的负载状态不变,并关闭所述第一时间窗口;以及,
26.开启时长为第二时长的第二时间窗口;
27.针对所述目标服务器在所述第二时间窗口内的对访问请求的响应执行统计表征访问成功的第一响应次数以及表征访问失败的第二响应次数,在每次更新所述第一响应次数以及所述第二响应次数后,根据更新后的所述第一响应次数以及所述第二响应次数计算得到所述目标服务器的第二病态值的操作,直到计算得到的所述第二病态值大于所述预设的病态阈值的情况下,将所述目标服务器的负载状态变更为所述极限状态并关闭所述第二时间窗口,或者直到所述第二时间窗口达到所述第二时长时,维持所述目标服务器的负载状态不变,并关闭所述第二时间窗口。
28.可选地,所述第二响应次数包括第三响应次数,或者所述第二响应次数包括所述第三响应次数以及第四响应次数,其中,所述第三响应次数是由服务器异常原因导致的访问失败的响应次数,所述第四响应次数是由网络异常原因导致的访问失败的响应次数。
29.可选地,所述统计表征访问成功的第一响应次数以及表征访问失败的第二响应次数,包括:
30.针对在所述预设时长内已统计的每一所述响应的响应耗时,根据消除长尾效应的算法,删除已统计的响应中的异常响应,得到有效响应;
31.统计所述有效响应中表征访问成功的第一响应次数以及表征访问失败的第二响应次数。
32.根据本公开实施例的第二方面,提供一种流量控制装置,所述装置包括:
33.第一获取模块,用于响应于针对目标服务器的访问请求,获取所述目标服务器的负载状态;
34.第二获取模块,用于在所述负载状态为极限状态的情况下,获取所述目标服务器的病态值;其中,所述极限状态用于表征体现所述目标服务器的负载大小的病态值达到预
设病态阈值,所述病态值与所述目标服务器对历史访问请求的响应中表征访问失败的响应次数正相关;
35.第一确定模块,用于根据所述病态值,确定是否允许所述访问请求访问所述目标服务器。
36.根据本公开实施例的第三方面,提供一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一方面中任一项所述方法的步骤。
37.根据本公开实施例的第四方面,提供一种电子设备,包括:
38.存储器,其上存储有计算机程序;
39.处理器,用于执行所述存储器中的所述计算机程序,以实现上述第一方面中任一项所述方法的步骤。
40.采用上述技术方案,至少能够达到如下技术效果:
41.通过响应于针对目标服务器的访问请求,获取目标服务器的负载状态,在目标服务器的负载状态为极限状态的情况下,获取目标服务器的病态值,并根据病态值,确定是否允许访问请求访问目标服务器。由于病态值与目标服务器对历史访问请求的响应中表征访问失败的响应次数正相关,因此病态值可以在一定程度上表征目标服务器的负载大小,在病态值达到预设的病态阈值,也即目标服务器的负载状态为极限状态时,根据病态值来确定是否允许访问请求访问目标服务器,以对访问请求进行限流,从而减轻目标服务器的负载压力,避免目标服务器瘫痪。
42.本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
43.附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
44.图1是本公开一示例性实施例示出的一种流量控制方法的流程图。
45.图2是本公开一示例性实施例示出的一种流量控制装置的框图。
46.图3是本公开一示例性实施例示出的一种电子设备的框图。
具体实施方式
47.以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
48.应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
49.需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员
应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
50.相关技术中,企业的数据生产中心通过对互联网上的部分网站进行不等并发量的访问来生产和采集互联网数据,由于互联网上不同网站具有不同的负载量,若在进行数据生产时的访问量达到了某一网站服务器负载的极限,则可能导致该网站瘫痪而无法对外提供服务,这既会造成该网站服务器的经济损失,也会为企业的数据生产中心带来相应的纠纷。然而,为了生产和采集到有效的数据,对网站服务器进行大规模的访问是必不可少的。
51.因此,目前迫切需要一种能够在不等并发量的访问过程中避免不同网站服务器瘫痪的技术方案。
52.有鉴于此,本公开提供一种流量控制方法、装置、存储介质及电子设备,以解决相关技术中存在的问题。
53.本公开提供的技术方案的实施环境包括服务器以及终端。其中,该服务器可以是网站服务器,终端可以通过自身的浏览器访问该网站服务器。该服务器还可以是应用程序服务器,终端可以通过自身安装的应用程序客户端访问该应用程序服务器。此外,服务器与终端之间还可以存在网关,终端对服务器的访问过程例如可以为:终端向网关发送用于访问服务器的访问请求,网关将该访问请求发送给服务器,服务器将针对该访问请求的响应发送给网关,网关将该响应返回给终端。其中,终端可以为移动电话、智能电话、笔记本电脑、数字广播接收器、个人数字助理(pda)、平板电脑(pda)等用户设备(user equipment,ue)。
54.下面对本公开的技术方案进行详细的实施例说明。
55.图1是根据本公开一示例性实施例示出的一种流量控制方法的流程图,该方法例如可以应用于上述实施环境中的网关或者终端,如图1所示,该方法包括:
56.s101、响应于针对目标服务器的访问请求,获取所述目标服务器的负载状态。
57.s102、如果所述负载状态为极限状态,则获取所述目标服务器的病态值;其中,所述极限状态用于表征体现所述目标服务器的负载大小的病态值达到预设的病态阈值,所述病态值与所述目标服务器对历史访问请求的响应中表征访问失败的响应次数正相关。
58.在本公开中,可以监测到所有用于访问目标服务器的访问请求,并且接收到目标服务器针对访问请求所做出的响应。可以理解,目标服务器针对访问请求所做出的响应可以在一定程度上表征目标服务器的负载大小。在此基础上,可以根据目标服务器在预设时长内对访问请求的响应计算出表征目标服务器负载状态的病态值。其中,预设时长可以根据实际情况进行设定,通常不低于目标服务器的响应超时时长,例如,在目标服务器的响应超时时长为120s的情况下,预设时长可以为150s、180s等。病态值与目标服务器针对访问请求所做出的响应中表征访问失败的响应次数正相关,不难理解,当目标服务器针对访问请求的响应中表征访问失败的响应次数越多时,目标服务器的病态值就越高,其负载压力也越大。
59.可以理解的是,目标服务器的病态值可以表征目标服务器的负载大小,因此可以根据病态值的大小确定目标服务器的负载状态。
60.需说明的是,目标服务器的负载状态可包括极限状态和非极限状态。其中,极限状态可用于表征病态值达到预设的病态阈值,非极限状态可用于表征病态值未达到预设的病态阈值。当病态值达到预设的病态阈值时,目标服务器可能已处于瘫痪状态或者处于瘫痪
临界点。当目标服务器处于瘫痪状态时,可以通过本实施例的流量控制方法及时限流,从而使目标服务器从瘫痪状态快速恢复到正常状态;当目标服务器处于瘫痪临界点时,可以通过本实施例的流量控制方法提前限流,从而避免目标服务器陷入瘫痪状态。
61.s103、根据所述病态值,确定是否允许所述访问请求访问所述目标服务器。
62.可以理解的是,在目标服务器的负载状态为极限状态的情况下,可以通过限流来缓解目标服务器的负载压力。具体地,在目标服务器的负载状态为极限状态的情况下,获取到目标服务器的病态值,并基于其病态值丢弃部分用于访问目标服务器的访问请求,以减小目标服务器的病态值的大小,从而使目标服务器的负载状态从极限状态变更为非极限状态。
63.需说明的是,在目标服务器的负载状态为极限状态的情况下,基于病态值丢弃部分用于访问目标服务器的访问请求,可以缓解目标服务器的负载压力,由于,目标服务器的病态值是根据目标服务器在预设时长内对访问请求的响应计算得到的,并且与目标服务器的响应中表征访问失败的响应次数正相关,因此,在目标服务器的负载压力得到缓解的情况下,目标服务器的响应中表征访问失败的响应次数会相应减少,也即病态值会相应减小,在病态值减小到比预设的病态阈值小时,目标服务器的负载状态就可以从极限状态变更为非极限状态。
64.值得说明的是,上述实施环境中的服务器可以为多个,上述方法实施例只是针对多个服务器中的任一服务器进行的说明。在具体实施时,本公开实施例的执行主体可以在本地为多个服务器维护一张状态表,该状态表记录针对每一服务器计算得到的病态值以及负载状态。
65.此外,在目标服务器的负载状态为极限状态的情况下,每接收一次目标服务器针对访问请求的响应,即可以计算一次病态值,并且实时更新上述状态表中对应目标服务器的病态值,以监测目标服务器的病态值是否小于预设的病态阈值,从而决策是否变更负载状态;在目标服务器的负载状态为非极限状态的情况下,若未接收到目标服务器针对访问请求的响应中表征访问失败的响应,则无需计算病态值,也就是说,为目标服务器维护对应的负载状态可以避免在目标服务器的负载未发生崩溃的情况下,为了获知目标服务器的负载情况,而频繁计算目标服务器的病态值,从而有效减小了计算开销。应当理解,在目标服务器的负载状态为非极限状态的情况下,若接收到目标服务器针对访问请求的响应中表征访问失败的响应,则可以开始计算目标服务器的病态值,并且实时更新上述状态表中对应目标服务器的病态值,以监测目标服务器的病态值是否大于预设的病态阈值,从而决策是否变更负载状态。
66.采用上述方法,通过响应于针对目标服务器的访问请求,获取目标服务器的负载状态,在目标服务器的负载状态为极限状态的情况下,获取目标服务器的病态值,并根据病态值,确定是否允许访问请求访问目标服务器。由于病态值与目标服务器对历史访问请求的响应中表征访问失败的响应次数正相关,因此病态值可以在一定程度上表征目标服务器的负载大小,在病态值达到预设的病态阈值,也即目标服务器的负载状态为极限状态时,根据病态值来确定是否允许访问请求访问目标服务器,以对访问请求进行限流,从而减轻目标服务器的负载压力,避免目标服务器瘫痪。
67.为了使本领域普通技术人员更加容易理解本公开提供的流量控制方法,下面对上
述各步骤进行详细举例说明。
68.可选地,在所述目标服务器的负载状态为所述极限状态,并且所述目标服务器对访问请求的响应表征访问成功的情况下,根据目标服务器在预设时长内对访问请求的响应计算所述目标服务器的病态值;
69.在计算得到的所述病态值小于所述预设的病态阈值的情况下,将所述目标服务器的负载状态变更为非极限状态,所述非极限状态用于表征所述病态值未达到所述预设的病态阈值。
70.需说明的是,在目标服务器的负载状态为极限状态的情况下,每接收一次目标服务器针对访问请求的响应,即可以计算一次病态值,并且实时更新上述状态表中对应目标服务器的病态值,以监测目标服务器的病态值是否小于预设的病态阈值,从而决策是否变更负载状态。其中,若目标服务器针对访问请求的响应表征访问失败,则可根据实时计算得到的病态值更新上述状态表中对应的目标服务器的病态值;若目标服务器针对访问请求的响应表征访问成功,则将实时计算得到病态值与预设的病态阈值进行比较,在该病态值小于预设的病态阈值的情况下,可根据该病态值更新上述状态表中对应目标服务器的病态值,并且将该状态表中对应目标服务器的负载状态从极限状态变更为非极限状态。
71.可选地,所述负载状态还包括非极限状态,所述非极限状态用于表征所述病态值未达到所述预设的病态阈值,所述方法还包括:
72.在所述目标服务器的负载状态为所述非极限状态,并且所述目标服务器对访问请求的响应表征访问失败的情况下,根据目标服务器在预设时长内对访问请求的响应计算所述目标服务器的病态值;
73.在计算得到的所述病态值大于所述预设的病态阈值的情况下,将所述目标服务器的负载状态变更为所述极限状态。
74.示例地,在目标服务器的负载状态为非极限状态的情况下,若监测到用于访问目标服务器的访问请求,则发送访问请求至目标服务器;若接收到的目标服务器针对访问请求所做出的响应未表征访问失败,则继续发送访问请求至目标服务器,直到首次接收到表征访问失败的响应时,开始根据在预设时长内目标服务器对访问请求的响应计算出目标服务器的病态值,并且根据计算得到的目标服务器的病态值来决策是否进行限流。应当理解,在首次接收到表征访问失败的响应并在预设时长内计算得到病态值之后,若该病态值小于预设的病态阈值,还可以在下一次接收到表征访问失败的响应时再次根据在预设时长内目标服务器对访问请求的响应计算出目标服务器的病态值,以此类推,直到计算得到病态值大于预设的病态阈值。
75.需说明的是,随着目标服务器针对访问请求的响应中表征访问失败的响应次数越多,目标服务器的病态值也越大,在计算得到的病态值大于预设的病态阈值的情况下,可以将目标服务器的负载状态从非极限状态变更为极限状态。在目标服务器的负载状态为极限状态的情况下,则可以对用于访问目标服务器的访问请求进行限流,以减轻目标服务器的负载压力,从而避免目标服务器陷入瘫痪。
76.预设的病态阈值可以是根据经验设置的处于计算得到病态值的值域范围内的数值。示例地,预设的病态阈值可以基于服务器处于瘫痪临界点时计算得到的病态值进行设置。
77.可选地,本公开实施例可以通过如下公式进行计算:病态值=第二响应次数*第二预设权重-第一响应次数*第一预设权重,其中,第一响应次数可以表示目标服务器在预设时长内对访问请求的响应中表征访问成功的响应次数,第一预设权重可以表示第一响应次数的权重,根据实际情况而定,可以为固定的经验值,例如为9.5、10等,第二响应次数可以表示目标服务器在预设时长内对访问请求的响应中表征访问失败的响应次数,第二预设权重可以表示第二响应次数的权重,根据实际情况而定,可以为固定的经验值,例如为2.5、3等。
78.为了避免由于第一权重和第二权重的设置导致计算得到的病态值的值域范围较大,不利于设置上述病态阈值,本公开实施例还可以通过先计算第二响应次数与第二预设权重的第一乘积,以及第一响应次数与第一预设权重的第二乘积,以及第一响应次数和第二响应次数之和与第三预设权重之间的第三乘积,再计算第一乘积与第二乘积之间的差与第三乘积之间的比值,得到目标服务器的病态值。这样,通过对第一预设权重、第二预设权重以及第三预设权重进行设置,可以使得计算得到的病态值的值域处于指定范围内,有利于根据经验设置病态阈值。
79.可以理解,第二预设权重越大,则当目标服务器的响应中表征访问失败响应次数增多时,病态值增大得就越快,也即可以更快的限流;相应地,若第二预设权重设置得过大,则有可能导致过于提前限流,不利于数据的采集;若第二预设权重设置得过小,则有可能导致在服务器已经瘫痪后才能开始限流。因此,第二预设权重可以根据实际情况进行设定,避免过大或过小。
80.另外,在目标服务器的负载状态为非极限状态且目标服务器针对访问请求的响应开始出现表征访问失败的响应时,仍然可以继续发送访问请求至目标服务器,直到目标服务器的病态值大于预设的病态阈值且负载状态变更为极限状态后才开始限流,这有利于数据的生产和采集,并且根据病态值的大小实时判定目标服务器的状况,可以及时变更目标服务器的负载状态,从而对访问请求进行限流,避免目标服务器陷入瘫痪。
81.可选地,所述根据所述病态值,确定是否允许所述访问请求访问所述目标服务器,包括:
82.通过随机算法产生随机数,并通过比较所述随机数与所述病态值的大小关系,确定丢弃所述访问请求或者将所述访问请求发送给所述目标服务器。
83.示例地,在目标服务器的负载状态为极限状态的情况下,可以对用于访问目标服务器的访问请求进行限流,具体地,在目标服务器的负载状态为极限状态且接收到用于访问目标服务器的访问请求时,通过随机算法产生随机数,并通过比较随机数和目标服务器当前病态值的大小关系,从而确定丢弃本次接收到的访问请求或者将本次接收到的访问请求发送给目标服务器。其中,限流可以表示丢弃部分用于访问所述目标服务器的访问请求的操作。
84.在一些实施例中,可以在目标服务器当前病态值大于随机数时丢弃访问请求,相应地,在目标服务器当前病态值小于随机数时,发送访问请求;或者,在目标服务器当前病态值小于随机数时丢弃访问请求,在目标服务器当前病态值大于随机数时,发送访问请求,本公开对此不作具体限定。
85.可选地,在目标服务器的负载状态为非极限状态的情况下,所述根据目标服务器
在预设时长内对访问请求的响应计算所述目标服务器的病态值,包括:
86.开启时长为第一时长的第一时间窗口;
87.针对所述目标服务器在所述第一时间窗口内对访问请求的响应执行以下操作:
88.统计表征访问成功的第一响应次数以及表征访问失败的第二响应次数;在每次更新所述第一响应次数以及所述第二响应次数后,根据更新后的所述第一响应次数以及所述第二响应次数计算得到所述目标服务器的第一病态值。
89.其中,该第二响应次数包括第三响应次数,或者为该第三响应次数以及第四响应次数之和,其中,该第三响应次数是由服务器异常原因导致的访问失败的响应次数,该第四响应次数是由网络异常原因导致的访问失败的响应次数。
90.示例地,上述预设时长可以为该第一时长,且该第一时长为不低于目标服务器的响应超时时长的时长。本公开通过开启时长为第一时长的第一时间窗口,以针对目标服务器在第一时间窗口内对访问请求的响应进行统计。
91.具体地,统计表征访问成功的第一响应次数以及表征访问失败的第二响应次数,在每次更新第一响应次数以及第二响应次数后,根据更新后的第一响应次数以及第二响应次数计算得到所述目标服务器的第一病态值,也即,每接收到一次目标服务器针对访问请求的响应,则根据响应结果更新第一响应次数和/或第二响应次数并计算第一病态值。
92.可选地,所述第二响应次数包括第三响应次数,或者所述第二响应次数包括所述第三响应次数以及第四响应次数,其中,所述第三响应次数是由服务器异常原因导致的访问失败的响应次数,所述第四响应次数是由网络异常原因导致的访问失败的响应次数。
93.需说明的是,目标服务器针对访问请求的响应中表征访问失败的响应有可能是由服务器异常导致的,也有可能是由网络异常导致的。根据rfc 7231标准,由服务器异常导致访问失败时,目标服务器返回的响应通常为501、503以及504等表征服务器异常的响应状态码;由网络异常导致访问失败时,通常可以通过一些自定义状态码捕捉到异常信息,例如:531,网络连接请求被目标服务器拒绝;532,无法路由到目标服务器等。
94.示例地,第二响应次数为第三响应次数,第三响应次数是由服务器异常原因导致的访问失败的响应次数。通过第三响应次数可以计算得到目标服务器的第一病态值,并根据目标服务器的第一病态值设置负载状态,以及根据负载状态和第一病态值决策是否进行限流。
95.在其他可能的方式中,第二响应次数为第三响应次数以及第四响应次数之和,第四响应次数是由网络异常原因导致的访问失败的响应次数。通过第三响应次数和第四响应次数可以计算得到包含网络异常的目标服务器的第一病态值,在这种情况下,即便仅通过第三响应次数计算得到的第一病态值小于预设的病态阈值,若通过第三响应次数和第四响应次数可以计算得到的包含网络异常的第一病态值大于预设的病态阈值,则也可以将目标服务器的负载状态变更为极限状态,以对用于访问目标服务器的访问请求进行限流。可以理解,对访问请求进行限流,不仅可以缓解目标服务器的负载压力,也可以缓解网络传输过程中的传输压力。
96.进一步地,在计算得到第一病态值后,可以通过如下两种方式设置目标服务器的负载状态。
97.方式一,在计算得到的第一病态值大于预设的病态阈值的情况下,将所述目标服
务器的负载状态变更为所述极限状态,并关闭所述第一时间窗口。
98.示例地,在第一时间窗口的第一时长范围内,每一次获取到服务器的响应,均进行一次第一病态值的计算,并将计算得到的第一病态值与预设的病态阈值进行一次比较,这样,在第一时间窗口达到第一时长之前,计算得到的第一病态值即可能大于预设的病态阈值,在此种情况下,可以直接关闭第一时间窗口并将目标服务器的负载状态变更为极限状态,因此,目标服务器的负载状态的变更无需等到第一时间窗口的时长耗尽,提升了对目标服务器开启流量控制的及时性;若在第一时间窗口达到第一时长时,计算得到的第一病态值仍小于预设的病态阈值,则维持目标服务器的负载状态不变,且关闭第一时间窗口。
99.方式二,在计算得到的第一病态值大于预设的病态阈值的情况下,维持所述目标服务器的负载状态不变,并关闭所述第一时间窗口;以及,
100.开启时长为第二时长的第二时间窗口;
101.针对所述目标服务器在所述第二时间窗口内的对访问请求的响应执行统计表征访问成功的第一响应次数以及表征访问失败的第二响应次数,在每次更新所述第一响应次数以及所述第二响应次数后,根据更新后的所述第一响应次数以及所述第二响应次数计算得到所述目标服务器的第二病态值的操作,直到计算得到的所述第二病态值大于所述预设的病态阈值的情况下,将所述目标服务器的负载状态变更为所述极限状态并关闭所述第二时间窗口,或者直到所述第二时间窗口达到所述第二时长时,维持所述目标服务器的负载状态不变,并关闭所述第二时间窗口。
102.需说明的是,在第一轮时间窗口内统计得到的表征访问失败的响应次数中可能包括偶发性或暂时性异常的响应次数,这些异常通常可能很快得到消除,若仅根据第一轮时间窗口的统计结果来决策是否更新负载状态则可能存在较大的误差,因此,为了减小对目标服务器针对访问请求的响应的统计误差,本公开在第一轮时间窗口计算得到的第一病态值大于预设的病态阈值的情况下,还可以维持目标服务器的负载状态不变,并且关闭第一时间窗口,之后开启时长为第二时长的第二时间窗口,对目标服务器针对访问请求的响应进行第二轮统计。其中,该第二时长为不低于目标服务器的响应超时时长的时长。在此种情况下,上述预设时长为第一时长以及该第二时长之和。
103.具体地,针对目标服务器在第二时间窗口内的对访问请求的响应执行前述操作,直到计算得到的第二病态值大于预设的病态阈值的情况下,将目标服务器的负载状态变更为极限状态并关闭第二时间窗口;或者,直到第二时间窗口达到第二时长时,在维持目标服务器的负载状态不变的情况下,关闭第二时间窗口。
104.可选地,所述统计表征访问成功的第一响应次数以及表征访问失败的第二响应次数,包括:
105.针对在所述预设时长内已统计的每一所述响应的响应耗时,根据消除长尾效应的算法,删除已统计的响应中的异常响应,得到有效响应;
106.统计所述有效响应中表征访问成功的第一响应次数以及表征访问失败的第二响应次数。
107.示例地,针对在预设时长内已统计的每一响应的响应耗时对所有响应进行升序排序,删除排序后的位于后四分之一位置的响应,也即删除异常响应,相应地,位于前四分之三位置的响应为有效响应。统计得到有效响应中表征访问成功的第一响应次数以及表征访
问失败的第二响应次数,以计算病态值。可以理解,排序后位于后四分之一位置的响应的由于网络异常具有过长的响应时长,若将这部分数据纳入响应次数的统计,会对目标服务器病态值的计算带来较大的误差。因此,通过消除长尾效应,可以降低网络带来的部分异常影响,能够更准确地判断目标服务器的异常情况。
108.此外,根据实际情况的不同,也可以在根据响应耗时对响应进行排序后删除位于其他位置的响应,这部分被删除的响应即为异常响应,剩余部分的响应即为有效响应,本公开对此不作具体限定。
109.采用上述方法,通过目标服务器在预设时长内对访问请求的响应为每一个目标服务器维护对应的负载状态和病态值,并且根据目标服务器的负载状态和病态值,决策是否变更目标服务器的负载状态,以及是否对用于访问目标服务器的访问请求进行限流,在目标服务器的负载状态为极限状态时,根据病态值丢弃部分用于访问目标服务器的访问请求以进行限流,从而减轻目标服务器的负载压力,避免目标服务器瘫痪。
110.基于同一发明构思,本公开还提供一种流量控制装置,参见图2,图2是根据本公开一示例性实施例示出的一种流量控制装置的框图,如图2所示,该流量控制装置100包括:
111.第一获取模块101,用于响应于针对目标服务器的访问请求,获取所述目标服务器的负载状态;
112.第二获取模块102,用于在所述负载状态为极限状态的情况下,获取所述目标服务器的病态值;其中,所述极限状态用于表征体现所述目标服务器的负载大小的病态值达到预设的病态阈值,所述病态值与所述目标服务器对历史访问请求的响应中表征访问失败的响应次数正相关;
113.确定模块103,用于根据所述病态值,确定是否允许所述访问请求访问所述目标服务器。
114.采用上述装置,通过响应于针对目标服务器的访问请求,获取目标服务器的负载状态,在目标服务器的负载状态为极限状态的情况下,获取目标服务器的病态值,并根据病态值,确定是否允许访问请求访问目标服务器。由于病态值与目标服务器对历史访问请求的响应中表征访问失败的响应次数正相关,因此病态值可以在一定程度上表征目标服务器的负载大小,在病态值达到预设的病态阈值,也即目标服务器的负载状态为极限状态时,根据病态值来确定是否允许访问请求访问目标服务器,以对访问请求进行限流,从而减轻目标服务器的负载压力,避免目标服务器瘫痪。
115.可选地,所述装置100还包括:
116.第一计算模块,用于在所述目标服务器的负载状态为所述极限状态,并且所述目标服务器对访问请求的响应表征访问成功的情况下,根据目标服务器在预设时长内对访问请求的响应计算所述目标服务器的病态值;
117.第一变更模块,用于在计算得到的所述病态值小于所述预设的病态阈值的情况下,将所述目标服务器的负载状态变更为非极限状态,所述非极限状态用于表征所述病态值未达到所述预设的病态阈值。
118.可选地,所述装置100还包括:
119.第二计算模块,用于在所述目标服务器的负载状态为所述非极限状态,并且所述目标服务器对访问请求的响应表征访问失败的情况下,根据目标服务器在预设时长内对访
问请求的响应计算所述目标服务器的病态值。
120.第二变更模块,用于在计算得到的所述病态值大于所述预设的病态阈值的情况下,将所述目标服务器的负载状态变更为所述极限状态。
121.可选地,所述确定模块103还用于:
122.通过随机算法产生随机数,并通过比较所述随机数与所述病态值的大小关系,确定丢弃所述访问请求或者将所述访问请求发送给所述目标服务器。
123.可选地,所述第二计算模块还用于:
124.开启时长为第一时长的第一时间窗口;
125.针对所述目标服务器在所述第一时间窗口内对访问请求的响应执行以下操作:
126.统计表征访问成功的第一响应次数以及表征访问失败的第二响应次数;
127.在每次更新所述第一响应次数以及所述第二响应次数后,根据更新后的所述第一响应次数以及所述第二响应次数计算得到所述目标服务器的第一病态值。
128.可选地,所述装置100还包括:
129.第三变更模块,用于在计算得到的第一病态值大于所述预设的病态阈值的情况下,将所述目标服务器的负载状态变更为所述极限状态,并关闭所述第一时间窗口。
130.可选地,所述装置100还包括:
131.维持模块,用于在计算得到的第一病态值大于所述预设的病态阈值的情况下,维持所述目标服务器的负载状态不变,并关闭所述第一时间窗口;以及,
132.开启模块,用于开启时长为第二时长的第二时间窗口;
133.执行模块,用于针对所述目标服务器在所述第二时间窗口内的对访问请求的响应执行统计表征访问成功的第一响应次数以及表征访问失败的第二响应次数,在每次更新所述第一响应次数以及所述第二响应次数后,根据更新后的所述第一响应次数以及所述第二响应次数计算得到所述目标服务器的第二病态值的操作,直到计算得到的所述第二病态值大于所述预设的病态阈值的情况下,将所述目标服务器的负载状态变更为所述极限状态并关闭所述第二时间窗口,或者直到所述第二时间窗口达到所述第二时长时,维持所述目标服务器的负载状态不变,并关闭所述第二时间窗口。
134.可选地,所述第二响应次数包括第三响应次数,或者所述第二响应次数包括所述第三响应次数以及第四响应次数,其中,所述第三响应次数是由服务器异常原因导致的访问失败的响应次数,所述第四响应次数是由网络异常原因导致的访问失败的响应次数。
135.可选地,所述装置100还包括:
136.删除模块,用于针对在所述预设时长内已统计的每一所述响应的响应耗时,根据消除长尾效应的算法,删除已统计的响应中的异常响应,得到有效响应;
137.统计模块,用于统计所述有效响应中表征访问成功的第一响应次数以及表征访问失败的第二响应次数。
138.关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
139.基于同一发明构思,本公开实施例还提供一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述流量控制方法的步骤。
140.具体地,该计算机可读存储介质可以是闪存、硬盘、多媒体卡、卡型存储器(例如,
sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘、服务器、公有云服务器等等。
141.关于上述实施例中的计算机可读存储介质,其上存储的计算机程序被执行时实现流量控制方法步骤已将在有关该方法的实施例中进行了详细描述,此处不做详细阐述。
142.基于同一发明构思,本公开实施例还提供一种电子设备,该电子设备包括:
143.存储器,其上存储有计算机程序;
144.处理器,用于执行存储器中的计算机程序,以实现上述的流量控制方法的步骤。
145.图3是根据一示例性实施例示出的一种电子设备200的框图。如图3所示,该电子设备200可以包括:处理器201,存储器202。该电子设备200还可以包括多媒体组件203,输入/输出(i/o)接口204,以及通信组件205中的一者或多者。
146.其中,处理器201用于控制该电子设备200的整体操作,以完成上述的流量控制方法中的全部或部分步骤。存储器202用于存储各种类型的数据以支持在该电子设备200的操作,这些数据例如可以包括用于在该电子设备200上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器202可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(static random access memory,简称sram),电可擦除可编程只读存储器(electrically erasable programmable read-only memory,简称eeprom),可擦除可编程只读存储器(erasable programmable read-only memory,简称eprom),可编程只读存储器(programmable read-only memory,简称prom),只读存储器(read-only memory,简称rom),磁存储器,快闪存储器,磁盘或光盘。多媒体组件203可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器202或通过通信组件205发送。音频组件还包括至少一个扬声器,用于输出音频信号。i/o接口204为处理器201和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件205用于该电子设备200与其他设备之间进行有线或无线通信。无线通信,例如wi-fi,蓝牙,近场通信(near field communication,简称nfc),2g、3g、4g或5g,nb-iot(narrow band internet of things,窄带物联网),或者它们中一种或者多种的组合,因此相应的该通信组件205可以包括:wi-fi模块,蓝牙模块,nfc模块。
147.在一示例性实施例中,电子设备200可以被一个或多个应用专用集成电路(application specific integrated circuit,简称asic)、数字信号处理器(digital signal processor,简称dsp)、数字信号处理设备(digital signal processing device,简称dspd)、可编程逻辑器件(programmable logic device,简称pld)、现场可编程门阵列(field programmable gate array,简称fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的流量控制方法。
148.以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
149.另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
150.此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1