一种服务请求限流方法、装置及存储介质与流程

文档序号:34119795发布日期:2023-05-11 03:25阅读:42来源:国知局
一种服务请求限流方法、装置及存储介质与流程

本发明涉及信息,提供了一种服务请求限流方法、装置及存储介质。


背景技术:

1、在很多业务处理系统中,接收服务请求的入口处都具备流量限制的功能,利用此功能可以限制给予后端业务系统的处理压力,降低系统崩溃风险。例如,在金融支付业务系统中,服务网关接收一笔新的业务请求,而后经由支付系统、核心系统、风控系统、后端支付通道等系统模块分别处理。每一次请求处理相应的系统都会有一定程度的资源消耗,当某个系统模块系统资源不够时,就可能出现请求处理变慢、请求处理超时、无法及时处理新请求等情况,这可能会产生一系列的连锁反应,最终影响用户体验。在接收业务请求的入口处增加流量限制功能,根据后方系统模块的处理能力,合理的对业务流量进行控制,是业界认可的通行做法。业界当前也存在很多该问题的解决方案。

2、基于令牌桶方法的限流方案是使用比较多的一种方案。该方案在请求接收的入口处,维护一个可以容纳一定数量令牌的“桶”(以下简称“令牌桶”),并以一定的速率向桶中放置令牌。如果令牌桶达到最大容量将会丢弃掉新放入的令牌。当系统接收到新的业务请求时,尝试向令牌桶获取一个令牌,如果能够得到令牌便可以执行请求,否则会拒绝请求或让请求挂起等待。

3、另还有基于漏桶方法的限流方案,该方案维护一个具有一定容量的似如漏斗的“桶”(以下简称“漏桶”)。系统每接收到一个新的请求,便向漏桶中放入“一滴水”,该请求进入排队状态等待系统处理。同时漏桶以恒定的速率向外“滴水”,表示需要处理一笔排队等待中的请求。如果漏桶已经装满了水,新接收的请求便会被拒绝或挂起。

4、已有的这些方案都能有效的达到流量控制的目的,能够一定程度的保障后方系统安全和稳定运行。但这些方案都存在不能感知后方系统处理情况、不能根据系统运行情况动态调整流量的问题。

5、1.不能感知后方系统处理情况。现有的流量控制方案,主要侧重点在于对接收到的请求进行限制,从而保障后方系统安全稳定。这种方式存在一种缺陷:当后方系统因为某些问题导致业务处理速度降低,或程序出现故障甚至宕机导致业务处理中断时,系统将可能无法承受当前的流量压力,这时前方的流控程序无法感知到这种情况且会正常放行新的请求,流控将失去意义。

6、2.不能根据系统运行情况动态调整流量。通过对现有方案的了解我们知道,现有的方案中都存在一个“令牌”的概念,这些令牌的数量是固定的,是在系统运行之初就确定好的,系统运行时无法方便的调整。这样的问题可能导致无法合理利用系统资源,造成浪费,或出现如第1点所述的情况。例如,当后方系统的业务处理效率很高时,实际可以在流控程序增加流量,充分利用系统能力;当后方系统的业务处理效率较低时,可以在流控程序减少流量,以达到保护系统安全稳定的目的。

7、在使用类似方案的系统中,目前只能通过对应用程序的健康检测、系统资源的监测等手段来保护系统。在微服务场景中,还会引入熔断机制对系统进行保护。这些方式都可以达到保护系统的目的,但也都存在较为明显的延迟,不能及时的发现问题。由于引入了新的程序,系统的稳定性多少也将受到影响。


技术实现思路

1、本发明的目的在于实现根据业务系统处理能力,自适应调整令牌分发数量,达到服务请求限流的目的。

2、为了实现上述目的,本发明采用以下技术手段:

3、一种服务请求限流方法,包括以下步骤:

4、步骤1、业务系统接收到新的服务请求时,向令牌管理模块申请交易令牌,令牌管理模块首先判断当前服务请求的类型是否存在对应的令牌桶,如果没有则进行资源初始化,生成令牌桶,并设置最初令牌桶的交易令牌最大使用阈值;

5、步骤2、令牌管理模块在收到业务系统申请令牌的请求之后,先向阈值管理模块获取当前服务请求的类型对应令牌桶的令牌最大使用阈值,再与当前已发放的令牌数量做比较,如果使用量超过阈值则拒绝发放新的令牌,否则生成交易令牌,将交易令牌、交易令牌生成时间戳、令牌桶id进行拼接后得到认证数据包,将认证数据包发送给业务系统;

6、步骤3、业务系统获取到认证数据包后,对数据包解析后得到交易令牌后执行后续业务逻辑,在业务逻辑的处理完成后,业务系统将认证数据包提交给令牌管理模块,令牌管理模块对认证数据包解析,得到交易令牌生成时间戳、令牌桶id信息,并记录认证数据包解析的当前时间为结束时间戳,当然也可以将业务系统返回认证数据包的时间戳作为结束时间戳;

7、步骤4、根据令牌桶id对对应令牌桶的数量进行减1;

8、步骤5、阈值管理模块根据步骤3得到的生成时间戳、结束时间戳对交易令牌的使用信息进行统计,根据统计结果动态调整最大使用阈值。

9、上述技术方案中,当业务系统申请交易令牌时令牌管理模块会根据服务请求类型单独维护令牌桶,所述令牌桶包括“桶1”和“桶2”,对桶1和桶2的唯一令牌桶id和令牌数量进行时间周期更新,具体的为:

10、定义一个时间周期,在每一个新的时间周期,为桶1赋值一个新的唯一令牌桶id,并将桶1的令牌数量置零,将桶1的上一个时间周期的唯一令牌桶id和桶1存储的令牌数量,赋值给桶2,桶2中原有的令牌数量将被视为过期而释放掉。

11、上述技术方案中,阈值管理模块:

12、将步骤3得到的生成时间戳与结束时间戳计算得到交易令牌的使用时长;以可配置化的时间周期为窗口,对窗口内的所有交易令牌的使用时长进行统计,再与上一个窗口数据的统计结果做比较,当新窗口内的令牌使用时间更少时,认为业务系统最近一段时间处理相应业务的效率更高,则增加当前令牌的最大使用阈值;当新窗口内的令牌使用时间更多时,认为业务系统在最近一段时间处理相应业务的效率更低,则减小当前令牌的最大使用阈值。

13、本发明还提供了一种服务请求限流装置:

14、业务系统接收到新的服务请求时,向令牌管理模块申请交易令牌,令牌管理模块首先判断当前服务请求的类型是否存在对应的令牌桶,如果没有则进行资源初始化,生成令牌桶,并设置最初令牌桶的交易令牌最大使用阈值;

15、令牌管理模块在收到业务系统申请令牌的请求之后,先向阈值管理模块获取当前服务请求的类型对应令牌桶的令牌最大使用阈值,再与当前已发放的令牌数量做比较,如果使用量超过阈值则拒绝发放新的令牌,否则生成交易令牌,将交易令牌、交易令牌生成时间戳、令牌桶id进行拼接后得到认证数据包,将认证数据包发送给业务系统;

16、业务系统获取到认证数据包后,对数据包解析后得到交易令牌后执行后续业务逻辑,在业务逻辑的处理完成后,业务系统将认证数据包提交给令牌管理模块,令牌管理模块对认证数据包解析,得到交易令牌生成时间戳、令牌桶id信息,并记录认证数据包解析的当前时间为结束时间戳;

17、根据令牌桶id对对应令牌桶的数量进行减1;

18、阈值管理模块根据步骤3得到的生成时间戳、结束时间戳交易令牌的使用信息进行统计,根据统计结果动态调整最大使用阈值。

19、上述装置中,当业务系统申请交易令牌时令牌管理模块会根据服务请求类型单独维护令牌桶,所述令牌桶包括“桶1”和“桶2”,对桶1和桶2的唯一令牌桶id和令牌数量进行时间周期更新,具体的为:

20、定义一个时间周期,在每一个新的时间周期,为桶1赋值一个新的唯一令牌桶id,并将桶1的令牌数量置零,将桶1的上一个时间周期的唯一令牌桶id和桶1存储的令牌数量,赋值给桶2,桶2中原有的令牌数量将被视为过期而释放掉。

21、上述装置中,阈值管理模块:

22、将得到的生成时间戳与结束时间戳计算得到交易令牌的使用时长;以可配置化的时间周期为窗口,对窗口内的所有交易令牌的使用时长进行统计,再与上一个窗口数据的统计结果做比较,当新窗口内的令牌使用时间更少时,认为业务系统最近一段时间处理相应业务的效率更高,则增加当前令牌的最大使用阈值;当新窗口内的令牌使用时间更多时,认为业务系统在最近一段时间处理相应业务的效率更低,则减小当前令牌的最大使用阈值。

23、本发明还提供了一种存储介质,处理器在执行存储介质中的程序时实现上述一种服务请求限流方法。

24、因为本发明采用上述技术手段,因此具备以下有益效果:

25、1.当流控程序后方的系统出现影响业务正常执行的故障时,可以根据反馈机制及时发现问题,从而控制可用令牌的数量来减小后方系统的处理压力,达到保护系统的目的。

26、2.当流控程序可以感知系统处理情况后,流控程序可以对业务系统处理效率进行实时分析,自动的在系统处理效率高的时候增加令牌最大使用数量,以便充分利用系统资源;也能在系统处理效率降低或出现故障等情况时减少令牌最大使用数量,减小后方系统的压力,给予系统充分的恢复时间。

27、3.本发明的方法,可以容忍调用方因为宕机等非正常原因而未归还令牌的问题,使得系统的鲁棒性得到进一步增强。

28、4.基于流控程序的自动感知和实时分析功能,以可忽略的资源消耗来换取对第三方组件的依赖解除,减少了系统的运维成本同时提高了系统的稳定性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1