【技术实现步骤摘要】
一种增强型业务流量控制系统及控制方法
[0001]本专利技术涉及金融机构业务访问请求流量控制
,特别涉及一种增强型业务流量控制系统及控制方法。
技术介绍
[0002]常见业务流量控制算法包括令牌桶算法、漏桶算法、固定窗口算法和滑动窗口算法。存在以下的问题:1)单纯的滑动窗口算法无法满足交易系统对一些高频无效请求的快速拒绝;2)CN114189478A使用Redis的Zset的三元数据结构(key, value,score),其value,score必须为请求访问的时间戳,无法一次性实现不同机构不同请求的定制化限流,或必须将定制化的内容放在非Redis的设备上,造成多次交互;3)对于每次流量的判断需要利用ZSet的ZRange方法进行链条的全窗口的回溯,比较费时;4)若使用令牌桶和漏桶算法,对于高频交易,需要对不同机构不同请求预先定时生成一定数量的令牌,对于众多的机构和系统的访问控制要达到细粒度的控制,令牌的存储和生成非常耗费空间和时间,在分布式环境中,令牌桶和漏桶算法不太适用。
[0003]以上是本申请需要着重
【技术保护点】
【技术特征摘要】
1.一种增强型业务流量控制系统,包括:统一网关访问控制模块,所有外部系统的请求,通过统一网关访问控制模块进行流控处理和分发到内部业务系统;所述统一网关访问控制模块包括网关流控处理模块、流控参数配置模块、流控配置加载模块、流控配置监控模块和流量累计数缓存更新模块;所述网关流控处理模块根据外部请求的机构类型和请求类型,获得对应的流量参数信息;根据外部请求的流控参数的时间控制间隔是否为秒级,且最大请求是否大于系统配置值,均符合为高频访问,其余为低频访问;高频访问适用固定窗口累计算法,低频访问适用滑动窗口累计算法;所述流控参数配置模块,用于配置外部机构请求类型的流控参数;所述流控配置加载模块,定时从流控参数配置模块中全部加载流控配置至网关流控处理模块,并将各流控参数时间间隔取值统一换算为以毫秒为单位的数值;所述流量累计数缓存更新模块,分别实现固定窗口累计算法和滑动窗口累计算法,由网关流控处理模块调用;所述流控配置监控模块,判断当前累计值是否超过流控配置值,是,拒绝访问;否,允许访问。2.根据权利要求1所述的增强型业务流量控制系统,其特征在于:所述固定窗口累计算法和滑动窗口累计算法的累计计算都通过Redis缓存集群模块上可编程脚本Lua完成。3.根据权利要求1所述的增强型业务流量控制系统,其特征在于:所述固定窗口累计算法和滑动窗口累计算法,均使用Redis哈希数据结构hset构造访问间隔并进行计数,所述hset由键值key、域值field和取值Value组成。4.根据权利要求3所述的增强型业务流量控制系统,其特征在于:所述固定窗口累计算法的每个间隔仅有一个固定窗口,field值固定。5.根据权利要求3所述的增强型业务流量控制系统,其特征在于:所述滑动窗口累计算法,利用间隔计数和窗口计数的加减运算进行窗口的双向回溯,每个窗口保持当前请求在本次时间间隔的累计数,在滑动窗口的每个间隔存储中设置固定的Last域值,保留最后窗口计数。6.根据权利要求5所述的增强型业务流量控制系统,其特征在于:所述滑动窗口累计算法的每个间隔的窗口数量根据参数值而不同。7.一种增强型业务流量控制方法,包括如下的步骤:步骤S1:按照请求机构类型、请求类型、最大请求数、时间间隔、窗口数量配置流控策略,同一请求机构对于一种请求类型只配置一种策略,请求类型使用通配符表示,代表一类或全部请求;同一请求机构对于不同请求类型配置不同或相同策略;步骤S2:统一网关访问控制模块统一接收来自外部机构的请求;步骤S3:根据机构类型、请求类型获得实现配置的策略,根据最大请求数和时间间隔进行判断,是调用固定窗口累计算法,还是调用滑动窗口累计算法进行流量控制;当前请求流控配置为秒级且最大请求次数大于系统配置值时,调用固定窗口累计算法Lua脚本;其余调用滑动窗口累计算法Lua脚本;步骤S4:根据请求标识和业务身份更新流控累计值缓存信息;判断当前累计值是否超过流控配置值,未超过流控配置值则允许访问,超过流控配置值,则拒绝访问。
8.根据权利要求7所述的一种增强型业务流量控制方法,其特征在于:所述固定窗口累计算法和滑动窗口累计算法都使用Redis缓存集群模块作为窗口存储载体,使用Redis作为计数和存储基础。9.根据权利要求7所述的一种增强型业务流量控制方法,其特征在于:所述调用固定窗口累计算法,每个窗口大小为1秒,直接使用Redis缓存时间戳的SecondTime值构造hset的key值;存在,则将value自增1;不存在,则创建该key值的hset存储对象,设置其失效时间为1秒,value值设置为1,将value返回给流控配置监控模块。10.根据权利要求7所述的一种增强型业务流量控制方法,其特征在于:所述调用滑动窗口累计算法,包括如下具体步骤:S00:将Redis时间戳的SecondTime乘以1000,MicroTime除以1000运算后,变成了新的毫秒时间戳取值MilliTime;S01:将毫秒时间戳取值MilliTime除以流控配置参数Period,再除以1000向下取整,得到当前请求间隔计数Span;S02:将流控配置参数Period除以1000,再除以VisitCount向下取整,再除毫秒时间戳取值MilliTime后与VisitCount取余,得到当前请求的窗口计数Window;一个请求间隔计数Span最多有Vis...
【专利技术属性】
技术研发人员:王冬明,谢志艳,
申请(专利权)人:上海清算信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。