[发明专利]一种控制API单位时间内调用频次的系统及方法在审
申请号: | 201711098349.3 | 申请日: | 2017-11-09 |
公开(公告)号: | CN107885605A | 公开(公告)日: | 2018-04-06 |
发明(设计)人: | 黄启庆;梁圣奇;王静;袁骞骞 | 申请(专利权)人: | 郑州云海信息技术有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 济南舜源专利事务所有限公司37205 | 代理人: | 刘雪萍 |
地址: | 450000 河南省郑州市*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 控制 api 单位 时间内 调用 频次 系统 方法 | ||
技术领域
本发明属于API接口访问领域,具体涉及一种控制API单位时间内调用频次的系统及方法。
背景技术
单位时间内访问频次,单位时间即每分钟/每小时/每天,访问频次是调用频次,即调用次数。
队列,队列是一种特殊的线性表,特殊之处在于它只允许在表的前端进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
API,Application Programming Interface的简称,应用程序编程接口。
在开发接口服务器的过程中,为了防止客户端对于接口的滥用,保护服务器的资源,通常来说我们会对于服务器上的各种API接口进行调用次数的限制。比如对于某个用户,他在一个时间段(interval)内,比如1分钟,调用服务器接口的次数不能够大于一个上限(limit),比如说100 次,如果用户调用接口的次数超过上限的话,就直接拒绝用户的请求,返回错误信息。
API调用频次控制,目前多采用按单位时间分隔的方式,如:某个API限制每分钟最大可调用次数为10,则每次拦截到调用请求时,将当前分钟的调用次数加一,下次再拦截到该API的调用请求时,如果两次请求时间属于同一分钟,则将该分钟的调用次数加一;如果不属于同一分钟(即使两次调用时间间隔仅1秒),也会记入下一分钟的调用次数。
上述统计方式是不准确的,如10点49分50秒至10点49分59秒,该API被调用了10次;10点50分0秒至10点50分10秒,该API又被调用了10次,这样实际上该API20秒内被调用了20次,超出了每分钟最大可调用次数10次。
此为现有技术的不足,因此,针对现有技术中的上述缺陷,提供一种控制API单位时间内调用频次的系统及方法,是非常有必要的。
发明内容
本发明的目的在于,针对上述API调用频次控制不准确的缺陷,提供一种控制API单位时间内调用频次的系统及方法,以解决上述技术问题。
为实现上述目的,本发明给出以下技术方案:
一种控制API单位时间内调用频次的系统,包括:
队列分配模块,用于给每个API分配一个队列,队列最大长度等于关联API单位时间内最大允许访问频次;
API调用信息获取模块,用于拦截到API调用请求时,获取该API分配的队列,获取该队列的最大长度,获取该队列的实际长度,获取该队列的队头时间戳,获取当前时间戳;
判断模块,用于判断是否符合队列操作条件,以及判断是否符合API调用条件;
队列操作模块,用于当符合队列操作条件时,对队列进行操作;
API调用动作模块,用于当符合API调用条件时,允许此次API调用,或者,当不符合API调用条件时,阻止此次API调用。
进一步地,判断模块包括队列长度判断单元、时间戳计算单元以及时间戳差值判断单元;
队列长度判断单元,用于判断API对应的队列实际长度是否小于该队列的最大长度;
时间戳计算单元,用于当API对应的队列实际长度等于该队列的最大长度时,用当前时间戳减去队头时间戳;
时间戳差值判断单元,用于判断当前时间戳与队头时间戳的差值是否小于单位时间。
进一步地,队列操作模块,当符合队列操作条件时,对队列进行操作,具体包括:
当API对应的队列实际长度小于该队列的最大长度时,将当前时间戳插入队尾;
或者,当API对应的队列长度等于该队列的最大长度,且当前时间戳与队头时间戳的差值不小于单位时间时,删除队头时间戳,将当前时间戳插入队尾。
进一步地,API调用动作模块,用于当符合API调用条件时,允许此次API调用,或者,当不符合API调用条件时,阻止此次API调用,具体包括:
当API对应的队列实际长度小于该队列最大长度时,或者,当API对应的队列实际长度等于该队列最大长度,且当前时间戳与队头时间戳的差值不小于单位时间时,允许此次API调用;
当API对应的队列实际长度等于该队列最大长度,且当前时间戳与队头时间戳的差值小于单位时间时,阻止此次API调用。
进一步地,队头时间戳和当前时间戳精确到秒。
本发明还给出如下技术方案:
一种控制API单位时间内调用频次的方法,包括如下步骤:
步骤1.给每个API分配一个队列,队列最大长度等于关联API单位时间内最大允许访问频次;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于郑州云海信息技术有限公司,未经郑州云海信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711098349.3/2.html,转载请声明来源钻瓜专利网。