本发明涉及互联网技术领域,尤其涉及一种流量控制方法、装置、设备和计算机可读存储介质。
背景技术:
随着互联网的快速发展,用户有了规模性的增长,用户的吃、穿、住、行都离不开网络,正是这种规模性的增长,尤其在当遇到大型网络活动时,某一时刻的瞬间流量较大,会对现有系统造成了很大的负担,为了防止系统过载,普遍会采用限流熔断等流量控制策略。限流熔断是指预估服务器能够承载的最大流量,根据服务器能够承载的最大流量来进行限流,保证网络服务的可用性,保障用户的网络体验良好。
目前,流量控制策略大多采用令牌桶、漏桶等算法。
漏桶算法把请求比作是水,水来了都先放进桶里,并以限定的速度出水,当水来得过猛而出水不够快时就会导致水直接溢出,即拒绝服务。对于很多应用场景来说,除了要求能够限制数据的平均传输速率外,还要求允许某种程度的突发流量,这时令牌桶算法更为适合。
令牌桶算法是系统以恒定的速率产生令牌,然后把令牌放到令牌桶中,当令牌桶中的令牌达到预设数量之后,再向令牌桶中放令牌,令牌将会被丢弃。当需要处理一个请求时,需要从令牌桶中取出一个令牌,如果此时令牌桶中没有令牌,则拒绝该请求。
基于令牌桶、漏桶等算法的静态限流策略,在预估的峰值流量准确并且在网络环境稳定的情况下有着不错的表现。但是,在峰值流量预估不准确或者网络环境不稳定的情况下,流量控制具有不可控性。例如:在当下较为流行的微服务网络架构下,应用服务都是分布式部署的,而且上下游依赖较多,在服务器和应用不稳定的情况下,微服务网络的峰值流量不可预知,往往没有达到预估峰值流量,服务已经不可用或者超过了上游限制的超时时间,再或者服务的运行时容量在预估峰值流量之上。所以基于这种静态限流的方式,在不稳定的网络环境和峰值流量预估不准确时,流量控制不可控,容易导致误熔断和无效限流的问题发生,影响网络体验和业务拓展。
技术实现要素:
本发明实施例的主要目的在于提供一种流量控制方法、装置、设备和计算机可读存储介质,以解决在现有技术中,在峰值流量预估不准确或者网络环境不稳定的情况下,流量控制具有不可控性的问题。
针对上述技术问题,本发明实施例是通过以下技术方案来解决的:
本发明实施例提供了一种流量控制方法,包括:在流量控制周期开始之后,接收业务请求;读取流量控制状态,在所述流量控制状态为正常状态的情况下,处理接收到的业务请求;在处理所述业务请求的时间达到预设的超时时间时,中断对所述业务请求的处理,并确定所述流量控制周期内的中断次数;在所述中断次数大于预设的熔断阈值时,将所述流量控制状态设置为熔断状态,以便在下一个流量控制周期结束之前停止处理接收到的业务请求。
其中,所述处理接收到的业务请求,包括:利用执行线程,处理所述业务请求;所述在处理所述业务请求的时间达到预设的超时时间时,中断对所述业务请求的处理,包括:在处理所述业务请求的时间达到预设的超时时间时,通过定时线程触发所述执行线程中断对所述业务请求的处理。
其中,在所述处理接收到的业务请求之前,还包括:读取流量控制开关的状态;在所述流量控制开关为开启状态时,读取所述流量控制状态;在所述流量控制状态为正常状态的情况下,为所述业务请求对应初始化所述执行线程并且初始化所述定时线程。
其中,所述初始化所述执行线程,包括:新建执行线程,以便利用新建的所述执行线程处理所述业务请求;或者,在预设的执行线程池中,查询空闲的执行线程,以便利用所述空闲的执行线程处理所述业务请求。
其中,所述初始化所述定时线程,包括:新建定时线程,以便在处理所述业务请求的时间达到预设的超时时间时,通过新建的所述定时线程触发所述执行线程中断对所述业务请求的处理;或者,在预设的定时线程池中,查询空闲的定时线程,以便在处理所述业务请求的时间达到预设的超时时间时,通过所述空闲的所述定时线程触发所述执行线程中断对所述业务请求的处理。
其中,所述方法还包括:在所述执行线程出现异常,所述定时线程触发所述执行线程中断对所述业务请求的处理,所述流量控制状态被设置为熔断状态的情况下,进行预设的异常中断监控操作和/或业务请求监控操作。
其中,在所述处理所述业务请求之前,还包括:将所述执行线程的状态设置为执行状态;所述在处理所述业务请求的时间达到预设的超时时间时,通过定时线程触发所述执行线程中断对所述业务请求的处理之后,还包括:通过所述定时线程将所述执行线程的状态调整为超时状态。
其中,所述方法还包括:在利用所述执行线程成功处理所述业务请求之后,将所述执行线程的状态修改为成功状态,并通过所述执行线程中断所述定时线程。
本发明实施例还提供了一种流量控制装置,包括:接收模块,用于在流量控制周期开始之后,接收业务请求;处理模块,用于读取流量控制状态,在所述流量控制状态为正常状态的情况下,处理接收到的业务请求;中断模块,用于在处理所述业务请求的时间达到预设的超时时间时,中断对所述业务请求的处理,并确定所述流量控制周期内的中断次数;熔断模块,用于在所述中断次数大于预设的熔断阈值时,将所述流量控制状态设置为熔断状态,以便在下一个流量控制周期结束之前停止处理接收到的业务请求。
本发明实施例还提供了一种流量控制设备,所述流量控制设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述任一项所述的流量控制方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有流量控制程序,所述流量控制程序被处理器执行时实现上述任一项所述的流量控制方法的步骤。
本发明实施例的有益效果如下:
在本发明实施例中,在流量控制状态为正常状态的情况下,处理业务请求,在处理时间超过超时时间时,中断对业务请求的处理,在一个流量控制周期中,如果中断处理业务请求的次数大于熔断阈值,则将流量控制状态设置为熔断状态。本发明实施例。本发明实施例从将流量控制状态设置为熔断状态开始,到下一个流量控制周期结束之前,将所述流量控制状态保持在熔断状态,在流量控制状态为熔断状态的情况下,对业务请求不进行处理,使业务服务器恢复可用状态。本发明实施例无需预估业务服务器的峰值流量,也无关网络环境是否稳定,通过超时时间动态地判断业务服务器的服务是否可用,并且根据流量控制状态弹性地控制流量的进入,流量控制简单且准确性较高,具有可控制性。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明一实施例的流量控制方法的流程图;
图2是根据本发明一实施例的流量控制方法的具体流程图;
图3是根据本发明一实施例的流量控制系统的结构图;
图4是根据本发明一实施例的流量控制装置的结构图;
图5是根据本发明一实施例的流量控制设备的结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,以下结合附图及具体实施例,对本发明作进一步地详细说明。
根据本发明的实施例,提供了一种流量控制方法。本发明实施例在业务服务器侧执行。
如图1所示,是根据本发明一实施例的流量控制方法的流程图。
步骤s110,在流量控制周期开始之后,接收业务请求。
流量控制周期,是指确定是否需要进行流量熔断的时间间隔。流量控制周期的时间长度可以是经验值或者通过实验获得的值。
业务请求,是指业务服务器需要处理的请求。
步骤s120,读取流量控制状态,在所述流量控制状态为正常状态的情况下,处理接收到的业务请求。
流量控制状态,用于指示是否需要对业务请求进行熔断处理。熔断处理是指拒绝对业务请求进行处理。
流量控制状态的种类包括:正常状态和熔断状态。
正常状态,是指不需要对业务请求进行熔断处理。
熔断状态,是指需要对业务请求进行熔断处理。
进一步地,读取流量控制状态;在流量控制状态为正常状态的情况下,处理接收到的业务请求;在流量控制状态为熔断状态的情况下,拒绝处理接收到的业务请求。
在本实施例中,可以根据业务请求的类型进行流量控制。例如:根据业务请求的类型,对于请求数量较大的类型对应的业务请求进行流量控制。
具体而言,在接收到业务请求之后,识别业务请求的类型;在该业务请求为预设类型时,读取流量控制状态,在流量控制状态为正常状态时,对该预设类型的业务请求进行处理;在流量控制状态为熔断状态时,拒绝对该预设类型的业务请求进行处理。预设类型的业务请求例如是视频获取请求。
步骤s130,在处理所述业务请求的时间达到预设的超时时间时,中断对所述业务请求的处理,并确定所述流量控制周期内的中断次数。
超时时间,是指业务服务器响应(处理)业务请求的最长服务响应时间。其中,超时时间为预设的经验值或者实验值。
如果响应业务请求的时间没有超过该超时时间,则认为业务请求被业务服务器正常处理。如果响应业务请求的时间超过该超时时间,则认为业务请求未被业务服务器正常处理,业务服务器的服务不可用。
针对中断次数的确定,可以在当前流量控制周期开始时,初始化中断次数(如初始化为0);每次中断对业务请求的处理,对中断次数进行累计。
进一步地,如果根据业务请求的类型进行流量控制,则根据需要进行流量控制的预设类型,可以在当前流量控制周期开始时,初始化预设类型对应的中断次数;每次中断对该预设类型的业务请求的处理,对该预设类型对应的中断次数进行累计。
步骤s140,在所述中断次数大于预设的熔断阈值时,将所述流量控制状态设置为熔断状态,以便在下一个流量控制周期结束之前停止处理接收到的业务请求。
熔断阈值,用于衡量业务服务器的服务是否可用。在中断次数大于该熔断阈值时,认为业务服务器的服务不可用。在中断次数小于等于该熔断阈值时,认为业务服务器的服务可用。
在本实施例中,如果根据业务请求的类型进行流量控制,则在下一个流量控制周期结束之前停止处理接收到的预设类型的业务请求。
在下一个流量控制周期结束之时,将流量控制状态调整为正常状态,以便开始继续对接收到的(预设类型的)业务请求进行处理。
在本发明实施例中,在流量控制状态为正常状态的情况下,处理业务请求,在处理时间超过超时时间时,中断对业务请求的处理,在一个流量控制周期中,如果中断处理业务请求的次数大于熔断阈值,则将流量控制状态设置为熔断状态。本发明实施例。本发明实施例从将流量控制状态设置为熔断状态开始,到下一个流量控制周期结束之前,将所述流量控制状态保持在熔断状态,在流量控制状态为熔断状态的情况下,不对业务请求进行处理,使业务服务器恢复可用状态。本发明实施例无需预估业务服务器的峰值流量,也无关网络环境是否稳定,通过超时时间动态地判断业务服务器的服务是否可用,并且根据流量控制状态弹性地控制流量的进入,流量控制简单且准确性较高,具有可控制性。
进一步地,本发明实施例根据业务服务器对业务请求的服务响应时间动态衡量业务服务在业务服务器上的可用性,从而进行限流熔断。例如:在微服务网络架构中,上游服务往往会对下游服务进行响应时间限制,如果业务服务器的服务响应时间超过上游服务要求的超时时间(服务响应时间),那么代表业务服务器的服务不可用。无论是网络的问题、cpu(centralprocessingunit,中央处理器)等硬件的问题,还是服务不稳定,都会反映到服务响应时间上,所以本发明实施例采用服务响应时间这个指标,来弹性的控制流量,在服务不可用时对流量进行限流熔断。
为了使本发明实施例更加容易理解,下面对本发明实施例的流量控制方法进行进一步地描述。进一步地,在每个流量控制周期执行一次本发明实施例的流程步骤。
如图2所示,是根据本发明一实施例的流量控制方法的具体流程图。
步骤s210,在流量控制周期开始之后,接收业务请求。
步骤s220,读取流量控制开关的状态。
流量控制开关,用于开启或者关闭本发明实施例的流量控制方法的流程。
流量控制开关的状态包括开启状态和关闭状态。
开启状态,表示开启本发明实施例的流量控制方法的流程。
关闭状态,表示停止本发明实施例的流量控制方法的流程。
步骤s230,在所述流量控制开关为开启状态时,读取所述流量控制状态。
在所述流量控制开关为关闭状态时,直接处理接收到的业务请求。
步骤s240,在所述流量控制状态为正常状态的情况下,为所述业务请求对应初始化执行线程并且初始化定时线程。
在所述流量控制状态为熔断状态的情况下,拒绝处理接收到的业务请求。
执行线程,用于对业务请求进行处理。
定时线程,用于对执行线程处理业务请求的时间进行超时判定。定时线程可以是定时器,也可以是定时触发线程。定时触发线程在初始化之后,可以在达到超时时间时,触发对应的执行线程中断对业务请求的处理。
在本实施例中,一个业务请求对应一个执行线程和一个定时线程。
初始化执行线程,包括:新建执行线程,以便利用新建的所述执行线程处理所述业务请求;或者,在预设的执行线程池中,查询空闲的执行线程,以便利用所述空闲的执行线程处理所述业务请求。
初始化定时线程,包括:新建定时线程,以便在处理所述业务请求的时间达到预设的超时时间时,通过新建的所述定时线程触发所述执行线程中断对所述业务请求的处理;或者,在预设的定时线程池中,查询空闲的定时线程,以便在处理所述业务请求的时间达到预设的超时时间时,通过所述空闲的所述定时线程触发所述执行线程中断对所述业务请求的处理。
步骤s250,利用执行线程,处理所述业务请求。
步骤s260,在处理所述业务请求的时间达到预设的超时时间时,通过定时线程触发所述执行线程中断对所述业务请求的处理,并确定所述流量控制周期内的中断次数。
步骤s270,在所述中断次数大于预设的熔断阈值时,将所述流量控制状态设置为熔断状态,以便在下一个流量控制周期结束之前停止处理接收到的业务请求。
在本发明实施例中,在所述执行线程出现异常,所述定时线程触发所述执行线程中断对所述业务请求的处理,所述流量控制状态被设置为熔断状态的情况下,进行预设的异常中断监控操作和/或业务请求监控操作。
执行线程出现异常,包括但不限于:执行线程池中的执行线程数量不足,执行线程处理业务请求超时。
异常中断监控操作,包括但不限于:确定被中断处理的业务请求的中断时间,当前流量控制周期接收到的业务请求的数量,当前流量控制周期中的中断次数。
业务请求监控操作,包括但不限于:确定被中断处理的业务请求的类型,被中断处理的业务请求的请求时间,被中断处理的业务请求的请求失败原因。其中,请求失败原因包括但不限于:执行线程处理超时。
通过异常中断监控操作和业务请求监控操作获得的数据,可以上报预设的终端设备,以便对业务服务器进行异常分析处理以及故障排除处理。
在本实施例中,可以在业务服务器接收业务请求的入口进行流量控制,根据超时时间动态地判断业务服务器的服务可用性,进而弹性地控制服务的流量,降低业务服务器经流量过载造成的宕机风险。
本发明提供了一种流量控制系统。该流量控制系统被设置在业务服务器用于接收业务请求的接口中,以便针对向业务服务器发送的业务请求进行流量控制。
如图3所示,是根据本发明一实施例的流量控制系统的结构图。
在本实施例中,流量控制系统包括:切面装置310,执行线程装置320,定时器装置330以及熔断器装置340。业务服务器包括接口350。
切面装置310,主要用于接收来自于接口350的业务请求,并且初始化执行线程和定时线程。
执行线程装置320,主要用于处理业务请求。进一步地,执行线程装置320可以维护执行线程池。该执行线程池包括:多个执行线程。
定时器装置330,主要用于执行超时判断。进一步地,定时器装置330可以维护定时线程池。该定时线程池包括:多个定时线程。
熔断器装置340,主要用于在每个流量控制周期内统计中断次数,并且在中断次数大于熔断阈值时,执行限流熔断操作。
接口350,主要用于接收业务请求。该业务请求来自于客户端或者业务服务器相连接的服务器。
针对切面装置310具体而言,切面装置310的属性包括但不限于:切点范围(pointcut),流量控制开关(switch)的状态,线程初始化方法(setter),异常监控方法(fallback)。
切点范围是指需要进行流量控制的业务请求的类型。
业务服务器的主线程通过接口350接收业务请求,当业务请求进入切面装置310之后,确定业务请求是否属于切点范围;如果业务请求属于切点范围,则读取流量控制开关的状态;如果流量控制开关为关闭状态,则切面装置310不初始化执行线程和定时线程,由业务服务器直接对业务请求进行处理;如果流量控制开关的状态为开启状态,则表示需要对该业务请求进行超时判定,这时线程初始化方法初始化该业务请求对应的执行线程和定时线程,即在执行线程池中查询空闲的执行线程,在定时线程池中查询空闲的定时线程;将执行线程的状态设置为execute状态。线程初始化方法可以通过熔断器装置来触发,具体的触发方式,将后面介绍熔断器装置时进行描述,故在此不做赘述。
在所述执行线程出现异常,所述定时线程触发所述执行线程中断对所述业务请求的处理,所述流量控制状态被设置为熔断状态的情况下,异常监控方法进行预设的异常中断监控操作和/或业务请求监控操作。
针对执行线程装置320而言,执行线程装置320包括执行线程池。执行线程池中维护多个执行线程,每个执行线程的属性包括但不限于:状态属性(threadstatus)和完成方法(oncomplete)。
进一步地,可以通过为执行线程设置状态,来表示执行线程处理业务请求的状态。执行线程的状态包括:执行状态(execute),超时状态(timeout)和成功状态(success)。
执行状态,表示执行线程正在处理业务请求。
超时状态,表示执行线程处理业务请求已经超时。
成功状态,表示执行线程已经成功处理业务请求。
具体而言,在处理业务请求之前,将所述执行线程的状态设置为执行状态;在处理业务请求的过程中,确定执行线程处理业务请求是否超时;在处理所述业务请求的时间达到预设的超时时间时,通过定时线程触发所述执行线程中断对所述业务请求的处理,通过所述定时线程将所述执行线程的状态调整为超时状态,并确定所述流量控制周期内的中断次数。在利用所述执行线程成功处理所述业务请求之后,将所述执行线程的状态修改为成功状态,并通过所述执行线程中断所述定时线程。
进一步地,可以通过执行线程的完成方法,在利用所述执行线程成功处理所述业务请求之后,将所述执行线程的状态修改为成功状态。
针对定时器装置330而言,定时器装置330的属性包括但不限于:超时时间(intervaltimeinmillisec-onds)和定时线程池。定时线程池中维护多个定时线程(listener)。
定时线程是延迟执行线程类型。超时时间为延迟执行的时间。当定时线程执行时,将会判断执行线程的threadstatus是否为execute状态,如果是,则将执行线程的threadstatus的状态设置为timeout状态,同时中断执行线程,触发切面装置310中的fallback方法,进行异常监控操作。
针对熔断器装置340具体而言,熔断器装置340的属性包括但不限于:流量控制状态(breaker),熔断阈值(errorthresholdpercent-age),流量控制周期的时长(sleepwindowinmillisec-onds),限流熔断方法(requestvolumethreshold)。
在业务服务器的主线程接收到业务请求之后,业务请求在通过切面装置310的筛选(属于切点范围)并且流量控制开关为开启状态的情况下,可以判断breaker是否为熔断状态,如果breaker是熔断状态,则表示执行线程的超时错误次数(中断次数)已经达到了熔断阈值,所以针对本次接收的业务请求直接返回熔断错误,在下一个流量控制周期结束时,流量控制状态将被设置为正常状态,这样,新的业务请求将会重新进入被处理,并且会统计新的流量控制周期内的超时错误次数。如果breaker是正常状态,则触发切面装置310中的线程初始化方法初始化该业务请求对应的执行线程和定时线程,以便利用执行线程,处理所述业务请求,并且在处理所述业务请求的时间达到预设的超时时间时,通过定时线程触发所述执行线程中断对所述业务请求的处理。
本发明实施例通过定时器装置330和熔断器装置340的相互配合,可以实现通过超时时间来判定业务服务器的当前服务的状态,并对过载的服务进行一段时间限流熔断,超过一定时间后,将熔断器装置340关闭,即熔断器装置340的流量控制状态设置为正常状态,这时新的业务请求将会再次被处理,从而也就实现了根据不同的业务服务器的状态来弹性的控制服务的限流熔断。
本发明实施例还提供了一种流量控制装置。该流量控制装置被设置在业务服务器中。进一步地,该流量控制装置被设置在业务服务器用于接收业务请求的入口。如图4所示,是根据本发明一实施例的流量控制装置的结构图。
该流量控制装置,包括:接收模块410,处理模块420,中断模块430和熔断模块440。
接收模块410,用于在流量控制周期开始之后,接收业务请求。
处理模块420,用于读取流量控制状态,在所述流量控制状态为正常状态的情况下,处理接收到的业务请求。
中断模块430,用于在处理所述业务请求的时间达到预设的超时时间时,中断对所述业务请求的处理,并确定所述流量控制周期内的中断次数。
熔断模块440,用于在所述中断次数大于预设的熔断阈值时,将所述流量控制状态设置为熔断状态,以便在下一个流量控制周期结束之前停止处理接收到的业务请求。
本发明实施例所述的装置的功能已经在上述方法实施例中进行了描述,故本发明实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此不做赘述。
本实施例提供一种流量控制设备。如图5所示,为根据本发明一实施例的流量控制设备的结构图。
在本实施例中,所述流量控制设备,包括但不限于:处理器510、存储器520。
所述处理器510用于执行存储器520中存储的流量控制程序,以实现上述的流量控制方法。
具体而言,所述处理器510用于执行存储器520中存储的流量控制程序,以实现以下步骤:在流量控制周期开始之后,接收业务请求;读取流量控制状态,在所述流量控制状态为正常状态的情况下,处理接收到的业务请求;在处理所述业务请求的时间达到预设的超时时间时,中断对所述业务请求的处理,并确定所述流量控制周期内的中断次数;在所述中断次数大于预设的熔断阈值时,将所述流量控制状态设置为熔断状态,以便在下一个流量控制周期结束之前停止处理接收到的业务请求。
其中,所述处理接收到的业务请求,包括:利用执行线程,处理所述业务请求;所述在处理所述业务请求的时间达到预设的超时时间时,中断对所述业务请求的处理,包括:在处理所述业务请求的时间达到预设的超时时间时,通过定时线程触发所述执行线程中断对所述业务请求的处理。
其中,在所述处理接收到的业务请求之前,还包括:读取流量控制开关的状态;在所述流量控制开关为开启状态时,读取所述流量控制状态;在所述流量控制状态为正常状态的情况下,为所述业务请求对应初始化所述执行线程并且初始化所述定时线程。
其中,所述初始化所述执行线程,包括:新建执行线程,以便利用新建的所述执行线程处理所述业务请求;或者,在预设的执行线程池中,查询空闲的执行线程,以便利用所述空闲的执行线程处理所述业务请求。
其中,所述初始化所述定时线程,包括:新建定时线程,以便在处理所述业务请求的时间达到预设的超时时间时,通过新建的所述定时线程触发所述执行线程中断对所述业务请求的处理;或者,在预设的定时线程池中,查询空闲的定时线程,以便在处理所述业务请求的时间达到预设的超时时间时,通过所述空闲的所述定时线程触发所述执行线程中断对所述业务请求的处理。
其中,所述方法还包括:在所述执行线程出现异常,所述定时线程触发所述执行线程中断对所述业务请求的处理,所述流量控制状态被设置为熔断状态的情况下,进行预设的异常中断监控操作和/或业务请求监控操作。
其中,在所述处理所述业务请求之前,还包括:将所述执行线程的状态设置为执行状态;所述在处理所述业务请求的时间达到预设的超时时间时,通过定时线程触发所述执行线程中断对所述业务请求的处理之后,还包括:通过所述定时线程将所述执行线程的状态调整为超时状态。
其中,所述方法还包括:在利用所述执行线程成功处理所述业务请求之后,将所述执行线程的状态修改为成功状态,并通过所述执行线程中断所述定时线程。
本发明实施例还提供了一种计算机可读存储介质。这里的计算机可读存储介质存储有一个或者多个程序。其中,计算机可读存储介质可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘;存储器还可以包括上述种类的存储器的组合。
当计算机可读存储介质中一个或者多个程序可被一个或者多个处理器执行,以实现上述的流量控制方法。
具体而言,所述处理器用于执行存储器中存储的流量控制程序,以实现以下步骤:在流量控制周期开始之后,接收业务请求;读取流量控制状态,在所述流量控制状态为正常状态的情况下,处理接收到的业务请求;在处理所述业务请求的时间达到预设的超时时间时,中断对所述业务请求的处理,并确定所述流量控制周期内的中断次数;在所述中断次数大于预设的熔断阈值时,将所述流量控制状态设置为熔断状态,以便在下一个流量控制周期结束之前停止处理接收到的业务请求。
其中,所述处理接收到的业务请求,包括:利用执行线程,处理所述业务请求;所述在处理所述业务请求的时间达到预设的超时时间时,中断对所述业务请求的处理,包括:在处理所述业务请求的时间达到预设的超时时间时,通过定时线程触发所述执行线程中断对所述业务请求的处理。
其中,在所述处理接收到的业务请求之前,还包括:读取流量控制开关的状态;在所述流量控制开关为开启状态时,读取所述流量控制状态;在所述流量控制状态为正常状态的情况下,为所述业务请求对应初始化所述执行线程并且初始化所述定时线程。
其中,所述初始化所述执行线程,包括:新建执行线程,以便利用新建的所述执行线程处理所述业务请求;或者,在预设的执行线程池中,查询空闲的执行线程,以便利用所述空闲的执行线程处理所述业务请求。
其中,所述初始化所述定时线程,包括:新建定时线程,以便在处理所述业务请求的时间达到预设的超时时间时,通过新建的所述定时线程触发所述执行线程中断对所述业务请求的处理;或者,在预设的定时线程池中,查询空闲的定时线程,以便在处理所述业务请求的时间达到预设的超时时间时,通过所述空闲的所述定时线程触发所述执行线程中断对所述业务请求的处理。
其中,所述方法还包括:在所述执行线程出现异常,所述定时线程触发所述执行线程中断对所述业务请求的处理,所述流量控制状态被设置为熔断状态的情况下,进行预设的异常中断监控操作和/或业务请求监控操作。
其中,在所述处理所述业务请求之前,还包括:将所述执行线程的状态设置为执行状态;所述在处理所述业务请求的时间达到预设的超时时间时,通过定时线程触发所述执行线程中断对所述业务请求的处理之后,还包括:通过所述定时线程将所述执行线程的状态调整为超时状态。
其中,所述方法还包括:在利用所述执行线程成功处理所述业务请求之后,将所述执行线程的状态修改为成功状态,并通过所述执行线程中断所述定时线程。
以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
1.一种流量控制方法,其特征在于,包括:
在流量控制周期开始之后,接收业务请求;
读取流量控制状态,在所述流量控制状态为正常状态的情况下,处理接收到的业务请求;
在处理所述业务请求的时间达到预设的超时时间时,中断对所述业务请求的处理,并确定所述流量控制周期内的中断次数;
在所述中断次数大于预设的熔断阈值时,将所述流量控制状态设置为熔断状态,以便在下一个流量控制周期结束之前停止处理接收到的业务请求。
2.根据权利要求1所述的方法,其特征在于,
所述处理接收到的业务请求,包括:
利用执行线程,处理所述业务请求;
所述在处理所述业务请求的时间达到预设的超时时间时,中断对所述业务请求的处理,包括:
在处理所述业务请求的时间达到预设的超时时间时,通过定时线程触发所述执行线程中断对所述业务请求的处理。
3.根据权利要求2所述的方法,其特征在于,在所述处理接收到的业务请求之前,还包括:
读取流量控制开关的状态;
在所述流量控制开关为开启状态时,读取所述流量控制状态;
在所述流量控制状态为正常状态的情况下,为所述业务请求对应初始化所述执行线程并且初始化所述定时线程。
4.根据权利要求3所述的方法,其特征在于,所述初始化所述执行线程,包括:
新建执行线程,以便利用新建的所述执行线程处理所述业务请求;或者,
在预设的执行线程池中,查询空闲的执行线程,以便利用所述空闲的执行线程处理所述业务请求。
5.根据权利要求3所述的方法,其特征在于,所述初始化所述定时线程,包括:
新建定时线程,以便在处理所述业务请求的时间达到预设的超时时间时,通过新建的所述定时线程触发所述执行线程中断对所述业务请求的处理;
或者,
在预设的定时线程池中,查询空闲的定时线程,以便在处理所述业务请求的时间达到预设的超时时间时,通过所述空闲的所述定时线程触发所述执行线程中断对所述业务请求的处理。
6.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述执行线程出现异常,所述定时线程触发所述执行线程中断对所述业务请求的处理,所述流量控制状态被设置为熔断状态的情况下,进行预设的异常中断监控操作和/或业务请求监控操作。
7.根据权利要求2~6中任一项所述的方法,其特征在于,
在所述处理所述业务请求之前,还包括:
将所述执行线程的状态设置为执行状态;
所述在处理所述业务请求的时间达到预设的超时时间时,通过定时线程触发所述执行线程中断对所述业务请求的处理之后,还包括:
通过所述定时线程将所述执行线程的状态调整为超时状态。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在利用所述执行线程成功处理所述业务请求之后,将所述执行线程的状态修改为成功状态,并通过所述执行线程中断所述定时线程。
9.一种流量控制装置,其特征在于,包括:
接收模块,用于在流量控制周期开始之后,接收业务请求;
处理模块,用于读取流量控制状态,在所述流量控制状态为正常状态的情况下,处理接收到的业务请求;
中断模块,用于在处理所述业务请求的时间达到预设的超时时间时,中断对所述业务请求的处理,并确定所述流量控制周期内的中断次数;
熔断模块,用于在所述中断次数大于预设的熔断阈值时,将所述流量控制状态设置为熔断状态,以便在下一个流量控制周期结束之前停止处理接收到的业务请求。
10.一种流量控制设备,其特征在于,所述流量控制设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1~8中任一项所述的流量控制方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有流量控制程序,所述流量控制程序被处理器执行时实现如权利要求1~8中任一项所述的流量控制方法的步骤。
技术总结