System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于Redis的流量控制方法、系统、设备和介质技术方案_技高网

基于Redis的流量控制方法、系统、设备和介质技术方案

技术编号:40192786 阅读:5 留言:0更新日期:2024-01-26 23:54
本发明专利技术公开了一种基于Redis的流量控制方法、系统、设备和介质,包括:接收针对目标资源进行访问的多个业务请求;当每个业务请求获取到当前系统所在的服务实例对应的信号量时,根据时间戳信息和业务路径将业务请求依次添加至分布式队列;从线程存储器中获取位于分布式队列的头部节点的当前业务请求所对应的目标时间戳,并基于目标时间戳进行令牌限流计算,得到限流处理结果;根据限流处理结果,将当前业务请求从分布式队列的头部节点的位置移除。本发明专利技术无需引入额外服务器,仅利用线程存储器和Redis实现分布式限流,既避免现有限流器部署复杂且不易扩展,也避免依赖Redis的令牌桶流控算法产生的耗时互不耦合,打破流量限制上限因素带来的局限性。

【技术实现步骤摘要】

本专利技术涉及流量管理,尤其涉及一种基于redis的流量控制方法、系统、设备和介质。


技术介绍

1、现今基于网络的大规模高并发的服务系统为客户端提供了各类服务,由于服务系统的资源有限,为保证业务正常运行,需要设置相应的限流器以防止大流量访问而导致系统崩溃。

2、限流器大致分为单机限流器和分布式限流器,谷歌公司研发的ratelimiter单机限流器,虽然能够直接应用于服务系统,但是大型互联网公司的多台服务器无法共享限流数据。阿里公司研发的sentimental分布式限流器,虽然能够支持多客户端访问时的流量控制和管理,但是将该分布式限流器部署于系统需要配置额外的服务器,部署过程复杂、不易扩展和维护难度高。依赖缓存服务中间件redis的令牌桶流控算法实现的分布式限流,因redis耗时和redis耦合影响,流量限制的上限不高,无法满足多种限流场景需求。


技术实现思路

1、本专利技术要解决的技术问题是为了克服现有技术中分布式限流方法因部署困难或者因依赖redis中间件耗时限制限流上限,导致限流效果差的缺陷,提供一种基于redis的流量控制方法、系统、设备和介质。

2、本专利技术是通过下述技术方案来解决上述技术问题:

3、第一方面,本专利技术提供一种基于redis的流量控制方法,所述流量控制方法包括:

4、接收针对目标资源进行访问的多个业务请求;所述业务请求包括时间戳信息和业务路径,且所述时间戳存储于线程存储器;

5、当每个所述业务请求获取到当前系统所在的服务实例对应的信号量时,根据所述时间戳信息和所述业务路径将所述业务请求依次添加至分布式队列;同一个所述业务路径下的所有所述业务请求对应唯一所述信号量,所述分布式队列位于缓存服务中间件redis中;

6、从所述线程存储器中获取位于所述分布式队列的头部节点的当前业务请求所对应的目标时间戳,并基于所述目标时间戳进行令牌限流计算,得到限流处理结果;

7、根据所述限流处理结果,将所述当前业务请求从所述分布式队列的头部节点的位置移除。

8、较佳地,所述接收针对目标资源进行访问的多个业务请求的步骤之后,还包括:

9、按照所述时间戳信息的先后顺序对所有所述业务请求进行排序,生成多个业务请求队列;所述业务请求队列与所述业务路径对应。

10、较佳地,所述流量控制方法还包括:

11、释放所述当前业务请求所获取到的目标信号量;

12、向所述当前业务请求所在的所述业务请求队列推送消息,以通知下一个新的业务请求获取所述目标信号量。

13、较佳地,所述业务请求还包括流量限制阻塞模式,所述基于所述目标时间戳进行令牌限流计算,得到限流处理结果的步骤,包括:

14、在检测到所述当前业务请求的所述流量限制阻塞模式为非阻塞模式时,判断所述目标时间戳是否符合预设可用时间戳范围;

15、若不符合,则判断所述当前业务请求进行流量限制,若符合,则计算所述当前业务请求所对应的新增令牌数量;

16、在检测到所述当前业务请求的所述流量限制阻塞模式为阻塞模式时,判断所述目标时间戳是否符合所述预设可用时间戳范围;

17、若不符合,则控制所述当前业务请求保持等待状态直至达到可用时间戳为止,再计算所述当前业务请求所对应的新增令牌数量。

18、第二方面,本专利技术还提供一种基于redis的流量控制系统,所述流量控制系统包括:

19、接收模块,用于接收针对目标资源进行访问的多个业务请求;所述业务请求包括时间戳信息和业务路径,且所述时间戳存储于线程存储器;

20、添加模块,用于当每个所述业务请求获取到当前系统所在的服务实例对应的信号量时,根据所述时间戳信息和所述业务路径将所述业务请求依次添加至分布式队列;同一个所述业务路径下的所有所述业务请求对应唯一所述信号量,所述分布式队列位于缓存服务中间件redis;

21、计算模块,用于从所述线程存储器中获取位于所述分布式队列的头部节点的当前业务请求所对应的目标时间戳,并基于所述目标时间戳进行令牌限流计算,得到限流处理结果;

22、移除模块,用于根据所述限流处理结果,将所述当前业务请求从所述分布式队列的头部节点的位置移除。

23、较佳地,所述流量控制系统还包括:

24、排序模块,用于按照所述时间戳信息的先后顺序对所有所述业务请求进行排序,生成多个业务请求队列;所述业务请求队列与所述业务路径对应。

25、较佳地,所述流量控制系统还包括:

26、释放模块,用于释放所述当前业务请求所获取到的目标信号量;

27、推送模块,用于向所述当前业务请求所在的所述业务请求队列推送消息,以通知下一个新的业务请求获取所述目标信号量。

28、较佳地,所述业务请求还包括流量限制阻塞模式,所述计算模块包括:

29、第一计算单元,用于在检测到所述当前业务请求的所述流量限制阻塞模式为非阻塞模式时,判断所述目标时间戳是否符合预设可用时间戳范围;若不符合,则判断所述当前业务请求进行流量限制,若符合,则计算所述当前业务请求所对应的新增令牌数量;

30、第二计算单元,用于在检测到所述当前业务请求的所述流量限制阻塞模式为阻塞模式时,判断所述目标时间戳是否符合所述预设可用时间戳范围;若不符合,则控制所述当前业务请求保持等待状态直至达到可用时间戳为止,再计算所述当前业务请求所对应的新增令牌数量。

31、第三方面,本专利技术提供一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面中任一项所述的基于redis的流量控制方法。

32、第四方面,本专利技术提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如第一方面中任一项所述的基于redis的流量控制方法。

33、本专利技术的积极进步效果在于:本专利技术提供的基于redis的流量控制方法、系统、设备和介质,接收针对目标资源进行访问的多个业务请求;当每个业务请求获取到当前系统所在的服务实例对应的信号量时,根据时间戳信息和业务路径将业务请求依次添加至分布式队列;从线程存储器中获取位于分布式队列的头部节点的当前业务请求所对应的目标时间戳,并基于目标时间戳进行令牌限流计算,得到限流处理结果;根据限流处理结果,将当前业务请求从分布式队列的头部节点的位置移除。本专利技术无需引入额外服务器,仅利用线程存储器和redis实现分布式限流,既避免现有限流器部署复杂且不易扩展,也避免依赖redis的令牌桶流控算法产生的耗时互不耦合造成限流上限受约束的问题,彻底打破流量限制上限因素带来的局限性,提高限流效果,也提升限流方法应用的广泛性。

本文档来自技高网...

【技术保护点】

1.一种基于Redis的流量控制方法,其特征在于,所述流量控制方法包括:

2.如权利要求1所述的基于Redis的流量控制方法,其特征在于,所述接收针对目标资源进行访问的多个业务请求的步骤之后,还包括:

3.如权利要求2所述的基于Redis的流量控制方法,其特征在于,所述流量控制方法还包括:

4.如权利要求1所述的基于Redis的流量控制方法,其特征在于,所述业务请求还包括流量限制阻塞模式,所述基于所述目标时间戳进行令牌限流计算,得到限流处理结果的步骤,包括:

5.一种基于Redis的流量控制系统,其特征在于,所述流量控制系统包括:

6.如权利要求5所述的基于Redis的流量控制系统,其特征在于,所述流量控制系统还包括:

7.如权利要求6所述的基于Redis的流量控制系统,其特征在于,所述流量控制系统还包括:

8.如权利要求5所述的基于Redis的流量控制系统,其特征在于,所述业务请求还包括流量限制阻塞模式,所述计算模块包括:

9.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-4中任一项所述的基于Redis的流量控制方法。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1-4中任一项所述的基于Redis的流量控制方法。

...

【技术特征摘要】

1.一种基于redis的流量控制方法,其特征在于,所述流量控制方法包括:

2.如权利要求1所述的基于redis的流量控制方法,其特征在于,所述接收针对目标资源进行访问的多个业务请求的步骤之后,还包括:

3.如权利要求2所述的基于redis的流量控制方法,其特征在于,所述流量控制方法还包括:

4.如权利要求1所述的基于redis的流量控制方法,其特征在于,所述业务请求还包括流量限制阻塞模式,所述基于所述目标时间戳进行令牌限流计算,得到限流处理结果的步骤,包括:

5.一种基于redis的流量控制系统,其特征在于,所述流量控制系统包括:

6.如权利要求5所述的基于redis的流量控制系统,其特征在于,...

【专利技术属性】
技术研发人员:王成
申请(专利权)人:携程商旅信息服务上海有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1