一种增强型业务流量控制系统及控制方法与流程

文档序号:35788184发布日期:2023-10-21 19:34阅读:65来源:国知局
一种增强型业务流量控制系统及控制方法与流程

本发明涉及金融机构业务访问请求流量控制,特别涉及一种增强型业务流量控制系统及控制方法。


背景技术:

1、常见业务流量控制算法包括令牌桶算法、漏桶算法、固定窗口算法和滑动窗口算法。存在以下的问题:

2、1)单纯的滑动窗口算法无法满足交易系统对一些高频无效请求的快速拒绝;

3、2)cn114189478a使用redis的zset的三元数据结构(key, value,score),其value,score必须为请求访问的时间戳,无法一次性实现不同机构不同请求的定制化限流,或必须将定制化的内容放在非redis的设备上,造成多次交互;

4、3)对于每次流量的判断需要利用zset的zrange方法进行链条的全窗口的回溯,比较费时;

5、4)若使用令牌桶和漏桶算法,对于高频交易,需要对不同机构不同请求预先定时生成一定数量的令牌,对于众多的机构和系统的访问控制要达到细粒度的控制,令牌的存储和生成非常耗费空间和时间,在分布式环境中,令牌桶和漏桶算法不太适用。

6、以上是本技术需要着重改善的地方。


技术实现思路

1、本发明所要解决的技术问题是要提供一种增强型业务流量控制系统及控制方法,降低了存储空间和计算的复杂度。

2、为了解决以上的技术问题,本发明提供了一种增强型业务流量控制系统,包括:

3、统一网关访问控制模块,所有外部系统的请求,通过统一网关访问控制模块进行流控处理和分发到内部业务系统;

4、所述统一网关访问控制模块包括网关流控处理模块、流控参数配置模块、流控配置加载模块、流控配置监控模块和流量累计数缓存更新模块;

5、所述网关流控处理模块根据外部请求的机构类型和请求类型,获得对应的流量参数信息;根据外部请求的流控参数的时间控制间隔是否为秒级,且最大请求visitcount是否大于系统配置值,均符合为高频访问,其余为低频访问;高频访问适用固定窗口累计算法,低频访问适用滑动窗口累计算法;

6、所述流控参数配置模块,用于配置外部机构请求类型的流控参数;

7、所述流控配置加载模块,定时从流控参数配置模块中全部加载流控配置至网关流控处理模块,并将各流控参数时间间隔period取值统一换算为以毫秒为单位的数值;

8、所述流控配置监控模块,判断当前累计值是否超过流控配置值,是,拒绝访问;否,允许访问;

9、所述流量累计数缓存更新模块,分别实现固定窗口累计算法和滑动窗口累计算法,由网关流控处理模块调用;

10、所述固定窗口累计算法和滑动窗口累计算法,均使用redis哈希数据结构hset构造访问间隔并进行计数。hset由键值key、域值field和取值value组成。

11、所述固定窗口累计算法的每个间隔仅有一个固定窗口,field值固定;所述滑动窗口累计算法的每个间隔的窗口数量根据参数值而不同。

12、所述滑动窗口累计算法,利用间隔计数和窗口计数的加减运算进行窗口的双向回溯,每个窗口保持当前请求在本次时间间隔的累计数,在滑动窗口的每个间隔存储中设置固定的last域值,保留最后窗口计数,减少回溯次数,滑动窗口的个数与间隔大小、最大访问的次数无关,只与实际访问的次数相关。

13、所述固定窗口累计算法和滑动窗口累计算法的累计计算都通过redis缓存集群模块上可编程脚本lua完成,避免了网关和redis缓存集群模块之间的多次通信交互,并保证计数操作的原子性。

14、本发明提供了一种增强型业务流量控制方法,包括如下的步骤:

15、步骤s1:按照请求机构类型、请求类型、最大请求数、时间间隔、窗口数量配置流控策略,同一请求机构对于一种请求类型只配置一种策略,请求类型使用通配符表示,代表一类或全部请求;同一请求机构对于不同请求类型配置不同或相同策略;

16、当请求类型使用通配符,如*时,表示符合通配符规则的请求采用相同策略;

17、步骤s2:统一网关访问控制模块统一接收来自外部机构的请求;

18、步骤s3:根据机构类型、请求类型获得实现配置的策略,根据最大请求数和时间间隔进行判断,是调用固定窗口累计算法,还是调用滑动窗口累计算法进行流量控制;当前请求流控配置为秒级且最大请求次数大于系统配置值时,调用固定窗口累计算法lua脚本;其余调用滑动窗口累计算法lua脚本;

19、系统配置值由压力测试获得,在10-100之间;

20、步骤s4:根据请求标识和业务身份更新流控累计值缓存信息;判断当前累计值是否超过流控配置值,未超过流控配置值则允许访问,超过流控配置值,则拒绝访问。

21、其中:步骤s3中的固定窗口累计算法和滑动窗口累计算法都使用redis缓存集群模块作为窗口存储载体,使用redis作为计数和存储基础。

22、所述调用固定窗口累计算法,每个窗口大小为1秒,直接使用redis缓存时间戳的secondtime值构造hset的key值;如果存在,则将value自增1;如不存在,则创建该key值的hset存储对象,设置其失效时间为1秒,value值设置为1;将value返回给流控配置监控模块,流控配置监控模块判断当前累计值是否超过流控配置值,未超过流控配置值则允许访问,若超过流控配置值,则拒绝访问。

23、所述调用滑动窗口累计算法,包括如下具体步骤:

24、s300:将redis时间戳的secondtime乘以1000,microtime除以1000运算后,变成了新的毫秒时间戳取值millitime;

25、s301:将毫秒时间戳取值millitime除以流控配置参数period,再除以1000向下取整,得到当前请求间隔计数span;

26、s302:将流控配置参数period除以1000,再除以visitcount向下取整,再除毫秒时间戳取值millitime后与visitcount取余,得到当前请求的窗口计数window;一个请求间隔计数span最多有visitcount个window;

27、s303:上述步骤使得同一机构同一请求类型的前后时间间隔使用span+1获得,前后时间窗口使用window+1获得,利用hset的哈希算法对前后时间间隔内的窗口进行简单的遍历和回溯;

28、s304:根据span和window值经哈希算法查找存储的value值,即上次请求累计数cold;

29、s305:如果找不到该hset存储单元,则通过span值和last查找该间隔最后窗口windowlast,并获得最后窗口的请求累计数cold;

30、s306:如果找不到该span的windowlast,则说明该span的hset存储单元不存在,则新建一个存储,key值为“机构类型+请求类型+span”,域值为window;设置这个存储单元的失效时间为3个period大小;根据span-1值、last查找上一个span的最后窗口计数windowlastspan;如果windowlastspan大于window,获得上一个span的最后窗口请求累计数cold;如果没有找到span-1的存储或者最后窗口计数大于window,则设置cold为0;

31、s307:设置当前span的当前window的key,field,value值分别为“机构类型+请求类型+span,window,cold”;

32、s308:再设置当前span的最后window的key,field,value值分别为“机构类型+请求类型+span,last,window”;

33、s309:如果cold为0,且window>0,说明是新的span存储,则将该span的前一个window的key,field,value值分别为“机构类型+请求类型+span,window-1,cold”;

34、s310:将cold自增1,得出当前的请求累计数chits;

35、s311:如果chits>最大访问请求数visitcount,且存在上一个span的hset存储,则查找span-1的field值为window的value值cprespan,即上一个间隔的相同窗口的累计计数;如果这个窗口不存在,则找到span-1的last的窗口windowpespanlast;如果windowlastpespan>window,则依次查找之间的最小的窗口windowpespan,获得其value值作为cprespan;否则,将windowlastpespan其中value值作为cprespan;设置span-1的当前window的key,field,value值分别为“机构类型+请求类型+span-1,window,cprespan”;

36、s312:如果上一个span不存在hset存储,则cprespan为0;

37、s313:将chits减去cprespan,,得到新的cnewhits;

38、s314:如果cnewhits<=最大访问请求数visitcount,更新设置当前span的当前window的的key,field,value值分别为“机构类型+请求类型+span,window,cnewhits”;

39、s315:如果cnewhits仍然大于最大访问请求数,则返回流控配置监控模块做拒绝访问。

40、本发明的优越功效在于:

41、1)本发明的固定窗口累计算法实现类似漏桶算法的功能,滑动窗口累计算法实现类似令牌桶算法的功能,且仅需在访问间隔发生请求时进行hash存储的构造和累计数自增,降低了存储空间和计算的复杂度;

42、2)本发明主要应用于金融机构技术系统的业务访问请求流量控制,不是基于ip或网络设备的网络流量控制,流控参数可定制化、可实时变化,满足对客户的服务响应的承诺要求;

43、3)本发明实现单一入口满足多种业务场景的流量控制需求;

44、4)本发明设计新的数据结构,满足业务规则的需要;新的数据结构和计算方法,非使用zset方法,降低计算和存储的复杂度。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1