一种高并发系统的前端限流方法技术方案

技术编号:38769987 阅读:14 留言:0更新日期:2023-09-10 10:43
本发明专利技术涉及网络技术领域,特别涉及一种高并发系统的前端限流方法,包括如下步骤:S1、根据初始化全局限流配置信息,构建限流配置哈希表;S2、织入限流算法,即拦截业务请求,将限流算法拼接到接口请求逻辑中,保证限流算法与业务请求相融合;S3、运行限流算法:在本地应用程序运行过程中,结合全局限流配置在适当的时机下执行与业务请求相匹配的限流算法。本方法中,业务请求执行预先配置的全局限流配置,最终达到在满足业务应用服务高可用的前提下,尽量减少服务端调用带来的时间延迟,提升了服务的响应速度,降低了后端系统的压力,提高了用户的访问体验。户的访问体验。户的访问体验。

【技术实现步骤摘要】
一种高并发系统的前端限流方法


[0001]本专利技术涉及网络
,特别涉及一种高并发系统的前端限流方法。

技术介绍

[0002]为了保证高并发系统的稳定正常运行,限流是最常用的技术手段,但是限流并不能保证所有场景的稳定性,例如系统最高支持100QPS,如果系统突然接收到1000QPS请求,系统会直接崩溃,导致一个请求都处理不了,但是如果采用有效的限流手段,那么无论接收到QPS值为多少,系统都只处理100QPS的请求,其他请求直接拒绝,虽然有900QPS的请求被系统拒绝了,但是没有引发系统崩溃,系统仍然可以不断地处理后续的请求。限流技术手段主要有网关级限流(Nginx限流)或应用级限流(限流函数):Nginx限流:按照一定的规则如账号、IP、系统调用逻辑等在Nginx层面做限流。限流函数:在应用系统中采用限流算法拒绝多余的资源访问请求,例如当算法被成功地执行过一次,本次成功执行的时间会被记录下来,那么当用户频繁发送请求的时候,这些请求记录的时间距离上次成功执行的时间太短,小于阈值,则这些请求不被执行。
[0003]基于Nginx限流:用户的请求首先会通过前端云端服务器分发到后端的应用集群上,Nginx可以用来限制瞬时并发连接数,但修改限流配置需要重启Nginx服务;限流函数以硬编码的方式将数据直接嵌入到程序或其他可执行对象的源代码中,不能在运行期间对外界输入进行回应,灵活性差。

技术实现思路

[0004]本专利技术的目的在于克服现有技术的缺陷,提供一种高并发系统的前端限流方法。
[0005]本专利技术的技术方案是:一种高并发系统的前端限流方法,包括如下步骤:S1、根据初始化全局限流配置信息,构建限流配置哈希表;S2、织入限流算法,即拦截业务请求,将限流算法拼接到接口请求逻辑中,保证限流算法与业务请求相融合;S3、运行限流算法:在本地应用程序运行过程中,结合全局限流配置在适当的时机下执行与业务请求相匹配的限流算法。
[0006]进一步地,步骤S1具体包括以下步骤:S11、在云端服务器上设定全局限流配置信息,包括需要限流的所有接口集合API及每一个接口的具体限流配置集合C,API={API1,API2 ,API3,...,APIm ...,APIM},共有M个接口,APIm 是指第m个接口;C表示每一个接口的具体限流配置的集合,C={C1,C2 ,C3,...,Cm ...,CM},Cm 是指第m个接口的具体限流配置;S12、本地程序初始化时,从云端服务器读取限全局限流配置信息,解析全局限流配置信息读取配置项,构建限流配置哈希表;S13、周期性地执行上述步骤,从而获取最新的全局限流配置信息。
[0007]进一步地,限流配置哈希表是一个二维哈希结构,在第一维哈希表中key是业务请求的请求标识,value是一个指向具体配置项的指针。
[0008]进一步地,所述配置项包括以下参数:缓存时间:缓存记录的时间;缓存时长:缓存有效期时长,仅当启用缓存限流时有意义;响应值缓存:针对缓存进行限流,如果在缓存有效期内则不发起请求,使用缓存代替;请求时长:针对请求时长进行限流,如果请求时长超过配置则中断请求,使用缓存代替;请求频率:针对请求频率进行限流,如果请求频率超过配置则不发起请求,使用缓存代替;响应状态码:针对响应状态码进行限流,如果状态码包含于配置则触发缓存限流,使用缓存代替。
[0009]进一步地,步骤S3具体包括以下步骤:S31:用户触发业务请求时,从限流配置哈希表中获取当前接口的限流配置,如果限流配置哈希表没有对应业务请求的匹配项,则服务器响应请求;如果限流配置哈希表有对应业务请求的匹配项,则根据接口的限流配置参数运行限流算法;S32:根据限流配置参数判断是否开启缓存限流,如果开启缓存限流且缓存有效,缓存有效的含义是指缓存时间没有超过缓存时长配置项,则使用缓存,此处的缓存就是响应值缓存,作为请求的响应值返回;S33:不符合缓存限流开启条件或缓存无效,则根据限流配置参数判断是否开启请求频率限流,当请求频率超过阈值时,使用缓存作为请求的响应值返回;当请求频率未超过阈值时,云端服务器执行请求;S34:后端服务接受请求时,根据限流配置参数判断是否开启请求时长限流,当请求时长超过请求时长配置项时,中断执行请求并使用缓存作为请求的响应值返回;当请求时长未超过阈值时,后端服务执行请求并进行响应;S35:如果请求被后端服务正常响应,则更新缓存;如果请求未被服务正常响应,则根据限流配置参数判断是否开启响应状态码限流,如响应状态码限流未开启,则请求出错,中断执行请求并返回错误响应;如响应状态码限流开启并匹配到相应的状态码,则熔断,熔断后触发缓存限流。
[0010]本专利技术具有以下有益效果:本专利技术提供的高并发系统的前端限流方法,保证了业务请求执行预先配置的全局限流配置,最终达到在满足业务应用服务高可用的前提下,尽量减少服务端调用带来的时间延迟,提升了服务的响应速度,降低了后端系统的压力,提高了用户的访问体验;通过远程配置文件即可达到前端限流效果,与传统的前端限流相比,通过在服务器上对json文件配置需要限流的接口,以及限流冷却时间来实现不发版限流配置,极大地减轻了系统的发版频率,释放了一线开发人员的人力,提升整个系统的运行效率和加快研发效率。本专利技术采用主动限流的方式,先拦截所有请求,请求的成功率由配置文件配置,配置文件决定了请求只有百分之多少能到后端,剩下的请求直接前端拦截并响应,大大降低了请求数量和频率。
附图说明
[0011]图1是本专利技术的一种高并发系统的前端限流方法的总体流程图。
[0012]图2是本专利技术的一种高并发系统的前端限流方法的详细流程图。
[0013]图3是限流配置哈希表。
具体实施方式
[0014]为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0015]本
技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本专利技术所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。
[0016]图1

2示意性示出了本专利技术一个实施例的高并发系统的限流方法的流程图。参照图1

2,本专利技术实施例提出的一种高并发系统的前端限流方法及装置,包括如下步骤:S1、根据初始化全局限流配置信息,构建限流配置哈希表;S11、在云端服务器上设定全局限流配置信息,包括需要限流的所有接口集合API及每一个接口的具体限流配置集合C,API={API1,API2 ,API3,...,APIm ...,APIM}本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种高并发系统的前端限流方法,其特征在于,包括如下步骤:S1、根据初始化全局限流配置信息,构建限流配置哈希表;S2、织入限流算法,即拦截业务请求,将限流算法拼接到接口请求逻辑中,保证限流算法与业务请求相融合;S3、运行限流算法:在本地应用程序运行过程中,结合全局限流配置在适当的时机下执行与业务请求相匹配的限流算法。2.根据权利要求1所述的一种高并发系统的前端限流方法,其特征在于,步骤S1具体包括以下步骤:S11、在云端服务器上设定全局限流配置信息,包括需要限流的所有接口集合API及每一个接口的具体限流配置集合C,API={API1,API2 ,API3,...,APIm ...,APIM},共有M个接口,APIm 是指第m个接口;C表示每一个接口的具体限流配置的集合,C={C1,C2 ,C3,...,Cm ...,CM},Cm 是指第m个接口的具体限流配置;S12、本地程序初始化时,从云端服务器读取限全局限流配置信息,解析全局限流配置信息读取配置项,构建限流配置哈希表;S13、周期性地执行上述步骤,从而获取最新的全局限流配置信息。3.根据权利要求2所述的一种高并发系统的前端限流方法,其特征在于,限流配置哈希表是一个二维哈希结构,在第一维哈希表中key是业务请求的请求标识,value是一个指向具体配置项的指针。4.根据权利要求3所述的一种高并发系统的前端限流方法,其特征在于,所述配置项包括以下参数:缓存时间:缓存记录的时间;缓存时长:缓存有效期时长,仅当启用缓存限流时有意义;响应值缓存:针对缓存进行限流,如果在缓存有效期内则不发起请求,使用缓存代替;请求时长:...

【专利技术属性】
技术研发人员:李丽勤赵冬媛单强尹政清李思岩王文超赵野马征
申请(专利权)人:北京市大数据中心
类型:发明
国别省市:

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

1