CN116886626A - 一种业务数据限流方法、装置、计算机设备及存储介质 - Google Patents
一种业务数据限流方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN116886626A CN116886626A CN202310678509.0A CN202310678509A CN116886626A CN 116886626 A CN116886626 A CN 116886626A CN 202310678509 A CN202310678509 A CN 202310678509A CN 116886626 A CN116886626 A CN 116886626A
- Authority
- CN
- China
- Prior art keywords
- service
- service request
- request
- token
- token bucket
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 230000004044 response Effects 0.000 claims abstract description 38
- 238000010276 construction Methods 0.000 claims description 4
- 230000003111 delayed effect Effects 0.000 claims description 4
- 230000000717 retained effect Effects 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 abstract description 2
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000014759 maintenance of location Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/215—Flow control; Congestion control using token-bucket
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例属于金融科技技术领域,公开了一种基于令牌桶的业务数据限流方法、装置、计算机设备及存储介质,包括:接收用户终端发送的业务请求;读取预设的Map集合;在预设的Map集合中获取与业务路径相对应的目标业务唯一键以及与目标业务唯一键相对应的目标限流器;根据目标限流器向业务请求分配限流令牌;当需要响应业务请求时,判断业务请求是否存在请求内容;若业务请求中不存在请求内容,则响应业务请求;否则根据令牌桶算法以及令牌桶限流器判断业务请求的限流令牌是否满足限流条件;若限流令牌满足限流条件,则延后预设时间响应;否则响应业务请求。本申请的优点在于:能够基于更细粒度的业务进行分流,使业务的限流更加合理。
Description
技术领域
本申请涉及金融科技技术领域,尤其涉及为一种基于令牌桶的业务数据的限流方法、装置、计算机设备及存储介质。
背景技术
限流是服务降级的一种方式,限流的目的是通过对并发请求进行限速,或者对一个时间窗口内的请求数量进行限制来保护***,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理,但是,对于特殊的应用场景,尤其是在金融保险领域的保险业务场景,如果实现智能化限流成为主要解决的问题。
现有的业内限流模式一般限制流量,最细限流粒度为接口,但是对请求接口的源头并没有做区分,这种限流模式一视同仁,没有个体差异。例如:保险公司A对外暴露了一个接口,保险公司B和保险公司C都要调用这个接口,其中保险公司B调用量较小,QPS为5,***负载无压力;但是保险公司C调用量极大,QPS为1000,可能会导致***负载过高。针对这种保险业务场景,我们需要对保险公司C进行限流,但是又不能影响保险公司B的调用,因为对于保险公司B来说,他的流量是很小的,不应该被限流。而业内现有的限流模式却只能针对保险公司A对外暴露的接口进行限流,无法针对更细粒度的业务场景限流。
发明内容
本申请所要解决的技术问题在于业内现有的限流模式却只能针对保险公司A对外暴露的接口进行限流,无法针对更细粒度的业务场景限流。
本申请采用以下技术方案解决上述技术问题:提供了一种基于令牌桶的业务数据限流方法,包括下述步骤:
接收用户终端发送的业务请求,其中,所述业务请求至少携带有业务路径;
读取预设的Map集合,其中,所述Map集合包括与各个业务路径相对应的业务唯一键以及与各个业务唯一键相对应的令牌桶限流器;
在所述预设的Map集合中获取与所述业务路径相对应的目标业务唯一键以及与所述目标业务唯一键相对应的目标限流器;
根据所述目标限流器向所述业务请求分配限流令牌;
当需要响应所述业务请求时,判断所述业务请求是否存在请求内容;
若所述业务请求中不存在所述请求内容,则响应所述业务请求;
若所述业务请求中存在所述请求内容,则根据所述令牌桶算法以及所述令牌桶限流器判断所述业务请求的限流令牌是否满足限流条件;
若所述限流令牌满足所述限流条件,则延后预设时间响应;
若所述限流令牌不满足所述限流条件,则响应所述业务请求。
优选的,在读取预设的Map集合的步骤之前,还包括下述步骤:
读取所述业务请求中所携带的业务路径;
根据同一业务路径的业务请求的流量大小,将所述业务请求分为主业务请求和副业务请求;
为相同业务路径的主业务请求构建业务唯一键;
为所有副业务请求分配统一的业务唯一键。
优选的,所述令牌桶限流器包括多组主令牌桶与副令牌桶,多组所述主令牌桶用于限主业务请求,所述副令牌桶用于限流副业务请求;在所述读取预设的Map集合的步骤之前,还包括以下步骤:
设立令牌桶的容量b;
根据用户业务请求的平均速度设置每秒放入桶内令牌的数量r;
当有n个字节的请求时就从令牌桶内侧减去n个令牌;
若所述业务请求在先执行了一次添加令牌操作,则判断令牌桶内侧令牌数量是否大于n;
若令牌桶内侧令牌数量大于n则根据业务请求的速率设定令牌桶的大小,否则拒绝访问;
其中,当令牌桶内令牌数量等于b时新产生的令牌将会被放弃,所述令牌桶容量b的大小与业务请求的平均速率成正比。
优选的,所述令牌桶限流器的限流方法为:
获取业务请求的唯一键;
遍历Map集合,从所述Map集合中找寻与业务唯一键相匹配的令牌桶;
通过令牌桶向业务请求发送令牌;
判断业务请求是否携带有令牌,对未携带令牌的业务请求进行限流。
优选的,所述根据所述目标限流器向所述业务请求分配限流令牌的步骤,具体包括下述步骤:
优先为延后预设时间响应的业务请求分配所述限流令牌。
优选的,所述响应所述业务请求的步骤,具体包括下述步骤:
判断是否存在滞留未处理的业务请求;
若存在滞留的业务请求,则将所述业务请求加入排队序列;
若不存在滞留的业务请求,则判断令牌桶内侧令牌数量是否小于业务请求字节数量;
若令牌桶内侧令牌数量小于所述业务请求字节数量,则拒绝响应所述业务请求;
若令牌桶内侧令牌数量大于或等于所述业务请求字节数量,则正常响应,为业务请求匹配令牌。
一种基于令牌桶的业务数据限流装置,包括:
请求接收模块,用于接收用户终端发送的业务请求,其中,所述业务请求至少携带有业务路径;
Map集合读取模块,用于读取预设的Map集合,其中,所述Map集合包括与各个业务路径相对应的业务唯一键以及与各个业务唯一键相对应的令牌桶限流器;
限流器获取模块,用于在所述预设的Map集合中获取与所述业务路径相对应的目标业务唯一键以及与所述目标业务唯一键相对应的目标限流器;
令牌分配模块,用于根据所述目标限流器向所述业务请求分配限流令牌;
请求内容判断模块,用于当需要响应所述业务请求时,判断所述业务请求是否存在请求内容;
第一响应模块,用于若所述业务请求中不存在所述请求内容,则响应所述业务请求;
限流条件判断模块,用于若所述业务请求中存在所述请求内容,则根据所述令牌桶算法以及所述令牌桶限流器判断所述业务请求的限流令牌是否满足限流条件;
延后响应模块,用于若所述限流令牌满足所述限流条件,则延后预设时间响应;
第二响应模块,用于若所述限流令牌不满足所述限流条件,则响应所述业务请求。
优选的,所述装置还包括:
业务路径读取模块,用于读取所述业务请求中所携带的业务路径;
请求划分模块,用于根据同一业务路径的业务请求的流量大小,将所述业务请求分为主业务请求和副业务请求;
唯一键构建模块,用于为相同业务路径的主业务请求构建业务唯一键;
唯一键分配模块,用于为所有副业务请求分配统一的业务唯一键。
一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如上所述的限流方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如上所述的限流方法的步骤
与现有技术相比,本申请提供了一种基于令牌桶算法的业务限流器,具备以下有益效果:
本申请提供了一种基于令牌桶的业务数据限流方法,包括:接收用户终端发送的业务请求,其中,所述业务请求至少携带有业务路径;读取预设的Map集合,其中,所述Map集合包括与各个业务路径相对应的业务唯一键以及与各个业务唯一键相对应的令牌桶限流器;在所述预设的Map集合中获取与所述业务路径相对应的目标业务唯一键以及与所述目标业务唯一键相对应的目标限流器;根据所述目标限流器向所述业务请求分配限流令牌;当需要响应所述业务请求时,判断所述业务请求是否存在请求内容;若所述业务请求中不存在所述请求内容,则响应所述业务请求;若所述业务请求中存在所述请求内容,则根据所述令牌桶算法以及所述令牌桶限流器判断所述业务请求的限流令牌是否满足限流条件;若所述限流令牌满足所述限流条件,则延后预设时间响应;若所述限流令牌不满足所述限流条件,则响应所述业务请求。与现有技术相比,本申请通过公司的外部接口接受请求,然后为请求内容分类并分别赋予唯一键,然后建立令牌桶,并为令牌桶赋予唯一键,且将令牌桶唯一键与业务唯一键相关联,且令牌桶的令牌生成速度与业务请求的平均速率相匹配,通过建立令牌桶能够对业务进行限流,防止业务流量过大,对***进行保护,并建立Map集合,将所有的业务唯一键与业务限流器的key-value关系存到Map集合中,保存业务请求与令牌桶的关系,方便找寻业务专用限流桶,通过对业务赋予唯一键能够对业务进行分别限流,本申请能够基于更细粒度的业务进行分流,使业务的限流更加合理。
附图说明
图1是本申请可以应用于其中的示例性***架构图;
图2是本申请实施例一提供的基于令牌桶的业务数据限流方法的实现流程图;
图3是本申请实施例二提供的基于令牌桶的业务数据限流装置的结构示意图;
图4是根据本申请的计算机设备的一个实施例的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如图1所示,***架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving PictureExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(MovingPictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器。
需要说明的是,本申请实施例所提供的一种基于令牌桶的业务数据限流方法一般由服务器/终端设备执行,相应地,一种基于令牌桶的业务数据限流装置一般设置于服务器/终端设备中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,示出了根据本申请的一种业务数据的限流方法的流程图,的一种基于令牌桶的业务数据限流方法,包括以下步骤:
步骤S201:接收用户终端发送的业务请求,其中,业务请求至少携带有业务路径。
在本申请实施例中,一种基于令牌桶的业务数据限流方法运行于其上的电子设备(例如图1所示的服务器/终端设备)可以通过有线连接方式或者无线连接方式接收终端设备向访问接口请求接入,需要指出的是,上述无线连接方式可以包括但不限于3G/4G/5G连接、WiFi连接、蓝牙连接、WiMAX连接、Zigbee连接、UWB(ultra wideband)连接、以及其他现在已知或将来开发的无线连接方式。
在本申请实施例中,通过对外接口接收业务请求,其中,对外接口可以为计算设备、网络设备、存储设备,通过业务请求的IP地址可以得到各业务请求对应的路径,根据业务请求的IP地址对相同IP地址的业务请求赋予相同的唯一键,将相同路径的请求整理分类。
步骤S202:读取预设的Map集合,其中,Map集合包括与各个业务路径相对应的业务唯一键以及与各个业务唯一键相对应的令牌桶限流器。
在本申请实施例中,利用预设的Map集合,可以将携带业务唯一键的业务请求,与其相对应的令牌桶限流器相匹配,方便令牌桶限流器针对性的对业务请求进行限流。
步骤S203:在预设的Map集合中获取与业务路径相对应的目标业务唯一键以及与目标业务唯一键相对应的目标限流器。
步骤S204:根据目标限流器向业务请求分配限流令牌。
在本申请实施例中,根据业务唯一键从Map集合中获取令牌,通过Map集合能够为不同路径的业务请求设立不同的令牌桶。
步骤S205:当需要响应业务请求时,判断业务请求是否存在请求内容;
步骤S206:若业务请求中不存在请求内容,则响应业务请求。
在本申请实施例中,接收到的业务请求会存在,内容为空的请求,对于这些请求,正常响应。
步骤S207:若业务请求中存在请求内容,则根据令牌桶算法以及令牌桶限流器判断业务请求的限流令牌是否满足限流条件。
步骤S208:若限流令牌满足限流条件,则延后预设时间响应。
步骤S209:若限流令牌不满足限流条件,则响应业务请求。
在本申请实施例中,以保险业务场景为例,若保险公司A对外暴露了一个接口,保险公司B和保险公司C都要调用这个接口,其中保险公司B调用量较小,QPS为5,***负载无压力,但是保险公司C调用量极大,QPS为1000,可能会导致***负载过高,此时,保险公司A会根据预设的Map集合获取与保险公司B和保险公司C分别对应的业务唯一键B1、业务唯一键C1以及与业务唯一键B1相对应的令牌桶限流器B2、与业务唯一键C1相对应的令牌桶限流器C2,然后根据该令牌桶限流器B2、令牌桶限流器C2分别给保险公司B和保险公司C分配限流令牌B3、限流令牌C3,当需要响应保险公司B或者保险公司C的请求时,首先判断保险公司B或者保险公司C调用这个接口的请求是否有请求内容,如果没有请求内容则直接响应,如果有请求内容,则需要根据各自对应的限流令牌进一步确定各自的请求是否需要限流,从而有效的对请求接口的源头(保险公司B或者保险公司C)进行限流区分。
在本申请实施例中,提供了一种基于令牌桶的业务数据限流方法,包括:接收用户终端发送的业务请求,其中,业务请求至少携带有业务路径;读取预设的Map集合,其中,Map集合包括与各个业务路径相对应的业务唯一键以及与各个业务唯一键相对应的令牌桶限流器;在预设的Map集合中获取与业务路径相对应的目标业务唯一键以及与目标业务唯一键相对应的目标限流器;根据目标限流器向业务请求分配限流令牌;当需要响应业务请求时,判断业务请求是否存在请求内容;若业务请求中不存在请求内容,则响应业务请求;若业务请求中存在请求内容,则根据令牌桶算法以及令牌桶限流器判断业务请求的限流令牌是否满足限流条件;若限流令牌满足限流条件,则延后预设时间响应;若限流令牌不满足限流条件,则响应业务请求。与现有技术相比,本申请通过公司的外部接口接受请求,然后为请求内容分类并分别赋予唯一键,然后建立令牌桶,并为令牌桶赋予唯一键,且将令牌桶唯一键与业务唯一键相关联,且令牌桶的令牌生成速度与业务请求的平均速率相匹配,通过建立令牌桶能够对业务进行限流,防止业务流量过大,对***进行保护,并建立Map集合,将所有的业务唯一键与业务限流器的key-value关系存到Map集合中,保存业务请求与令牌桶的关系,方便找寻业务专用限流桶,通过对业务赋予唯一键能够对业务进行分别限流,本申请能够基于更细粒度的业务进行分流,使业务的限流更加合理。
在本实施例的一些可选的实现方式中,在上述步骤S202之前,还包括下述步骤:
读取业务请求中所携带的业务路径;
根据同一业务路径的业务请求的流量大小,将业务请求分为主业务请求和副业务请求;
为相同业务路径的主业务请求构建业务唯一键;
为所有副业务请求分配统一的业务唯一键。
在本申请实施例中,为业务构件唯一键,能够方便业务分类,保证业务能够准确的匹配业务限流器,将业务请求分为主业务请求和副业务请求,能够针对性的对业务请求构建业务唯一键,减少令牌桶限流器的建立。
在本实施例的一些可选的实现方式中,令牌桶限流器包括多组主令牌桶与副令牌桶,多组主令牌桶用于限主业务请求,副令牌桶用于限流副业务请求;在上述步骤S202之前,还包括下述步骤:
设立令牌桶的容量b;
根据用户业务请求的平均速度设置每秒放入桶内令牌的数量r;
当有n个字节的请求时就从令牌桶内侧减去n个令牌;
若所述业务请求在先执行了一次添加令牌操作,则判断令牌桶内侧令牌数量是否大于n;
若令牌桶内侧令牌数量大于n则根据业务请求的速率设定令牌桶的大小,否则拒绝访问;
其中,当令牌桶内令牌数量等于b时新产生的令牌将会被放弃,令牌桶容量b的大小与业务请求的平均速率成正比。
在本申请实施例中,为不同的业务设定不同的限流器,能够对业务进行精细化的限流,防止因业务限流而造成小流量的业务请求堵塞。
在本实施例的一些可选的实现方式中,令牌桶限流器的限流方法为:
获取业务请求的唯一键;
遍历Map集合,从Map集合中找寻与业务唯一键相匹配的令牌桶;
通过令牌桶向业务请求发送令牌;
判断业务请求是否携带有令牌,对未携带令牌的业务请求进行限流。
在本申请实施例中,保存业务请求与令牌桶的关系,方便找寻业务专用限流桶,判断哪些业务需要限流,并做出回应,限制业务请求的流量,保证***正常运行。
在本实施例的一些可选的实现方式中,上述步骤S204具体包括下述步骤:
优先为延后预设时间响应的业务请求分配限流令牌。
在本实施例的一些可选的实现方式中,上述步骤S206或步骤S209包括下述步骤:
判断是否存在滞留未处理的业务请求;
若存在滞留的业务请求,则将业务请求加入排队序列;
若不存在滞留的业务请求,则判断令牌桶内侧令牌数量是否小于业务请求字节数量;
若令牌桶内侧令牌数量小于业务请求字节数量,则拒绝响应业务请求;
若令牌桶内侧令牌数量大于或等于业务请求字节数量,则正常响应,为业务请求匹配令牌。
在实际应用中,通过公司的对外接口接受请求,然后根据外部业务请求的IP地址判断业务请求的路径,并为相同路径的请求赋予唯一键,然后根据不同的业务请求的平均请求速率建立令牌桶,并将令牌桶赋予与业务唯一键相关联,且令牌桶的令牌生成速度与业务请求的平均速率相匹配,并建立Map集合,将所有的业务唯一键与业务限流器的key-value关系存到Map集合中,当有业务请求时,首先得到业务请求的唯一键,然后再Map集合中找寻与唯一键相关联的限流器,然后从限流器中获取与业务请求相匹配的令牌,当令牌桶内侧令牌少于业务请求字节时,则拒绝对业务请求的响应,否则正常响应,当业务请求平均速率中不存在新的请求时则响应待响应的业务,正常响应业务请求后,会根据业务请求内容访问数据库,并将数据库反映的内容响应到业务外观层加以显示。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,该计算机可读指令可存储于一计算机可读取存储介质中,该计算机可读指令在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
实施例二
进一步参考图3,作为对上述图2所示方法的实现,本申请提供了一种基于令牌桶的业务数据限流装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图3所示,本实施例的基于令牌桶的业务数据限流装置200包括:请求接收模块210、Map集合读取模块220、限流器获取模块230、令牌分配模块240、请求内容判断模块250、第一响应模块260、限流条件判断模块270、延后响应模块280以及第二响应模块290。其中:
请求接收模块210,用于接收用户终端发送的业务请求,其中,业务请求至少携带有业务路径;
Map集合读取模块220,用于读取预设的Map集合,其中,Map集合包括与各个业务路径相对应的业务唯一键以及与各个业务唯一键相对应的令牌桶限流器;
限流器获取模块230,用于在预设的Map集合中获取与业务路径相对应的目标业务唯一键以及与目标业务唯一键相对应的目标限流器;
令牌分配模块240,用于根据目标限流器向业务请求分配限流令牌;
请求内容判断模块250,用于当需要响应业务请求时,判断业务请求是否存在请求内容;
第一响应模块260,用于若业务请求中不存在请求内容,则响应业务请求;
限流条件判断模块270,用于若业务请求中存在请求内容,则根据令牌桶算法以及令牌桶限流器判断业务请求的限流令牌是否满足限流条件;
延后响应模块280,用于若限流令牌满足限流条件,则延后预设时间响应;
第二响应模块290,用于若限流令牌不满足限流条件,则响应业务请求。
在本申请实施例中,一种基于令牌桶的业务数据限流方法运行于其上的电子设备(例如图1所示的服务器/终端设备)可以通过有线连接方式或者无线连接方式接收终端设备向访问接口请求接入,需要指出的是,上述无线连接方式可以包括但不限于3G/4G/5G连接、WiFi连接、蓝牙连接、WiMAX连接、Zigbee连接、UWB(ultra wideband)连接、以及其他现在已知或将来开发的无线连接方式。
在本申请实施例中,通过对外接口接收业务请求,其中,对外接口可以为计算设备、网络设备、存储设备,通过业务请求的IP地址可以得到各业务请求对应的路径,根据业务请求的IP地址对相同IP地址的业务请求赋予相同的唯一键,将相同路径的请求整理分类。
在本申请实施例中,利用预设的Map集合,可以将携带业务唯一键的业务请求,与其相对应的令牌桶限流器相匹配,方便令牌桶限流器针对性的对业务请求进行限流。
在本申请实施例中,根据业务唯一键从Map集合中获取令牌,通过Map集合能够为不同路径的业务请求设立不同的令牌桶。
在本申请实施例中,接收到的业务请求会存在,内容为空的请求,对于这些请求,正常响应。
在本申请实施例中,以保险业务场景为例,若保险公司A对外暴露了一个接口,保险公司B和保险公司C都要调用这个接口,其中保险公司B调用量较小,QPS为5,***负载无压力,但是保险公司C调用量极大,QPS为1000,可能会导致***负载过高,此时,保险公司A会根据预设的Map集合获取与保险公司B和保险公司C分别对应的业务唯一键B1、业务唯一键C1以及与业务唯一键B1相对应的令牌桶限流器B2、与业务唯一键C1相对应的令牌桶限流器C2,然后根据该令牌桶限流器B2、令牌桶限流器C2分别给保险公司B和保险公司C分配限流令牌B3、限流令牌C3,当需要响应保险公司B或者保险公司C的请求时,首先判断保险公司B或者保险公司C调用这个接口的请求是否有请求内容,如果没有请求内容则直接响应,如果有请求内容,则需要根据各自对应的限流令牌进一步确定各自的请求是否需要限流,从而有效的对请求接口的源头(保险公司B或者保险公司C)进行限流区分。
在本申请实施例中,提供了一种基于令牌桶的业务数据限流装置200,包括:请求接收模块210、Map集合读取模块220、限流器获取模块230、令牌分配模块240、请求内容判断模块250、第一响应模块260、限流条件判断模块270、延后响应模块280以及第二响应模块290。与现有技术相比,本申请通过公司的外部接口接受请求,然后为请求内容分类并分别赋予唯一键,然后建立令牌桶,并为令牌桶赋予唯一键,且将令牌桶唯一键与业务唯一键相关联,且令牌桶的令牌生成速度与业务请求的平均速率相匹配,通过建立令牌桶能够对业务进行限流,防止业务流量过大,对***进行保护,并建立Map集合,将所有的业务唯一键与业务限流器的key-value关系存到Map集合中,保存业务请求与令牌桶的关系,方便找寻业务专用限流桶,通过对业务赋予唯一键能够对业务进行分别限流,本申请能够基于更细粒度的业务进行分流,使业务的限流更加合理。
在本实施例的一些可选的实现方式中,上述装置200还包括:业务路径读取模块、请求划分模块、唯一键构建模块以及唯一键分配模块,其中:
业务路径读取模块,用于读取业务请求中所携带的业务路径;
请求划分模块,用于根据同一业务路径的业务请求的流量大小,将业务请求分为主业务请求和副业务请求;
唯一键构建模块,用于为相同业务路径的主业务请求构建业务唯一键;
唯一键分配模块,用于为所有副业务请求分配统一的业务唯一键。
在本实施例的一些可选的实现方式中,令牌桶限流器包括多组主令牌桶与副令牌桶,多组主令牌桶用于限主业务请求,副令牌桶用于限流副业务请求,上述装置200还包括:容量设置模块、数量设置模块、令牌删减模块、数量判断模块以及数量判断结果模块,其中:
容量设置模块,用于设立令牌桶的容量b;
数量设置模块,用于根据用户业务请求的平均速度设置每秒放入桶内令牌的数量r;
令牌删减模块,用于当有n个字节的请求时就从令牌桶内侧减去n个令牌;
数量判断模块,用于若所述业务请求在先执行了一次添加令牌操作,则判断令牌桶内侧令牌数量是否大于n;
数量判断结果模块,用于若令牌桶内侧令牌数量大于n则根据业务请求的速率设定令牌桶的大小,否则拒绝访问;
其中,当令牌桶内令牌数量等于b时新产生的令牌将会被放弃,令牌桶容量b的大小与业务请求的平均速率成正比。
在本实施例的一些可选的实现方式中,令牌桶限流器的限流方法为:
获取业务请求的唯一键;
遍历Map集合,从Map集合中找寻与业务唯一键相匹配的令牌桶;
通过令牌桶向业务请求发送令牌;
判断业务请求是否携带有令牌,对未携带令牌的业务请求进行限流。
在本实施例的一些可选的实现方式中,上述令牌分配模块240包括:令牌分配子模块,其中:
令牌分配子模块,用于优先为延后预设时间响应的业务请求分配限流令牌。
在本实施例的一些可选的实现方式中,上述第一响应模块或第二响应模块包括:滞留请求判断子模块、加入序列子模块、令牌数量判断子模块、拒绝响应子模块以及正常响应子模块,其中:
滞留请求判断子模块,用于判断是否存在滞留未处理的业务请求;
加入序列子模块,用于若存在滞留的业务请求,则将业务请求加入排队序列;
令牌数量判断子模块,用于若不存在滞留的业务请求,则判断令牌桶内侧令牌数量是否小于业务请求字节数量;
拒绝响应子模块,用于若令牌桶内侧令牌数量小于业务请求字节数量,则拒绝响应业务请求;
正常响应子模块,用于若令牌桶内侧令牌数量大于或等于业务请求字节数量,则正常响应,为业务请求匹配令牌。
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图4,图4为本实施例计算机设备基本结构框图。
计算机设备6包括通过***总线相互通信连接存储器61、处理器62、网络接口63。需要指出的是,图中仅示出了具有组件61-63的计算机设备6,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
存储器61至少包括一种类型的可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器61可以是计算机设备6的内部存储单元,例如该计算机设备6的硬盘或内存。在另一些实施例中,存储器61也可以是计算机设备6的外部存储设备,例如该计算机设备6上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器61还可以既包括计算机设备6的内部存储单元也包括其外部存储设备。本实施例中,存储器61通常用于存储安装于计算机设备6的操作***和各类应用软件,一种基于令牌桶的业务数据限流方法的计算机可读指令等。此外,存储器61还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器62在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器62通常用于控制计算机设备6的总体操作。本实施例中,处理器62用于运行存储器61中存储的计算机可读指令或者处理数据,例如运行一种基于令牌桶的业务数据限流方法的计算机可读指令。
网络接口63可包括无线网络接口或有线网络接口,该网络接口63通常用于在计算机设备6与其他电子设备之间建立通信连接。
本申请提供的计算机设备,通过公司的外部接口接受请求,然后为请求内容分类并分别赋予唯一键,然后建立令牌桶,并为令牌桶赋予唯一键,且将令牌桶唯一键与业务唯一键相关联,且令牌桶的令牌生成速度与业务请求的平均速率相匹配,通过建立令牌桶能够对业务进行限流,防止业务流量过大,对***进行保护,并建立Map集合,将所有的业务唯一键与业务限流器的key-value关系存到Map集合中,保存业务请求与令牌桶的关系,方便找寻业务专用限流桶,通过对业务赋予唯一键能够对业务进行分别限流,能够基于更细粒度的业务进行分流,使业务的限流更加合理。
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可读指令,计算机可读指令可被至少一个处理器执行,以使至少一个处理器执行如上述的一种基于令牌桶的业务数据限流方法的步骤。
本申请提供的计算机可读存储介质,通过公司的外部接口接受请求,然后为请求内容分类并分别赋予唯一键,然后建立令牌桶,并为令牌桶赋予唯一键,且将令牌桶唯一键与业务唯一键相关联,且令牌桶的令牌生成速度与业务请求的平均速率相匹配,通过建立令牌桶能够对业务进行限流,防止业务流量过大,对***进行保护,并建立Map集合,将所有的业务唯一键与业务限流器的key-value关系存到Map集合中,保存业务请求与令牌桶的关系,方便找寻业务专用限流桶,通过对业务赋予唯一键能够对业务进行分别限流,能够基于更细粒度的业务进行分流,使业务的限流更加合理。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例的方法。
显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。
Claims (10)
1.一种基于令牌桶的业务数据限流方法,其特征在于,包括下述步骤:
接收用户终端发送的业务请求,其中,所述业务请求至少携带有业务路径;
读取预设的Map集合,其中,所述Map集合包括与各个业务路径相对应的业务唯一键以及与各个业务唯一键相对应的令牌桶限流器;
在所述预设的Map集合中获取与所述业务路径相对应的目标业务唯一键以及与所述目标业务唯一键相对应的目标限流器;
根据所述目标限流器向所述业务请求分配限流令牌;
当需要响应所述业务请求时,判断所述业务请求是否存在请求内容;
若所述业务请求中不存在所述请求内容,则响应所述业务请求;
若所述业务请求中存在所述请求内容,则根据所述令牌桶算法以及所述令牌桶限流器判断所述业务请求的限流令牌是否满足限流条件;
若所述限流令牌满足所述限流条件,则延后预设时间响应;
若所述限流令牌不满足所述限流条件,则响应所述业务请求。
2.根据权利要求1所述的一种基于令牌桶的业务数据限流方法,其特征在于,在读取预设的Map集合的步骤之前,还包括下述步骤:
读取所述业务请求中所携带的业务路径;
根据同一业务路径的业务请求的流量大小,将所述业务请求分为主业务请求和副业务请求;
为相同业务路径的主业务请求构建业务唯一键;
为所有副业务请求分配统一的业务唯一键。
3.根据权利要求1所述的一种基于令牌桶的业务数据限流方法,其特征在于,所述令牌桶限流器包括多组主令牌桶与副令牌桶,多组所述主令牌桶用于限主业务请求,所述副令牌桶用于限流副业务请求;在所述读取预设的Map集合的步骤之前,还包括以下步骤:
设立令牌桶的容量b;
根据用户业务请求的平均速度设置每秒放入桶内令牌的数量r;
当有n个字节的请求时就从令牌桶内侧减去n个令牌;
若所述业务请求在先执行了一次添加令牌操作,则判断令牌桶内侧令牌数量是否大于n;
若令牌桶内侧令牌数量大于n则根据业务请求的速率设定令牌桶的大小,否则拒绝访问;
其中,当令牌桶内令牌数量等于b时新产生的令牌将会被放弃,所述令牌桶容量b的大小与业务请求的平均速率成正比。
4.根据权利要求3所述的一种基于令牌桶的业务数据限流方法,其特征在于:所述令牌桶限流器的限流方法为:
获取业务请求的唯一键;
遍历Map集合,从所述Map集合中找寻与业务唯一键相匹配的令牌桶;
通过令牌桶向业务请求发送令牌;
判断业务请求是否携带有令牌,对未携带令牌的业务请求进行限流。
5.根据权利要求1所述的一种基于令牌桶的业务数据限流方法,其特征在于,所述根据所述目标限流器向所述业务请求分配限流令牌的步骤,具体包括下述步骤:
优先为延后预设时间响应的业务请求分配所述限流令牌。
6.根据权利要求1所述的一种基于令牌桶的业务数据限流方法,其特征在于,所述响应所述业务请求的步骤,具体包括下述步骤:
判断是否存在滞留未处理的业务请求;
若存在滞留的业务请求,则将所述业务请求加入排队序列;
若不存在滞留的业务请求,则判断令牌桶内侧令牌数量是否小于业务请求字节数量;
若令牌桶内侧令牌数量小于所述业务请求字节数量,则拒绝响应所述业务请求;
若令牌桶内侧令牌数量大于或等于所述业务请求字节数量,则正常响应,为业务请求匹配令牌。
7.一种基于令牌桶的业务数据限流装置,其特征在于,包括:
请求接收模块,用于接收用户终端发送的业务请求,其中,所述业务请求至少携带有业务路径;
Map集合读取模块,用于读取预设的Map集合,其中,所述Map集合包括与各个业务路径相对应的业务唯一键以及与各个业务唯一键相对应的令牌桶限流器;
限流器获取模块,用于在所述预设的Map集合中获取与所述业务路径相对应的目标业务唯一键以及与所述目标业务唯一键相对应的目标限流器;
令牌分配模块,用于根据所述目标限流器向所述业务请求分配限流令牌;
请求内容判断模块,用于当需要响应所述业务请求时,判断所述业务请求是否存在请求内容;
第一响应模块,用于若所述业务请求中不存在所述请求内容,则响应所述业务请求;
限流条件判断模块,用于若所述业务请求中存在所述请求内容,则根据所述令牌桶算法以及所述令牌桶限流器判断所述业务请求的限流令牌是否满足限流条件;
延后响应模块,用于若所述限流令牌满足所述限流条件,则延后预设时间响应;
第二响应模块,用于若所述限流令牌不满足所述限流条件,则响应所述业务请求。
8.根据权利要求7所述的基于令牌桶的业务数据限流装置,其特征在于,所述装置还包括:
业务路径读取模块,用于读取所述业务请求中所携带的业务路径;
请求划分模块,用于根据同一业务路径的业务请求的流量大小,将所述业务请求分为主业务请求和副业务请求;
唯一键构建模块,用于为相同业务路径的主业务请求构建业务唯一键;
唯一键分配模块,用于为所有副业务请求分配统一的业务唯一键。
9.一种计算机设备,包括存储器(61)、处理器(62)和网络接口(63),所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如权利要求1至6中任一项所述的限流方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如权利要求1至6中任一项所述的限流方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310678509.0A CN116886626A (zh) | 2023-06-08 | 2023-06-08 | 一种业务数据限流方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310678509.0A CN116886626A (zh) | 2023-06-08 | 2023-06-08 | 一种业务数据限流方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116886626A true CN116886626A (zh) | 2023-10-13 |
Family
ID=88257575
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310678509.0A Pending CN116886626A (zh) | 2023-06-08 | 2023-06-08 | 一种业务数据限流方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116886626A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117556452A (zh) * | 2024-01-10 | 2024-02-13 | 支付宝(杭州)信息技术有限公司 | 一种针对数据库的访问控制方法及相关设备 |
-
2023
- 2023-06-08 CN CN202310678509.0A patent/CN116886626A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117556452A (zh) * | 2024-01-10 | 2024-02-13 | 支付宝(杭州)信息技术有限公司 | 一种针对数据库的访问控制方法及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7127010B2 (ja) | リソースの割り当て方法、装置、電子設備、コンピュータ可読媒体およびコンピュータプログラム | |
US9747201B2 (en) | Methods and systems for managing memory allocation | |
CN107943854B (zh) | 征信业务查询方法、装置及计算机可读存储介质 | |
CN112199442B (zh) | 分布式批量下载文件方法、装置、计算机设备及存储介质 | |
CN112182004B (zh) | 实时查看数据方法、装置、计算机设备及存储介质 | |
CN112835904A (zh) | 一种数据处理方法和数据处理装置 | |
CN116886626A (zh) | 一种业务数据限流方法、装置、计算机设备及存储介质 | |
CN112468409A (zh) | 访问控制方法、装置、计算机设备及存储介质 | |
CN112600761A (zh) | 一种资源分配的方法、装置及存储介质 | |
CN111813517A (zh) | 任务队列的分配方法、装置、计算机设备及介质 | |
CN111142799A (zh) | 分布式存储方法及装置、网络节点及存储介质 | |
CN114070847B (zh) | 服务器的限流方法、装置、设备及存储介质 | |
CN110162395B (zh) | 一种内存分配的方法及装置 | |
CN113791735A (zh) | 视频数据存储方法、装置、计算机设备及存储介质 | |
CN111259429A (zh) | 一种资源操作权限控制方法、装置及电子设备 | |
CN111291045A (zh) | 服务隔离数据传输方法、装置、计算机设备及存储介质 | |
CN116644144A (zh) | 一种分机号的存储方法、隐私号绑定方法及相关装置 | |
CN113254106B (zh) | 基于Flink的任务执行方法、装置、计算机设备及存储介质 | |
CN116319810A (zh) | 分布式***的流量控制方法、装置、设备、介质及产品 | |
CN110187957B (zh) | 一种下载任务的排队方法、装置及电子设备 | |
US11233847B1 (en) | Management of allocated computing resources in networked environment | |
CN111161067A (zh) | 一种交易路由的确定方法和装置 | |
US10956037B2 (en) | Provisioning storage allocation using prioritized storage system capabilities | |
CN115291937A (zh) | 一种智能卡片整合数据的方法、装置、设备及存储介质 | |
CN113434508B (zh) | 用于存储信息的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |