一种基于队列的请求频次控制系统及控制方法技术方案

技术编号:29614323 阅读:19 留言:0更新日期:2021-08-10 18:28
一种基于队列的请求频次控制系统及控制方法,请求频次控制系统包括客户端和系统服务端,通过将客户端与系统服务端连接,实现请求发送和任务结果接收;系统服务端包括Broker模块、Worker模块、Limiter模块、Backend模块、Controller模块以及Monitor模块;Broker模块无限制的接收业务通过客户端发送的请求,接收后全部存储于有序队列中,以请求的优先级作为排序因子,等待Worker模块按顺序执行;本发明专利技术的请求频次控制方法,可实现对频次控制的完全封装,分布式设计天然支持横向扩展,满足巨大吞吐量,简单易用,业务只需引入指定代码库,设置少量配置即可实现对接,可实现自定义扩展。

【技术实现步骤摘要】
一种基于队列的请求频次控制系统及控制方法
本专利技术属于网络信息处理领域,具体涉及一种基于队列的请求频次控制系统及控制方法。
技术介绍
在当下信息时代,各行各业都在进行信息化展开,众多行业的参与者形成了庞大且错综复杂的信息生态。个体要进入这个生态,自身的信息必不可少,更重要的是要和其他目标对象连接。这里就涉及到程序化接口API(ApplicationProgrammingInterface)对接。具体的,由服务提供方暴露一个接口,服务的使用方通过调用该接口传入合适的参数即可获得想要的结果。比如气象站作为服务提供方对外暴露了一个天气预报接口,使用方只需提供地理坐标和时间范围就能获得目标地区指定时间的天气情况。这样一来,该服务使用单位就与气象站建立了有效连接。然而,随着越来越多的使用方和气象站建立连接,为了获得更及时的天气变化,有些使用方发起了更频繁的查询,又或者有黑客发起网络攻击,不停的发起天气查询,最终导致服务提供方的服务压力过大,使服务不可用。服务提供方会做一些措施来避免这一可预见情况的发生,基本的措施有:1.权限认证。给每个服务使用方设定唯一的身份和对应的认证签名。确保所有服务的使用方都在提供方有备案记录,不明来源的请求不提供服务,只返回对应错误码。2.频次控制。已备案的服务使用方也不能无限制的发起请求,必须满足每秒不能超过多少次QPS(QueriesPerSecond),更复杂的会按业务类型分等级限制。对于服务提供方,收到已备案的服务使用者发来的超过配额的请求时,不执行业务逻辑,直接范围对应错误码。若错误的情况过多,就要对该使用方执行降级或者封停操作等。这样就可以实现控制频次和降低服务压力的目的。对于服务使用方,正常的业务请求却获得了一个错误码显然是不对的,若只是查询操作可以重试业务尚可接受,而如果是非幂等操作,则不能接受了。
技术实现思路
本专利技术的目的在于针对上述现有技术中复杂度持续增加的情况下服务使用方请求频次超限的问题,提供一种基于队列的请求频次控制系统及控制方法,保证服务使用方稳定工作。为了实现上述目的,本专利技术有如下的技术方案:一种基于队列的请求频次控制系统,包括客户端和系统服务端,通过将客户端与系统服务端连接,实现请求发送和任务结果接收;系统服务端包括Broker模块、Worker模块、Limiter模块、Backend模块、Controller模块以及Monitor模块;所述Broker模块用于无限制的接收业务通过客户端发送的请求Task,接收后全部用Topic分组存储于有序队列中,以请求的优先级作为排序因子,等待Worker模块按顺序执行;所述Worker模块从有序队列中按优先级拿取请求对象并执行,执行结果传给Backend模块而后回调给业务,执行频率受Limiter模块控制;所述Limiter模块用于设定最高的流出速率限制,实现各类频控策略;所述Backend模块用于将Worker模块执行结果存储并回调给客户端,触达业务系统;所述Controller模块用于接收控制指令进行系统维护和队列调整;所述Monitor模块用于监控系统所需各类状态指标,包括业务状态和自身运行状态。作为本专利技术请求频次控制系统的一种优选方案,所述Worker模块根据目标平台所指定的频控器结合对应配置参数来控制消费速率。作为本专利技术请求频次控制系统的一种优选方案,所述Limiter模块实现的频控策略包括以下几类:a.匀速控制策略,某段时间内不超过设定次数;b.根据返回值控制频率,根据请求返回结果中配额已使用情况进行频率控制;c.分等级控制,按照业务的层级结构分别设置配额,客户端发送的请求同时消耗多个级别的配额,其中任何一个超限则视为超限并返回对应错误码。作为本专利技术请求频次控制系统的一种优选方案,所述的Backend模块回调HttpURL,任务完成后通过该地址回调业务;或者使用MQ或者Kafka使任务结果能够进行一定程度积压,降低Worker模块消费速度的压力。作为本专利技术请求频次控制系统的一种优选方案,所述Controller模块能够进行的队列调整包括清空、暂停以及恢复指定队列。作为本专利技术请求频次控制系统的一种优选方案,所述的业务状态包括:服务接入的业务列表及其健康状态、对接的平台列表及其健康状态、Topic列表以及各个队列积压情况、任务消费时长以及错误率;自身运行状态包括:内存、CPU使用情况、运维操作记录以及压力曲线。作为本专利技术请求频次控制系统的一种优选方案,通过管理端Manager模块调用Controller和Monitor模块实现日常运维操作以及可视化监控查看分析。本专利技术还提供一种基于队列的请求频次控制方法,包括以下步骤:ServerBroker无限制接收发来的业务任务Task;Task按优先级顺序入库排队;启动Worker守护线程尝试消费队列中的Task,消费Task前,先获取对应的请求令牌,如果能够拿到,任务正常执行,反之判定已经超限,任务不能执行;若任务正常执行,则从有序队列中拿出当前优先级最高的任务;执行当前任务,给服务提供方平台发送请求;接收服务提供方平台返回的结果并存储,将结果回调给业务系统。作为本专利技术请求频次控制方法的一种优选方案,通过相应的日志将操作过程中的各个步骤记录进入分析库,以供查询、统计分析。作为本专利技术请求频次控制方法的一种优选方案,操作过程中监控任务处理速度、响应时长、错误率、任务积压情况及CPU、Memory使用情况,分析系统压力。相较于现有技术,本专利技术至少具有如下的有益效果:对业务完全屏蔽频次控制问题,业务可以实现无限制的发起请求,本专利技术会尽快执行业务请求并将结果回调给业务。本专利技术的频次控制能力稳定可靠,保证服务使用方的业务长期稳定工作,支持横向扩展,承载高吞吐量。本专利技术支持多点接入,前端可对接多个业务,后端可同时支持多个服务提供平台,并满足各类平台定制化的频控策略。本专利技术的操作灵活方便,新接入业务只需少量配置,配置用于说明目标服务提供平台和其对应的频控策略,配置策略对应参数。此外,本专利技术还能够支持一些高级功能,如支持任务优先级,任务按优先级执行;支持任务过期时间,对于有较高时效性的任务,过期后不再执行;以及可作为任务分发系统使用,有效解决服务使用方请求频次控制的问题。附图说明为了更加清楚地说明本专利技术实施例的技术方案,下面将对实施例中所需要使用的附图作以简单地介绍,应当理解,以下附图仅示出了本专利技术部分实施例,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1现有公有存储排队请求频次控制系统结构示意图;图2本专利技术实施例基于队列的请求频次控制系统结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例本文档来自技高网
...

【技术保护点】
1.一种基于队列的请求频次控制系统,其特征在于,包括客户端和系统服务端,通过将客户端与系统服务端连接,实现请求发送和任务结果接收;系统服务端包括Broker模块、Worker模块、Limiter模块、Backend模块、Controller模块以及Monitor模块;/n所述Broker模块用于无限制的接收业务通过客户端发送的请求Task,接收后全部用Topic分组存储于有序队列中,以请求的优先级作为排序因子,等待Worker模块按顺序执行;/n所述Worker模块从有序队列中按优先级拿取请求对象并执行,执行结果传给Backend模块而后回调给业务,执行频率受Limiter模块控制;/n所述Limiter模块用于设定最高的流出速率限制,实现各类频控策略;/n所述Backend模块用于将Worker模块执行结果存储并回调给客户端,触达业务系统;/n所述Controller模块用于接收控制指令进行系统维护和队列调整;/n所述Monitor模块用于监控系统所需各类状态指标,包括业务状态和自身运行状态。/n

【技术特征摘要】
1.一种基于队列的请求频次控制系统,其特征在于,包括客户端和系统服务端,通过将客户端与系统服务端连接,实现请求发送和任务结果接收;系统服务端包括Broker模块、Worker模块、Limiter模块、Backend模块、Controller模块以及Monitor模块;
所述Broker模块用于无限制的接收业务通过客户端发送的请求Task,接收后全部用Topic分组存储于有序队列中,以请求的优先级作为排序因子,等待Worker模块按顺序执行;
所述Worker模块从有序队列中按优先级拿取请求对象并执行,执行结果传给Backend模块而后回调给业务,执行频率受Limiter模块控制;
所述Limiter模块用于设定最高的流出速率限制,实现各类频控策略;
所述Backend模块用于将Worker模块执行结果存储并回调给客户端,触达业务系统;
所述Controller模块用于接收控制指令进行系统维护和队列调整;
所述Monitor模块用于监控系统所需各类状态指标,包括业务状态和自身运行状态。


2.根据权利要求1所述基于队列的请求频次控制系统,其特征在于:所述Worker模块根据目标平台所指定的频控器结合对应配置参数来控制消费速率。


3.根据权利要求1所述基于队列的请求频次控制系统,其特征在于,所述Limiter模块实现的频控策略包括以下几类:
a.匀速控制策略,某段时间内不超过设定次数;
b.根据返回值控制频率,根据请求返回结果中配额已使用情况进行频率控制;
c.分等级控制,按照业务的层级结构分别设置配额,客户端发送的请求同时消耗多个级别的配额,其中任何一个超限则视为超限并返回对应错误码。


4.根据权利要求1所述基于队列的请求频次控制系统,其特征在于,所述的Backend模块回调HttpURL,任务完成后通过该地址回调业务;或者使用MQ...

【专利技术属性】
技术研发人员:程进凯
申请(专利权)人:西安点告网络科技有限公司
类型:发明
国别省市:陕西;61

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

1