[发明专利]访问请求限流方法、服务器及存储介质有效
申请号: | 202010131710.3 | 申请日: | 2020-02-29 |
公开(公告)号: | CN111447150B | 公开(公告)日: | 2023-07-28 |
发明(设计)人: | 李志周 | 申请(专利权)人: | 中国平安财产保险股份有限公司 |
主分类号: | H04L47/215 | 分类号: | H04L47/215;H04L47/10 |
代理公司: | 深圳市沃德知识产权代理事务所(普通合伙) 44347 | 代理人: | 高杰;于志光 |
地址: | 518000 广东省深圳市福田区益田路*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 访问 请求 限流 方法 服务器 存储 介质 | ||
本发明涉及数据处理技术,提供了一种访问请求限流方法、服务器及存储介质。该方法通过网关接收客户端的访问请求后,根据请求中的URL地址获得相应的限流策略,根据请求中的标识生成时间戳及请求对应的业务类型的键值对,根据业务类型的键值对读取令牌桶处理完上次请求后的令牌数、上次获取令牌的时间,基于时间戳、上一次获取令牌的时间及限流策略计算得到处理该请求后的剩余令牌数,将时间戳及该剩余令牌数写入数据库,并将剩余令牌数发送至网关,最后根据剩余令牌数及预设值判断是否对该请求执行限流操作。本发明可以控制客户端的访问请求数,不需要单独维护令牌桶和令牌数,极大地减少了内存和线程的消耗。
技术领域
本发明涉及数据处理领域,尤其涉及一种访问请求限流方法、服务器及存储介质。
背景技术
限流是服务降级的一种,通过限制系统的输入和输出流量以达到保护系统的目的。目前JAVA编程实现的令牌桶算法的限流方法只能满足单机限流,与令牌桶相关的数据信息直接存放在内存,无法满足在微服务分布式条件下多机限流,此外,通过这种限流方法控制客户端的访问请求时,由于令牌工厂会以特定的速率往令牌桶中投放令牌,系统需要维护多个令牌桶和令牌工厂,极大地增加了系统内存和线程的消耗。
发明内容
鉴于以上内容,本发明提供一种访问请求限流方法、服务器及存储介质,其目的在于解决现有的限流方法对系统内存和线程消耗大的问题。
为实现上述目的,本发明提供一种访问请求限流方法,该方法包括:
接收步骤:通过所述网关接收客户端发出的访问请求,解析所述访问请求,获取所述访问请求携带的URL地址和请求标识,将所述URL地址与预设数据库中预先配置的限流策略集合进行匹配,得到与该URL地址匹配的限流策略;
读取步骤:基于所述请求标识生成该请求的时间戳及该请求对应的业务类型的键值对,并将所述业务类型的键值对写入所述预设数据库,基于所述限流策略读取该请求对应的令牌桶速率及请求所需令牌数;
计算步骤:根据所述业务类型的键值对从所述预设数据库中读取令牌桶第一剩余令牌数、上一次获取令牌的时间,基于所述时间戳、所述上一次获取令牌的时间及所述令牌桶速率,计算得到令牌桶新增的令牌数,基于所述第一剩余令牌数及所述新增的令牌数计算得到令牌桶的第二剩余令牌数,基于所述请求所需令牌数及所述第二剩余令牌数计算得到第三剩余令牌数,并将所述时间戳及第三剩余令牌数写入所述预设数据库;及
限流步骤:将所述第三剩余令牌数发送至所述网关,若所述第三剩余令牌数大于或等于预设值,则响应所述访问请求,并将处理所述访问请求的结果反馈至客户端,若所述第三剩余令牌数小于预设值,则拒绝所述访问请求。
优选的,所述接收步骤包括:
遍历所述限流策略集合中的限流策略,若基于所述URL地址未匹配到限流策略,则将限流策略集中通用的限流策略作为所述URL地址匹配的限流策略,若基于所述URL地址匹配到多个限流策略,则从所述多个限流策略中读取优先级最高的限流策略作为所述URL地址匹配的限流策略。
优选的,所述将所述时间戳及第三剩余令牌数写入所述预设数据库包括:
分别生成所述时间戳及所述第三剩余令牌数对应的键值对,将所述对应的键值对写入所述预设数据库,基于预设计算规则为所述对应的键值对的键值设置有效时长。
优选的,所述预设计算规则包括:
T=(C/V)×a,
其中,T表示所述有效时长,C表示令牌桶容量,V表示所述令牌桶速率,a表示常数。
优选的,所述方法还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国平安财产保险股份有限公司,未经中国平安财产保险股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010131710.3/2.html,转载请声明来源钻瓜专利网。