掌桥专利:专业的专利平台
掌桥专利
首页

服务请求控制方法及装置

文献发布时间:2024-04-18 20:01:30


服务请求控制方法及装置

技术领域

本发明涉及网关技术领域,尤其涉及一种服务请求控制方法及装置。

背景技术

当前,网络访问流量不断增多,对于服务的稳定性要求也随之增高。API(Application Programming Interface,应用程序接口)网关是介于客户端和服务器端之间的中间层,将外部请求与内部服务进行隔离,所有的外部请求都会先经过API网关这一层。为了防止客户端对于接口的滥用,保护服务器的资源,需要对服务器上的各种接口进行调用次数的限制。服务接口的流量控制策略包括:降级和限流。当上游服务超出请求承载范围,或者其不正常了,此时,API网关可以限制流入的请求,让上游服务免受冲击,保持能够正常访问。

API网关的限制往往是基于其所统计到的流量情况进行流量控制实现,因此,在网关层面精确地对接口访问统计和控制对服务的正常合理调用至关重要。而相关技术中,API网关流量限制往往是基于该网关的本地限流大小实现,较为粗犷,已不能满足用户需求。

发明内容

为了对披露的实施例的一些方面有基本的理解,下面给出了简单的概括。概括不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围,而是作为后面的详细说明的序言。

鉴于以上提到的相关技术中对于API网关流量限制往往是基于该网关的本地限流大小实现,较为粗犷,已不能满足用户需求的技术问题,本发明公开了一种服务请求控制方法及装置,以解决上述提到的技术问题。

本发明提供了一种服务请求控制方法,其特征在于,所述方法包括:通过当前接口接收服务请求,所述服务请求包括请求服务标识、请求方式和请求属性信息;将所述请求属性信息与预设属性信息进行匹配;当匹配通过,基于所述请求方式、所述请求属性信息、请求服务标识和所述当前接口的当前接口标识确定第一令牌桶中候选令牌的剩余令牌数量和上次刷新时间,以及根据所述请求服务标识、请求方式和请求属性信息中的一个或多个确定目标统计维度,触发对所述服务请求的请求执行数据按照所述目标统计维度进行统计,得到所述目标统计维度的当前统计数据;若所述剩余令牌数量小于第一临界阈值,根据所述请求方式、所述请求属性信息、所述请求服务标识和所述当前接口标识确定所述候选令牌的令牌生成速率并基于当前时间、所述上次刷新时间和所述令牌生成速率确定当前令牌生成数量;如果所述当前令牌生成数量小于第二临界阈值,和/或如果所述当前统计数据满足预设统计数据区间,触发所述当前接口开启预设接口控制策略,基于所述预设接口控制策略对所述服务请求进行控制。

于本发明一实施例中,若满足预设令牌发放条件,为所述服务请求分配一候选令牌,所述预设令牌发放条件包括所述剩余令牌数量大于第一临界阈值,或若所述当前令牌生成数量大于第二临界阈值,已生成新增的候选令牌并增加入所述第一令牌桶,并以当前时间刷新所述上次刷新时间;若所述当前接口尚未启用预设接口控制策略,控制所述服务请求继续进行目标服务访问;若所述当前接口启用预设接口控制策略,基于所述预设接口控制策略对所述服务请求进行控制。

于本发明一实施例中,若所述当前令牌生成数量大于第二临界阈值,生成新增的候选令牌并增加入所述第一令牌桶,监测所述第一令牌桶中每一候选令牌的存在时长,如果存在待销毁令牌,将所述待销毁令牌从所述第一令牌桶中移除,所述待销毁令牌为所述存在时长超过预设时长阈值的候选令牌;或,若所述剩余令牌数量大于第一临界阈值,监测所述第一令牌桶中每一候选令牌的存在时长,如果存在待销毁令牌,将所述待销毁令牌从所述第一令牌桶中移除,所述待销毁令牌为所述存在时长超过预设时长阈值的候选令牌。

于本发明一实施例中,将所述请求属性信息与预设属性信息进行匹配之前,所述方法包括:获取规则改变事件的规则修改数据,所述规则修改数据包括预设属性信息修改数据、目标统计维度修改数据、预设统计数据区间修改数据、预设接口控制策略修改数据、所述目标统计维度与所述预设属性信息的对应关系修改数据中至少之一,所述规则修改数据基于外部输入数据或历史请求日志得到;基于所述规则修改数据对所述预设属性信息、所述目标统计维度、所述预设统计数据区间、预设接口控制策略、目标统计维度与所述预设属性信息的对应关系中至少之一进行修改及更新。

于本发明一实施例中,基于所述请求方式、所述请求属性信息、所述请求服务标识和所述当前接口的当前接口标识确定第一令牌桶中候选令牌的剩余令牌数量和上次刷新时间,包括将所述请求方式、所述请求属性信息、所述请求服务标识和当前接口标识与所述第一令牌桶中的多种初始令牌的预设请求方式、请求统计规则标识、预设服务标识和预设接口标识进行匹配,将匹配成功的初始令牌作为候选令牌,所述初始令牌预先配置的令牌参数包括令牌规则标识令牌阈值和令牌生成速率,所述令牌规则标识基于请求统计规则标识、预设请求方式、预设服务标识和预设接口标识生成,所述请求统计规则标识对应有一个或多个预设属性信息;以所述第一令牌桶中所述候选令牌的令牌数量作为所述剩余令牌数量,将所述第一令牌桶中所述候选令牌的最近的历史刷新时间作为所述上次刷新时间。

于本发明一实施例中,获取多个历史请求日志,所述历史请求日志包括通过多个接收接口所接收到的历史请求的历史请求信息,所述历史请求信息包括接收接口标识、请求发起对象信息、历史请求服务信息、历史请求方式、历史属性信息和历史请求时间;对多个历史请求日志按照接收接口标识、请求发起对象信息和历史请求时间进行数据统计,得到每一接收接口中各请求发起对象在多个历史统计时间维度中的初始维度数据,所述初始维度数据包括历史请求次数、历史属性信息次数、请求方式次数、请求服务信息次数中至少之一;若所述初始维度数据大于对应的预设维度最大值,或,若所述初始维度数据小于对应的预设维度最小值将所述初始维度数据中确定为异常维度数据;基于所述异常维度数据生成报警提示信息,以进行报警。

于本发明一实施例中,基于所述预设接口控制策略对所述服务请求进行控制之后,所述方法还包括:若所述服务请求被允许访问目标服务,将所述服务请求增加至访问队列中;如果检测到规则改变事件,对所述访问队列中的所述服务请求重新进行将所述请求属性信息与预设属性信息进行匹配以及候选令牌的剩余令牌数量确定的步骤,其中,规则改变事件包括以下至少之一,预设属性信息发生改变、候选令牌的存在状态发生改变、令牌生成速率发生了改变。

于本发明一实施例中,基于所述预设接口控制策略对所述服务请求进行控制包括以下至少之一:若所述预设接口控制策略为限流,获取第二令牌桶中放行令牌的放行令牌数量,若所述放行令牌数量大于0,为所述服务请求方法发放一放行令牌,并控制所述服务请求继续进行服务访问,放行令牌的生成数量按照预设放行令牌生成速度确定;若所述预设接口控制策略为熔断,响应调用失败提示;若所述预设接口控制策略为降级,基于所述请求服务标识请求方式和所述当前接口标识中至少之一匹配得到预设兜底数据,并反馈所述预设兜底数据。

于本发明一实施例中,触发所述当前接口开启预设接口控制策略之后,所述方法还包括基于所开启的预设接口控制策略生成告警信息;将所述告警信息发送至预设接收端,以进行告警提示,所述预设接收端包括邮箱地址、网络钩子、预设内部告警系统中至少之一。

本发明实施例还提供了一种服务请求控制装置,所述装置包括:当前接口,用于接收服务请求,所述服务请求包括请求服务标识、请求方式和请求属性信息;请求拦截模块,用于将所述请求属性信息与预设属性信息进行匹配;第一令牌桶,用于当匹配通过,基于所述请求方式、所述请求属性信息、请求服务标识和所述当前接口的当前接口标识确定第一令牌桶中候选令牌的剩余令牌数量和上次刷新时间;请求统计模块,用于当匹配通过,根据所述请求服务标识、请求方式和请求属性信息中的一个或多个确定目标统计维度,触发对所述服务请求的请求执行数据按照所述目标统计维度进行统计,得到所述目标统计维度的当前统计数据令牌生成模块,用于若所述剩余令牌数量小于第一临界阈值,根据所述请求方式、所述请求属性信息、所述请求服务标识和所述当前接口标识确定所述候选令牌的令牌生成速率,并基于当前时间、所述上次刷新时间和所述令牌生成速率确定当前令牌生成数量;策略启用确定模块,用于如果所述当前令牌生成数量小于第二临界阈值,和/或如果所述当前统计数据满足预设统计数据区间,触发所述当前接口开启预设接口控制策略,基于所述预设接口控制策略对所述服务请求进行控制。

本发明的有益效果:

本发明实施例提供了一种服务请求控制方法及装置,该方法通过当前接口接收服务请求将服务请求中的请求属性信息与预设属性信息进行匹配,若匹配通过,确定第一令牌桶中候选令牌的剩余令牌数量和上次刷新时间,以及确定目标统计维度并对服务请求的请求执行数据进行统计得到当前统计数据,若该剩余令牌数量小于第一临界阈值,确定候选令牌的令牌生成速率,并基于当前时间、上次刷新时间和令牌生成速率确定当前令牌生成数量,如果该当前令牌生成数量小于第二临界阈值,和/或如果当前统计数据满足预设统计数据区间,则触发当前接口开启预设接口控制策略,以基于该预设接口控制策略对服务请求进行控制,通过先将服务请求中的请求属性数据进行匹配,以筛选出来需要进行服务请求控制的请求,能够精确的找到哪些服务请求是需要进行限流控制的并加以分类统计的,进一步通过候选令牌的发放成功与否,进一步控制哪些服务请求能够继续进行访问,当令牌耗尽时,则说明服务请求量已经超出了预设的承载量,则控制该当前接口进入预设接口控制策略,通过开启的预设接口控制策略对服务请求进行进一步的控制,这样能够实现按照预设属性信息对服务请求进行预先筛选以及选择统计对象,实现不同预设属性信息的服务请求对目标服务的正常合理调用,不是单纯以所接收到的全部的服务请求数量为限进行限流,控制更为精细化,提升客户体验度。

附图说明

图1是本发明实施例中一个服务请求控制方法的流程示意图;

图2为本发明实施例中提供的通过API网关进行请求转发的一种示意图;

图3为本发明实施例中提供的规则配置方式的一种流程示意图;

图4是本发明实施例中一个服务请求控制方法的具体的流程示意图;

图5是本发明实施例中一个服务请求控制装置的结构示意图;

图6是本发明实施例中一个电子设备的示意图。

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的子样本可以相互组合。

需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

在下文描述中,探讨了大量细节,以提供对本发明实施例的更透彻的解释,然而,对本领域技术人员来说,可以在没有这些具体细节的情况下实施本发明的实施例是显而易见的,在其他实施例中,以方框图的形式而不是以细节的形式来示出公知的结构和设备,以避免使本发明的实施例难以理解。

本公开实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开实施例的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。

除非另有说明,术语“多个”表示两个或两个以上。

本公开实施例中,字符“/”表示前后对象是一种“或”的关系。例如,A/B表示:A或B。

术语“和/或”是一种描述对象的关联关系,表示可以存在三种关系。例如,A和/或B,表示:A或B,或,A和B这三种关系。

结合图1所示,图1为本发明实施例中提供的服务请求控制方法的一种流程示意图,如图1所示,包括步骤S110-步骤S150,具体介绍如下:

步骤S110,通过当前接口接收服务请求。

其中,服务请求包括请求服务标识、请求方式和请求属性信息。

服务请求是外部请求,其目的是访问内部的目标服务。当前接口也即前述提到的API网关,请求服务标识为目标服务的标识,以通过请求服务标识找到对应的目标服务。请求方式可以是本领域技术人员所知晓的各种请求方式中的一个或多个。请求属性信息可以为表示该服务请求的请求方身份的信息,和/或预先设定的针对某一目标的参数。通过该请求属性信息可以在除了所针对的目标服务、请求来源外的另一个维度对服务请求加以区分,也即本领域技术人员所预先设定的用以对服务请求进行种类划分的一种数据标识参数。

本实施例提供的服务请求控制方法可以应用于API网关,由于,API的实现方面更多的考虑业务逻辑,而安全、性能、监控可以交由API网关来做,这样既提高业务灵活性又不缺安全性。请参考图2,图2为本发明实施例中提供的通过API网关进行请求转发的一种示意图,如图2所示,一个或多个客户端将服务请求(图2中所示出的“请求”)发送至API网关,API网关具有单点入口、认证授权、流量控制、限流熔断、日志监控、路由转发、负载均衡、失败重试中的一种或多种功能,该服务请求经由API网关转发给到对应的微服务(图2中所示出的“微服务1…微服务n”)。

在一实施例中,步骤S110之前,也即通过当前接口接收服务请求之前,该方法还包括:

创建服务,服务是一组接口管理的逻辑概念,同时也可以作为微服务的服务名,自动发现和拉取接口进行管理。每个服务有唯一的编码SERVICE_KEY。同时,服务名也是通过访问网关的url前缀,比如域名/服务名/api地址组成一个完整接口地址;

创建API,在服务创建完成后,在服务下面创建接口,将接口的请求方式、请求地址、请求参数信息录入。

其中,上述实施例中的“服务”也即服务请求所要请求访问的目标服务,API也即当前接口。通过该AIP来接收客户端发送的服务请求。

步骤S120,将请求属性信息与预设属性信息进行匹配。

如上述实施例提到的,预设属性信息为本领域技术人员所预先设定的用以对服务请求进行种类划分的一种数据标识参数,请求属性信息为该服务请求与其他类型的服务请求进行区分的一种参数,通过将请求属性参数与预设属性参数进行比对,能够知晓该服务请求是否是需要的类别的请求。预设属性信息可以是一个或多个,由本领域技术人员预先设定,该预设属性信息可以是现有的服务请求中的某一现有参数,也可以是本领域技术人员为实现本实施例提供的服务请求控制方法所单独设定的请求结构规则。当客户端想要访问目标服务时,需要按照请求结构规则加入对应的请求属性信息。

在一实施例中,将请求属性信息与预设属性信息进行匹配之前,完成服务和API创建之后,该方法还包括:预先进行规则配置,如配置统计请求的具体配置规则(具体详见后续实施例的描述,也即请求统计规则、预设统计维度)、触发的配置条件(请求拦截规则),后续会根据请求统计规则对应的预设统计维度和请求拦截规则进行统计。配置条件,条件可以理解为一种特殊的规则,触发请求统计规则之前的一系列条件,也可以理解条件就是一套请求拦截规则,比如说当请求为某某租户或请求必须携带某个参数(预设属性信息)才会被维度统计。可见,一个请求统计规则可对应一个或多个请求拦截规则,也即,一个请求统计规则对应有一个或多个预设属性信息,一旦某一服务请求的请求属性信息与请求统计规则对应的预设属性信息匹配,则触发请求统计规则对该服务请求的请求执行数据进行统计。请求统计规则对应有一个或多个预设统计维度,当存在多个预设统计维度,各预设统计维度之间可以是基于预设属性信息、请求方式、请求服务标识、当前接口标识中的一个或多个进行区分,也即,可以通过当前接收到的服务请求的请求服务标识、请求方式、请求属性信息、当前接口标识中至少一个匹配得到多个预设统计维度中的目标统计维度,触发对服务请求的请求执行数据按照目标统计维度进行统计,得到目标统计维度的当前统计数据,也即对目标统计维度的统计结果数据进行刷新。请求执行数据包括但不限于请求总数、转发总数、请求失败数、转发失败数、超时数、认证授权失败数等中至少之一。

在一实施例中,将请求属性信息与预设属性信息进行匹配,包括:获取当前接口的多个预设配置条件,预设配置条件包括预设属性信息;将请求属性信息与每一预设配置条件的预设属性信息进行匹配;若请求属性信息与至少一预设属性信息匹配成功,则匹配通过;若请求属性信息与全部预设属性信息均匹配失败,则匹配不通过。

在本实施例中,若匹配不通过,则说明不对该服务请求进行限流,进行继续访问,如可以直接转发至目标服务,这样,可以将服务请求按照需要进行拦截和筛选,并且对匹配通过的服务请求进行统计,使得统计结果更为细致,进而使得后续是否进入预设接口控制策略的时机掌握的更为精准,有效的提升了用户体验度。

也即,本实施例提供的方法在执行步骤S120之前,需要预先进行请求拦截规则的配置,该请求拦截规则的数量可以是一个或多个,每一个请求拦截规则可以配置有一个或多个预设属性信息,若当前的服务请求中携带一个请求属性信息,则触发请求拦截规则进行拦截验证当某一个或多个请求拦截规则验证通过,也即匹配成功,也即该服务请求包括有某一个或多个请求拦截规则对应的预设属性信息(请求属性信息与预设属性信息相同),则进入后续步骤,否则验证失败也即匹配失败,进行拦截,拒绝访问或采用本领域技术人员所知晓的处理方式实现。当然,上述实施例中提供了请求属性信息与某一个或多个请求拦截规则的预设属性信息相同则验证通过的示例,本领域技术人员也可以采用“判非”的方式实现拦截,也即,请求属性信息与某一个或多个请求拦截规则的预设属性信息相同则验证失败,也即匹配失败进行拦截,可进行拒绝访问或者本领域技术人员所设定的其他步骤。否则,请求属性信息与全部请求拦截规则的预设属性信息不同则验证成功,也即匹配成功,进入后续步骤。

步骤S130,当匹配通过,基于请求方式、请求属性信息、请求服务标识和当前接口的当前接口标识确定第一令牌桶中候选令牌的剩余令牌数量和上次刷新时间,以及根据请求服务标识、请求方式和请求属性信息中的一个或多个确定目标统计维度,触发对服务请求的请求执行相关数据按照目标统计维度进行统计,得到目标统计维度的当前统计数据。

第一令牌桶为之前所维护用户存储令牌的工具,本实施例提供的方案中的服务请求只有拿到令牌后才能够进行访问的下一步骤,否则,则可能被拒绝访问或者执行本领域技术人员所设定的其他规则。当匹配通过后,服务请求就会进入规则校验阶段,该规则检验的方式可以是采用第一令牌桶算法。例如可以为每个组以及单独配置的接口维护了一个属于自己的第一令牌桶,当服务请求进入网关且满足条件后,会先从第一令牌桶获取令牌(一个候选令牌),只有获取到了令牌才能通过网关,才能进入后续步骤。

一种示例的实施例中,第一令牌桶通过Lua脚本(Lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放)设置桶参数(也即令牌规则标识(key)、令牌阈值(限流大小)和令牌生成速率(生成令牌的速率)等),分别是限流的key(SERVICE_KE Y+REG_KEY+请求方式+接口KEY)、生成令牌的速率(按照每天或者每小时或者每分钟维度)、当前时间以及限流大小也即配置的规则数量N(对某一种请求统计规则设定的最大令牌数量,也即令牌阈值)。可以理解,对于第一令牌桶中的令牌可以是一种或多种,每一种令牌均配置有令牌参数、令牌生成速率(表征其生成速率)和令牌阈值,也即由请求方式、当前接口标识(接口KEY)、请求服务标识(SERVICE_KEY)、请求统计规则标识(REG_KE Y)生成的令牌规则标识。令牌阈值可以由请求统计规则标识确定,也即预先配置有每一请求统计规则对应的令牌阈值,只需要查找匹配即可。请求统计规则标识为请求统计规则的标识,其对应有一个或多个预设属性信息。

在一实施例中,基于请求方式、请求属性信息、请求服务标识和当前接口的当前接口标识确定第一令牌桶中候选令牌的剩余令牌数量和上次刷新时间,包括:将请求方式、请求属性信息、请求服务标识和当前接口标识与第一令牌桶中的多种初始令牌的预设请求方式、请求统计规则标识、预设服务标识和预设接口标识进行匹配,将匹配成功的初始令牌作为候选令牌,初始令牌预先配置的令牌参数包括令牌规则标识、令牌阈值和令牌生成速率,令牌规则标识基于请求统计规则标识、预设请求方式、预设服务标识和预设接口标识生成,请求统计规则标识对应有一个或多个预设属性信息;以第一令牌桶中候选令牌的令牌数量作为剩余令牌数量将第一令牌桶中候选令牌的最近的历史刷新时间作为上次刷新时间。

需要说明的是,若第一令牌桶中只有一种令牌,则直接获取该第一令牌桶中的剩余令牌数量即可,不需要再行匹配得到结果。

其中,令牌生成速率表征在请求方式下请求服务标识和当前接口对应的令牌生成速率,也即生成令牌的速率,可以按照预设的生成时间间隔维度确定。令牌规则标识基于预设接口标识接口KEY、预设请求方式(请求方式)、预设服务标识SERVICE_KEY,预设请求统计规则标识REG_KEY生成。令牌阈值为该预设请求统计规则对应的预先配置的限流大小,也即在一定周期比如一天的最多的令牌发放数量。

可以预先按照上述方式生成一个或多个第一令牌桶中的令牌。后续根据当前得到的服务请求的相关参数进行比较,以知晓该去哪一个第一令牌桶中去进行令牌的申请。一个第一令牌桶中可以存在一个预设请求统计规则、预设统计维度对应的令牌,或多个预设请求统计规则、预设统计维度对应的令牌。

其中请求统计规则规定了预设统计维度,该预设统计维度由计量单位时间维度和参数统计维度组成。请求统计规则和请求拦截规则分为系统内置参数和自定义两种场景。每个请求统计规则有一个特定编码REG_KEY。计量时间维度按秒、分钟、小时和天维度等中至少之一;参数统计维度包括请求总数、转发总数、请求失败数、转发失败数、超时数、认证授权失败数等中至少之一。对于两个参数统计维度可以采用相同的计量时间维度,也可以采用不同的计量时间维度。

在一实施例中,该方法还包括:获取多个历史请求日志,历史请求日志包括通过多个接收接口所接收到的历史请求的历史请求信息,历史请求信息包括接收接口标识、请求发起对象信息、历史请求服务信息、历史请求方式、历史属性信息和历史请求时间;对多个历史请求日志按照接收接口标识、请求发起对象信息和历史请求时间进行数据统计,得到每一接收接口中各请求发起对象在多个历史统计时间维度中的初始维度数据,初始维度数据包括历史请求次数、历史属性信息次数、请求方式次数、请求服务信息次数中至少之一;若初始维度数据大于对应的预设维度最大值,或,若初始维度数据小于对应的预设维度最小值,将初始维度数据中确定为异常维度数据;基于异常维度数据生成报警提示信息,以进行报警。也即,若某接收接口中某请求发起对象在一个或多个历史统计时间维度中的历史请求次数明显高于或低于该请求发起对象在通过该接收接口在其他历史统计时间维度中的次数,则说明该历史请求此时是异常维度数据,其他的初始维度数据所对应的异常维度数据的方式与历史请求次数类似,在此不作限定。此时预设维度最大值和预设维度最小值可以为该统计场景下的该请求发起对象在该接收接口的多个历史统计时间维度(如30天)的平均值、中位数、众数等中至少之二,或者预设维度最大值和预设维度最小值也可以是本领域技术人员所预先设定的值(基于值和大于还是小于得到预设统计数据区间如0至预设维度最小值,或预设维度最大值至无穷大)。通过上述异常情况可以生成报警提示信息,以进行提示存在历史累计的异常情况。

例如,API网关对所有的请求都有完整的日志保存和分析,通过数据分析和模型分析抽取出接通过网关实际情况。异步的对日志数据进行分析,日志根据条件和规则的参数进行解析、记录和提取,比如针对a接口的A租户每天进行1000次的访问规则,日志根据a接口维度、A租户维度、每天维度进行数据聚合,形成各个维度的数据汇入到分析模型进行数据分析。针对日志的分析结果,一方面一旦发现偏离正常值较大的请求接口进行异常报警,由人工进行检查核实处理。

在另一实施例中,API网关可以基于历史日志生成可以具有指导性的“新规则”,只需要人工审核通过后,对网关系统和redis数据进行修改刷新,实现快速调整,达到智能决策降低人工的参与度。本发明实施例中的第一令牌桶和第二令牌桶均是基于redis实现。redis是一个高性能内存数据结构存储系统,数据存取发生在内存中,IO速度非常快,可以实现实时数据更新、实时事务处理、实时日志处理。同时,不管网关服务是单节点部署还是分布式部署,网关服务都能通过redis进行规则的读取和令牌的读取,即改机生效。不需要对网关服务进行停机服务,达到实时生效。

继续上述实施例,若预设维度最大值和预设维度最小值是本领域技术人员所预先设定的值,当存在超出预设占比的历史请求的某一个或多个初始维度数据中体现的次数均大于预设维度最大值或小于预设维度最小值,则可以调整该预设维度最大值或预设维度最小值,将该统计场景下的该请求发起对象在该接收接口的多个历史统计时间维度(如30天)的平均值、中位数、众数等作为预设维度最大值或小于预设维度最小值,并调整预设维度最大值或小于预设维度最小值生成新的预设统计数据区间,这样就实现的与前述的预设接口控制策略的启闭的预设统计数据区间的调整联动,使得是否启动或关闭预设接口控制策略,开启何种接口控制策略的选取更为符合整个API网关负载均衡的当前实际情况和满足客户端访问目标服务的需要。

在本实施例中,当服务请求的请求属性信息与预设属性信息匹配,则说明该服务请求通过了请求拦截规则,可以被统计,则根据该请求拦截规则对应的请求统计规则的一个或多个预设统计维度中选择一个或多个作为目标统计维度,按照目标统计维度的计量时间维度和参数统计维度对该服务请求的请求执行数据进行统计,如目标统计维度为一个,其参数统计维度是请求总数、超时数,计量时间维度是请求总数按照每一分钟计量,超时数按照每一天计量,该服务请求没有超时,则当前统计数据中的请求总数+1,超时数维持不变。当前统计数据包括了该服务请求之前的历史请求的统计数据。

步骤S140,若剩余令牌数量小于第一临界阈值,根据请求方式、请求属性信息、请求服务标识和当前接口标识确定候选令牌的令牌生成速率,并基于当前时间、上次刷新时间和令牌生成速率确定当前令牌生成数量。

其中,令牌生成速率表征在请求方式下请求服务标识、当前接口及请求属性信息对应的令牌生成速率。第一临界阈值可以是1或其他本领域技术人员所设定的值。

在一实施例中,当第一令牌桶中与服务请求匹配的候选令牌已经全部清零或者已经少于第一临界阈值了,可以先查看第一令牌桶的上次刷新时间,若上次刷新时间与当前时间一致,或者上次刷新时间与当前时间之间的时间差值小于预设差值,则说明当前这一类的服务请求量比较大,没有多余的令牌重新生成,则当前令牌生成数量为零。

在一实施例中,当上次刷新时间与当前时间的时间差值大于预设差值,则可以根据请求方式、请求服务标识中至少一个确定当前执行的当前接口控制策略,若某一个服务接口或者某一种请求方式存在执行中的接口控制策略,则根据该接口控制策略确定对应的当前令牌生成数量。若接口控制策略是熔断,则不再需要生成新的令牌,确定当前令牌生成数量为零。若接口控制策略是限流,则根据限流的程度如80%、当前时间、上次刷新时间和令牌生成速率确定当前令牌生成数量,可以为当前时间与上次刷新时间的时间差,将该时间差与令牌生成速率和限流程度相乘,得到当前令牌生成数量。这样可以避免令牌生成过程的“白做工”。

在一实施例中,若剩余令牌数量大于或等于第一临界阈值,则为服务请求发放一候选令牌,并控制该服务请求继续进行目标服务的访问。若当前也没有触发预设接口控制策略,则该服务请求可以直接被转发给到目标服务,或者缓存在目标服务的缓存队列中,等待访问目标服务。

步骤S150,如果当前令牌生成数量小于第二临界阈值,和/或如果当前统计数据满足预设统计数据区间,触发当前接口开启预设接口控制策略,基于预设接口控制策略对服务请求进行控制。

第二临界阈值可以是1等其他本领域技术人员所设定的数值。第一临界阈值与第二临界阈值的大小关系可以由本领域技术人员进行设定,在此不做限定。

在上述提供的则可以根据请求方式、请求服务标识中至少一个确定当前执行的当前接口控制策略,若某一个服务接口或者某一种请求方式存在执行中的接口控制策略,则根据该接口控制策略确定对应的当前令牌生成数量的实施例中,已经执行了一种预设接口控制策略作为当前接口控制策略,则如果当前令牌生成数量为0或小于第二临界阈值,触发当前接口开启预设接口控制策略中的预设接口控制策略仍然是之前执行的控制策略。

预设接口控制策略的触发执行和结束可以由上述实施例提供的预设请求统计规则对应的预设统计维度所统计得到的数据进行调整。也即,当请求总数、转发总数、请求失败数、转发失败数、超时数、认证授权失败数等在一定时间段(如秒、分钟、小时、天)内的数值大于一数值M,则启动对应的预设接口控制策略,反之,当请求总数、转发总数、请求失败数、转发失败数、超时数、认证授权失败数等在一定时间段(如秒、分钟、小时、天)内的数值小于数值N则停止预设接口控制策略。其中数值M与数值N可以是相同数值,也可以是不同数值。

如上述实施例提到的,当前统计数据是基于匹配的服务请求的请求执行数据更新的,若目标统计维度存在多个参数统计维度,则每一参数统计维度均预先设置有对应的预设统计数据区间(数量可以是一个或多个,若是多个可以进一步对参数统计维度的数据进行分级),当一个或多个参数统计维度的数据满足预设统计数据区间,基于预先设定的不同参数统计维度数据所赌赢的预设统计数据区间,以及多个预设统计数据区间对应的预设接口控制策略,确定是否开启预设接口控制策略,以及开启哪一个预设接口控制策略。

由于预设统计规则可以存在多个,如果某一个或多个预设统计规则对应的目标统计维度的当前统计数据满足该目标统计维度的预设统计数据区间,基于预先配置的不同预设统计规则、目标统计维度对应的预设接口控制策略选择一个或多个预设接口控制策略,并触发当前接口开启对应的预设接口控制策略。

在一实施例中,该方法还包括:若满足预设令牌发放条件,为服务请求分配一候选令牌预设令牌发放条件包括剩余令牌数量大于第一临界阈值,或若当前令牌生成数量大于第二临街阈值,已生成新增的候选令牌并增加入第一令牌桶,并以当前时间刷新上次刷新时间;若当前接口尚未启用预设接口控制策略,控制服务请求继续进行目标服务访问;若当前接口启用预设接口控制策略,基于预设接口控制策略对服务请求进行控制。

也即,请求执行数据包括但不限于历史请求的请求总数、转发总数、请求失败数、转发失败数、超时数、认证授权失败数等在一定时间段(如秒、分钟、小时、天)内的数值。目标统计维度包括计量时间维度和参数统计维度,计量时间维度包括秒、分钟、小时、天等中至少之一,参数统计维度包括请求总数、转发总数、请求失败数、转发失败数、超时数、认证授权失败数等维度中至少之一。对于两个目标统计维度可以采用相同的计量时间维度,也可以采用不同的计量时间维度,本领域技术人员可以根据需要进行设定。其中历史请求可以是预设拦截规则的匹配结果为匹配通过的服务请求,也可以是当前接口所接收到的全部的服务请求,还可以是得到了候选令牌的服务请求,对于具有不同的请求方式、不同接口接收到的请求、不同的预设属性信息、不同的客户端等可以选择上述一种或多种历史请求的确定方式。

不同的目标统计维度可以设定有相同或不同的预设统计数据区间,本领域技术人员可以根据需要进行具体数值的选取。对于不同的目标统计维度的统计数据满足预设数据阈值时所对应的预设接口控制策略,可以是相同的控制策略,也可以根据需要对应配置几个配置策略加以选取。

在一实施例中,若当前令牌生成数量大于第二临界阈值,生成新增的候选令牌并增加入第一令牌桶,监测第一令牌桶中每一候选令牌的存在时长,如果存在待销毁令牌,将待销毁令牌从第一令牌桶中移除,待销毁令牌为存在时长超过预设时长阈值的候选令牌。也即,如果当前令牌生成数量大于0或其他预先设定的第二临界阈值,说明可以生成新的令牌,可以根据该当前令牌生成数据生成小于或等于该数量的令牌(至少1个),加入到第一令牌桶进行令牌的补充。如果需要新增的令牌数量较少,也可以通过调整第二临界阈值的大小来控制每一次令牌生成的最小数量,进而减少令牌的生成次数,减少系统的负担。当存在时长过长说明该令牌已经很久没有被请求了,此时由于可能存在令牌生成速率等的调整,故可以将超时的令牌进行销毁,进而减少第一令牌桶空间的无效占用。在另一实施例中,当存在时长超出存在时间阈值,说明某一类型的服务请求很久都没有被接收到,要么可能存在端口的问题要么存在客户端的问题、又或者对于该类型的服务请求过长时间的进行了熔断等一种或多种情形发生,可以统计该令牌类型X的令牌的数量,若该类型的令牌的数量超出预设令牌数量阈值,则可以基于该令牌类型X对应的预设报警信息进行报警。这样能够进一步提升异常事件的发现概率,提升系统的可靠性。

在一实施例中,若剩余令牌数量大于第一临界阈值,监测第一令牌桶中每一候选令牌的存在时长,如果存在待销毁令牌,将待销毁令牌从第一令牌桶中移除,待销毁令牌为存在时长超过预设时长阈值的候选令牌。此处的令牌销毁策略和理由及效果与上述若当前令牌生成数量大于第二临界阈值时所对应的方案类似,在此不再赘述。

在一实施例中,基于预设接口控制策略对服务请求进行控制之后,该方法还包括:若服务请求被允许访问目标服务,将服务请求增加至访问队列中;如果检测到规则改变事件第一令牌桶中的候选令牌的预设配置规则发生了变化,对访问队列中的服务请求重新进行将请求属性信息与预设属性信息进行匹配以及候选令牌的剩余令牌数量确定的步骤,其中,规则改变事件包括以下至少之一,预设属性信息发生改变、候选令牌的存在状态发生改变、令牌生成速率发生了改变至基于预设接口控制策略对服务请求进行控制的步骤。也即重新执行步骤S120至步骤S150的一个或多个步骤以及上述实施例中提供的其他方法的步骤。此时可能存在以下情况的一种或多种,步骤S120中的预设属性信息可能存在变化,候选令牌的存在状态(第一令牌桶是否允许候选令牌存在)、令牌生成速率等也可能发生了变化,预设接口控制策略也可能存在改变。基于改变后的现状重新进行预设属性信息的匹配和候选令牌的请求。

在一实施例中,将请求属性信息与预设属性信息进行匹配之前,该方法包括:获取规则改变事件的规则修改数据,规则修改数据包括预设属性信息修改数据、目标统计维度修改数据、预设统计数据区间修改数据、预设接口控制策略修改数据、目标统计维度与预设属性信息的对应关系修改数据中至少之一,规则修改数据基于外部输入数据或历史请求日志得到;基于规则修改数据对预设属性信息、目标统计维度、预设统计数据区间、预设接口控制策略、目标统计维度与预设属性信息的对应关系中至少之一进行修改及更新。其中外部输入数据可以是行业经验总结下的规则输入到系统中以更新请求拦截规则、请求统计规则等,也可以通过当前系统应用场景进行自定义规则。目标统计维度的修改可以是计量时间维度、参数统计维度中至少一项的修改。预设统计数据区间修改数据可以基于历史请求日志所统计得到的,也即若预设维度最大值和预设维度最小值是本领域技术人员所预先设定的值,当存在超出预设占比的历史请求的某一个或多个初始维度数据中体现的次数均大于预设维度最大值或小于预设维度最小值,则可以调整该预设维度最大值或预设维度最小值,将该统计场景下的该请求发起对象在该接收接口的多个历史统计时间维度(如30天)的平均值、中位数、众数等作为预设维度最大值或小于预设维度最小值,并调整预设维度最大值或小于预设维度最小值生成新的预设统计数据区间。若预设拦截规则、预设统计规则存在多个,也存在多个目标统计维度,则该规则修改数据需要携带对应的标识以区分是修改哪一个目标统计维度或者规则的。

对于发生了新旧的规则交替(规则改变事件),如果当前服务请求拿到令牌代表已经通过网关流量控制功能。若需要处理可以通过添加队列的方式,对通过流量控制后请求先进行排队,新旧交替生效后,对还未进行转发的数据进行重新条件拦截、规则校验和限流策略二次处理。

在一实施例中,预设接口控制策略包括限流、熔断或降级中至少之一。每一个预设接口控制策略对应一个或多个目标统计维度以及该目标统计维度的统计数据对应的预设数据阈值。若两个预设接口控制策略存在对应的相同的目标统计维度,则同一目标统计维度的预设数据阈值不同。限流策略对接口处理有三种处理方式,限流、熔断和降级。其中熔断会响应失败调用提示,未采用空闲接口方式。若不想接口响应失败,可以配置成降级,也就是响应正常(达到空闲接口的响应效果),但是非业务数据,不至于下游系统因为网关熔断拒绝请求而影响业务调用流程。

在一实施例中,基于预设接口控制策略对服务请求进行控制包括以下至少之一:

若预设接口控制策略为限流,获取第二新的令牌桶中放行令牌的放行令牌数量,若放行令牌数量大于0,为服务请求方法发放一放行令牌,并控制服务请求继续进行服务访问,放行令牌的生成数量按照预设放行令牌生成速度确定生成速率的控制,拿到了新的令牌,允许访问服务,若放行令牌数量等于0,则拒绝该服务请求或执行本领域技术人员所预设的其他动作;

若预设接口控制策略为熔断,响应调用失败提示;

若预设接口控制策略为降级,基于请求服务标识、请求方式和当前接口标识中至少之一匹配得到预设兜底数据,并反馈预设兜底数据。

在一实施例中,触发当前接口开启预设接口控制策略之后,该方法还包括:基于所开启的预设接口控制策略生成告警信息;将告警信息发送至预设接收端,以进行告警提示,预设接收端包括邮箱地址、网络钩子、预设内部告警系统等中至少之一。

上述实施例提供了一种服务请求控制方法,通过当前接口接收服务请求,将服务请求中的请求属性信息与预设属性信息进行匹配,若匹配通过,基于服务请求的请求方式、请求属性信息、请求服务标识和当前接口标识确定第一令牌桶中候选令牌的剩余令牌数量和上次刷新时间,若该剩余令牌数量小于第一临界阈值,根据请求方式、请求属性信息、请求服务标识、当前接口标识确定候选令牌的令牌生成速率,并基于当前时间、上次刷新时间和令牌生成速率确定当前令牌生成数量,如果该当前令牌生成数量小于第二临界阈值,和/或如果当前统计数据满足预设统计数据区间,则触发当前接口开启预设接口控制策略,以基于该预设接口控制策略对服务请求进行控制,通过先将服务请求中的请求属性数据进行匹配,以筛选出来需要进行服务请求控制的请求,能够精确的找到哪些服务请求是需要进行限流控制的(对于其他的服务请求,可以是直接可以不同限流,优先级足够高,可以是不会进行处理,不满足该接口的最低标准或者其他本领域技术人员所设定的处理规则),进一步通过候选令牌的发放成功与否,进一步控制哪些服务请求能够继续进行访问,当令牌耗尽时,则说明服务请求量已经超出了预设的承载量,则控制该当前接口进入预设接口控制策略,通过开启的预设接口控制策略对服务请求进行进一步的控制,这样能够实现按照预设属性信息对服务请求进行预先筛选,实现不同预设属性信息的服务请求对目标服务的正常合理调用,对某一类或者某几类需要计数的请求进行计数并确定是否触发预设接口控制策略,不是单纯以所接收到的全部的服务请求数量为限进行限流,控制更为精细化,提升客户体验度。

此外,本实施例提供的方法,参数流控可以针对用户的请求参数以及自定义条件执行进行流控,参数流控配置支持如下特性:

1)支持秒、分钟、小时、天的流控维度来作为计量时间维度;

2)根据客户端请求参数、API网关内置的系统参数设置条件得到参数统计维度,来执行不同的流量控维度;

3)可以使用单个规则、或多个规则的组合来设置流量控制,也即通过配置多个请求统计规则来分别统计当前统计数据,并基于当前统计数据与对应的预设统计数据区间的满足情况来确定是否进入预设接口控制策略,进而实现进一步的流量控制。

同时,上述实施例提供的方法还具有以下优点:

1)可扩展性强。针对规则配置既有行业经验总结下的内置规则,也能通过完全的特定业务场景进行自定义规则,支持spring的SPEL解析规则,扩展性高。

2)规则配置简单,逻辑清晰,易于理解。本发明通过底层业务封装,开发者需要进行简单的参数配置,对于稍有开发经验或运维经验人员友好。

3)能够针对全局或单个API设置告警规则和具体通知的人,支持邮件和网络钩子Webhook等告警方式,可对接企业内部告警系统。

请参见图3,图3为本发明实施例中提供的服务请求控制方法的规则配置方式的流程示意图,如图3所示,该规则配置方式包括以下步骤:

首先,创建服务,服务既是微服务服务名,也是逻辑分组。服务是一组接口管理的逻辑概念,同时也可以作为微服务的服务名,自动发现和拉取接口进行管理。每个服务有唯一的编码SERVICE_KEY。同时,服务名也是通过访问网关的url前缀,比如域名/服务名/api地址组成一个完整接口地址。该服务的数量可以是一个或多个,至少包括目标服务。其次,创建当前接口API,录入接口请求地址、请求方式等信息用于配置特定接口规则。创建服务完成后,在服务下面创建接口,将接口的请求方式、请求地址、请求参数信息录入。也即创建当前接口,该当前接口预先配置有对应的请求方式、请求地址和请求参数信息。再次,配置规则,基于服务和接口配置规则(请求拦截规则和请求统计规则)。规则配置,配置统计请求的具体规则(请求统计规则)、触发条件(请求拦截规则),后续会根据规则和条件进行统计。请求统计规则由计量时间维度和参数统计维度组成。规则和条件分为系统内置参数和自定义两种场景。每个请求统计规则有一个特定编码REG_KEY。计量时间维度按秒、分钟、小时和天维度;统计维度包括请求总数、转发总数、请求失败数、转发失败数、超时数、认证授权失败数。配置条件,条件可以理解为一种特殊的规则,触发规则之前的一系列条件,也可以理解条件就是一套请求拦截规则,比如说当请求为某某租户或请求必须携带某个参数才会被维度统计。当请求满足条件,会进入是否规则校验,规则校验采用令牌桶算法。每个组以及单独配置的接口维护了一个属于自己的令牌桶,当请求进入网关且满足条件后,会先从令牌桶获取令牌,只有获取到了令牌才能通过网关,才能进入后续步骤。令牌桶通过Lua脚本设置桶参数,分别是限流的key(SERVICE_KEY+REG_KEY+请求方式+接口KEY)、限流大小((步骤3))配置的规则数量N)、生成令牌的速率((按照每天或者每小时或者每分钟维度))、当前时间。也可以自定义针对特定接口特定场景特定业务特定数据进行更细粒度的请求解析并形成规则,当条件满足时也能同内置参数叠加生效。然后,配置控制策略。针对达到需要控制接口后续的控制策略。配置对应的控制策略,控制策略包含降级、熔断和限流。!)降级策略,可以配置兜底数据和降级数据,优先保证核心业务和优先保证绝大部分用户,以至于下游系统或者访问页面不会因为接口访问失败而导致链路异常;!!)限流策略,如果配置限流处理,会启动一个固定速率的令牌桶,请求会再次获取令牌,由于桶中的令牌是固定速率放入,只有拿到令牌才能进行访问,否则丢弃该请求,拒绝访问,以达到“限速”限流目标;!!!)熔断策略,直接后续请求拒绝访问。同时,也可以在该位置扩展添加其他处理比如日志、告警、监控等等操作。最后,设置启用生效。

请参见图4,图4为本发明实施例中提供的服务请求控制方法的一种具体的流程示意图,如图4所示,该具体的服务请求控制方法包括以下步骤:接收客户端请求(服务请求),请求解析,也即对该服务请求进行解析,判断是否配置规则,若是则判断是否满足条件,若是则判断是否触发规则,若是则选择控制策略,该控制策略包括熔断或降级、限流。若是限流,则限制访问目标服务接口,若是熔断或降级触发既定规则,熔断响应失败。具体可参考上述图3所配置的规则。若未配置规则直接转发目标服务接口,若不满足条件,则转发服务请求给目标服务接口,若没有触发规则,则转发服务请求至目标服务接口。

例如,当目前有个产品分组(product_key)下查询产品列表的get请求方式接口(/ap i/product/list),当前配置规则为每分钟调用成功(reg_success)次为100次,条件为改租户id为xxx租户。当配置生效后会立即维护一个redis令牌桶中限流key为product_key_reg_success_get_api_product_list,网关服务会随着时间的推移持续不断的向令牌桶添加令牌,保持每分钟放置100个令牌,当请求进来以后会首先解析请求参数或者请求头是否含有租户标识且租户id为xxx(预设属性信息),然后获取令牌(候选令牌),网关服务首先从redis数据库中获取第一令牌桶中的剩余令牌数量和上次刷新时间,计算出过去的时间和生成的新令牌数量,并更新桶中的令牌数量和上次刷新时间。最后判断是否获取到令牌,如果拿到令牌说明可以继续访问,否则就会进行预先配置的熔断、降级或者限流处理,直接失败或者返回预先设置的兜底返回数据。

结合图5所示,本公开实施例提供了一种服务请求控制装置,包括当前接口501、请求拦截模块502、第一令牌桶503、请求统计模块504、令牌生成模块505、策略启用确定模块506,其中:

当前接口501,用于接收服务请求,服务请求包括请求服务标识、请求方式和请求属性信息;

请求拦截模块502,用于将请求属性信息与预设属性信息进行匹配;

第一令牌桶503,用于当匹配通过,基于请求方式、请求属性信息、请求服务标识和当前接口的当前接口标识确定第一令牌桶中候选令牌的剩余令牌数量和上次刷新时间;

请求统计模块504,用于当匹配通过,根据请求服务标识、请求方式和请求属性信息中的一个或多个确定目标统计维度,触发对服务请求的请求执行数据按照目标统计维度进行统计,得到目标统计维度的当前统计数据;

令牌生成模块505,用于若剩余令牌数量小于第一临界阈值,根据请求方式、请求属性信息、请求服务标识和当前接口标识确定候选令牌的令牌生成速率,并基于当前时间、上次刷新时间和令牌生成速率确定当前令牌生成数量,令牌生成速率表征在请求方式下请求服务标识、当前接口及请求属性信息对应的令牌生成速率;

策略启用确定模块506,用于如果当前令牌生成数量小于第二临界阈值,和/或如果当前统计数据满足预设统计数据区间,触发当前接口开启预设接口控制策略,基于预设接口控制策略对服务请求进行控制。

在一实施例中,第一令牌桶还被配置为:若满足预设令牌发放条件,为所述服务请求分配一候选令牌,所述预设令牌发放条件包括所述剩余令牌数量大于第一临界阈值,或若所述当前令牌生成数量大于第二临界阈值,已生成新增的候选令牌并增加入所述第一令牌桶,并以当前时间刷新所述上次刷新时间;若所述当前接口尚未启用预设接口控制策略,控制所述服务请求继续进行目标服务访问;若所述当前接口启用预设接口控制策略,基于所述预设接口控制策略对所述服务请求进行控制。

在一实施例中,第一令牌桶还被配置为:若所述当前令牌生成数量大于第二临界阈值,生成新增的候选令牌并增加入所述第一令牌桶,监测所述第一令牌桶中每一候选令牌的存在时长,如果存在待销毁令牌,将所述待销毁令牌从所述第一令牌桶中移除,所述待销毁令牌为所述存在时长超过预设时长阈值的候选令牌;或,若所述剩余令牌数量大于第一临界阈值监测所述第一令牌桶中每一候选令牌的存在时长,如果存在待销毁令牌,将所述待销毁令牌从所述第一令牌桶中移除,所述待销毁令牌为所述存在时长超过预设时长阈值的候选令牌。

在一实施例中,该装置还包括修改模块,用于将所述请求属性信息与预设属性信息进行匹配之前,获取规则改变事件的规则修改数据,所述规则修改数据包括预设属性信息修改数据、目标统计维度修改数据、预设统计数据区间修改数据、预设接口控制策略修改数据、所述目标统计维度与所述预设属性信息的对应关系修改数据中至少之一,所述规则修改数据基于外部输入数据或历史请求日志得到;基于所述规则修改数据对所述预设属性信息、所述目标统计维度、所述预设统计数据区间、预设接口控制策略、目标统计维度与所述预设属性信息的对应关系中至少之一进行修改及更新。

在一实施例中,修改模块还被配置为,基于所述预设接口控制策略对所述服务请求进行控制之后,若所述服务请求被允许访问目标服务,将所述服务请求增加至访问队列中;如果检测到规则改变事件,对所述访问队列中的所述服务请求重新进行将所述请求属性信息与预设属性信息进行匹配以及候选令牌的剩余令牌数量确定的步骤,其中,规则改变事件包括以下至少之一,预设属性信息发生改变、候选令牌的存在状态发生改变、令牌生成速率发生了改变。

在一实施例中,第一令牌桶还被配置为:将所述请求方式、所述请求属性信息、所述请求服务标识和当前接口标识与所述第一令牌桶中的多种初始令牌的预设请求方式、请求统计规则标识、预设服务标识和预设接口标识进行匹配,将匹配成功的初始令牌作为候选令牌,所述初始令牌预先配置的令牌参数包括令牌规则标识、令牌阈值和令牌生成速率,所述令牌规则标识基于请求统计规则标识、预设请求方式、预设服务标识和预设接口标识生成,所述请求统计规则标识对应有一个或多个预设属性信息;以所述第一令牌桶中所述候选令牌的令牌数量作为所述剩余令牌数量,将所述第一令牌桶中所述候选令牌的最近的历史刷新时间作为所述上次刷新时间。

在一实施例中,该装置还包括报警模块,用于获取多个历史请求日志,所述历史请求日志包括通过多个接收接口所接收到的历史请求的历史请求信息,所述历史请求信息包括接收接口标识、请求发起对象信息、历史请求服务信息、历史请求方式、历史属性信息和历史请求时间;对多个历史请求日志按照接收接口标识、请求发起对象信息和历史请求时间进行数据统计,得到每一接收接口中各请求发起对象在多个历史统计时间维度中的初始维度数据,所述初始维度数据包括历史请求次数、历史属性信息次数、请求方式次数、请求服务信息次数中至少之一;若所述初始维度数据大于对应的预设维度最大值,或,若所述初始维度数据小于对应的预设维度最小值,将所述初始维度数据中确定为异常维度数据;基于所述异常维度数据生成报警提示信息,以进行报警。

在一实施例中,该装置还包括告警模块,用于触发所述当前接口开启预设接口控制策略之后,基于所开启的预设接口控制策略生成告警信息;将所述告警信息发送至预设接收端,以进行告警提示,所述预设接收端包括邮箱地址、网络钩子、预设内部告警系统中至少之一。

在一实施例中,策略启用确定模块还被配置为:若所述预设接口控制策略为限流,获取第二令牌桶中放行令牌的放行令牌数量,若所述放行令牌数量大于0,为所述服务请求方法发放一放行令牌,并控制所述服务请求继续进行服务访问,放行令牌的生成数量按照预设放行令牌生成速度确定;若所述预设接口控制策略为熔断,响应调用失败提示;若所述预设接口控制策略为降级,基于所述请求服务标识、请求方式和所述当前接口标识中至少之一匹配得到预设兜底数据,并反馈所述预设兜底数据。

采用本公开实施例提供的服务请求控制装置,通过当前接口接收服务请求,将服务请求中的请求属性信息与预设属性信息进行匹配,若匹配通过,基于服务请求的请求方式、请求服务标识和当前接口标识确定第一令牌桶中候选令牌的剩余令牌数量和上次刷新时间,若该剩余令牌数量小于第一临界阈值,根据请求方式、请求服务标识、当前接口标识确定候选令牌的令牌生成速率,并基于当前时间、上次刷新时间和令牌生成速率确定当前令牌生成数量,如果该当前令牌生成数量小于第二临界阈值,则触发当前接口开启预设接口控制策略,以基于该预设接口控制策略对服务请求进行控制,通过先将服务请求中的请求属性数据进行匹配以筛选出来需要进行服务请求控制的请求,能够精确的找到哪些服务请求是需要进行限流控制的并加以分类统计的,进一步通过候选令牌的发放成功与否,进一步控制哪些服务请求能够继续进行访问,当令牌耗尽时,则说明服务请求量已经超出了预设的承载量,则控制该当前接口进入预设接口控制策略,通过开启的预设接口控制策略对服务请求进行进一步的控制这样能够实现按照预设属性信息对服务请求进行预先筛选,实现不同预设属性信息的服务请求对目标服务的正常合理调用,不是单纯以所接收到的全部的服务请求数量为限进行限流,控制更为精细化,提升客户体验度。

关于服务请求控制装置的具体限定可以参见上文中对于服务请求控制方法的限定,在此不再赘述。上述服务请求控制装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

本公开实施例还提供了电子设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如上述任一项实施例方法的步骤。

图6示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。需要说明的是,图6示出的电子设备的计算机系统1000仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图6所示,计算机系统1000包括中央处理单元(Central Processing Unit,CPU)1001,其可以根据存储在只读存储器(Read-Only Memory,ROM)1002中的程序或者从储存部分1008加载到随机访问存储器(Random Access Memory,RAM)1003中的程序而执行各种适当的动作和处理,例如执行上述实施例中的方法。在RAM 1003中,还存储有系统操作所需的各种程序和数据。CPU 1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(Input/Output,I/O)接口1005也连接至总线1004。

以下部件连接至I/O接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1007;包括硬盘等的储存部分1008;以及包括诸如LAN(Local Area Network,局域网)卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入储存部分1008。

特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的计算机程序。在这样的实施例中该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被中央处理单元(CPU)1001执行时,执行本申请的系统中限定的各种功能。

需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmabl e Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Rea d-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。

本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本实施例中的任一项方法。

本公开实施例中的计算机可读存储介质,本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过计算机程序相关的硬件来完成。前述的计算机程序可以存储于一计算机可读存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

本实施例公开的电子设备,包括处理器、存储器、收发器和通信接口,存储器和通信接口与处理器和收发器连接并完成相互间的通信,存储器用于存储计算机程序,通信接口用于进行通信,处理器和收发器用于运行计算机程序,使电子设备执行如上方法的各个步骤。

在本实施例中,存储器可能包含随机存取存储器(Random Access Memory,简称RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、图形处理器(Graphics Processing Unit,简称GPU),网络处理器(NetworkProcess or,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Fi eld-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

以上描述和附图充分地示出了本公开的实施例,以使本领域的技术人员能够实践它们。其他实施例可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选地,并且操作的顺序可以变化。一些实施例的部分和子样本可以被包括在或替换其他实施例的部分和子样本。而且,本申请中使用的用词仅用于描述实施例并且不用于限制权利要求。如在实施例以及权利要求的描述中使用的,除非上下文清楚地表明,否则单数形式的“一个”(a)、“一个”(an)和“”(the)旨在同样包括复数形式。类似地,如在本申请中所使用的术语“和/或”是指包含一个或一个以上相关联的列出的任何以及所有可能的组合。另外,当用于本申请中时,术语“包括”(comprise)及其变型“包括”(comprises)和/或包括(comprising)等指陈述的子样本、整体、步骤、操作、元素,和/或组件的存在,但不排除一个或一个以上其它子样本、整体、步骤、操作、元素、组件和/或这些的分组的存在或添加。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括要素的过程、方法或者设备中还存在另外的相同要素。本文中,每个实施例重点说明的可以是与其他实施例的不同之处,各个实施例之间相同相似部分可以互相参见。对于实施例公开的方法、产品等而言,如果其与实施例公开的方法部分相对应,那么相关之处可以参见方法部分的描述。

本领域技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件,或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,可以取决于技术方案的特定应用和设计约束条件。技术人员可以对每个特定的应用来使用不同方法以实现所描述的功能,但是这种实现不应认为超出本公开实施例的范围。技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本文所披露的实施例中,所揭露的方法、产品(包括但不限于装置、设备等),可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些子样本可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例。另外,在本公开实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

附图中的流程图和框图显示了根据本公开实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。在附图中的流程图和框图所对应的描述中,不同的方框所对应的操作或步骤也可以以不同于描述中所披露的顺序发生,有时不同的操作或步骤之间不存在特定的顺序。例如,两个连续的操作或步骤实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。框图和/或流程图中的每个方框,以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

技术分类

06120116556366