一种基于令牌桶的分布式限流方法和分布式限流装置制造方法及图纸

技术编号:34885778 阅读:17 留言:0更新日期:2022-09-10 13:43
本申请提供了一种基于令牌桶的分布式限流方法和分布式限流装置,该分布式限流方法包括:接收用户发送的接入请求,并确定所述用户的请求来源地址;基于所述用户的请求来源地址,确定该用户所对应的限流策略;基于所述限流策略,在每一限流间隔时间的开始时刻向所述用户所属的令牌桶中放入所述限流策略对应的令牌;接收用户发送的业务请求,判断是否能够从所述令牌桶中为所述业务请求获取所述令牌;若是,则获取所述令牌并将所述令牌赋予所述业务请求,以执行具有令牌的业务请求;若否,则拒绝所述业务请求。根据所述分布式限流方法和分布式限流装置,解决了现有技术中无法实现分布式限流的问题。式限流的问题。式限流的问题。

【技术实现步骤摘要】
一种基于令牌桶的分布式限流方法和分布式限流装置


[0001]本申请涉及计算机通信
,具体而言,涉及一种基于令牌桶的分布式限流方法和分布式限流装置。

技术介绍

[0002]随着计算机技术的发展,越来越多的技术应用在金融领域或IT技术等领域,但由于各行业的安全性及实时性要求,也对技术提出了更高的要求。其中,在数据流量管理方面,为了防止某一服务器访问量或某一应用访问量过大而导致系统瘫痪,常常采用限流的方式来对服务器或应用后台进行保护。限流,即服务或者应用对自身保护的一种手段,通过限制或者拒绝调用方的流量,来保证自身的负载。传统的限流方式流量限制是在单机内存中,多台网关服务器无法共享限流流量,而随着开放网关使用的数量越来越多,如何能够实现多机分布式限流对当前技术提出了更高要求。

技术实现思路

[0003]有鉴于此,本申请的目的在于提供一种基于令牌桶的分布式限流方法和分布式限流装置,根据用户的请求来源地址确定该用户对应的限流策略,并根据该用户所属的限流策略向令牌桶中放入对应的令牌,以对该用户进行限流。每个用户均有所属的限流策略,使用对应的限流策略对用户进行限流,解决了现有技术中无法实现分布式限流的问题,提高了对于用户限流的准确性和实时性,实现了对于不同用户进行分布式限流的目的。
[0004]第一方面,本申请实施例提供了一种基于令牌桶的分布式限流方法,所述分布式限流方法包括:
[0005]接收用户发送的接入请求,并确定所述用户的请求来源地址;
[0006]基于所述用户的请求来源地址,确定该用户所对应的限流策略;其中,所述限流策略用于表征所述用户在每个限流间隔时间内能够使用的令牌的数量;
[0007]基于所述限流策略,在每一限流间隔时间的开始时刻向所述用户所属的令牌桶中放入所述限流策略对应的令牌;
[0008]接收用户发送的业务请求,判断是否能够从所述令牌桶中为所述业务请求获取所述令牌;
[0009]若是,则获取所述令牌并将所述令牌赋予所述业务请求,以执行具有令牌的业务请求;
[0010]若否,则拒绝所述业务请求。
[0011]进一步的,在所述接收用户发送的接入请求之前,所述分布式限流方法还包括:
[0012]针对于每个不同的限流等级,为该限流等级对应的限流策略设置所述限流间隔时间、每一限流间隔时间内需要放入所述令牌桶中的令牌的数量和所述用户每次业务请求消耗的令牌的数量。
[0013]进一步的,所述基于所述用户的请求来源地址,确定该用户所对应的限流策略,包
括:
[0014]基于所述用户的请求来源地址,判断所述用户是否为白名单用户;
[0015]若否,则基于所述请求来源地址确定所述用户的限流等级,并基于所述限流等级确定该用户所对应的限流策略。
[0016]进一步的,通过以下步骤判断是否能够从令牌桶中为所述业务请求获取所述令牌:
[0017]在每一限流间隔时间内,判断所述令牌桶中当前令牌数量是否大于或等于所述业务请求消耗的令牌的数量;
[0018]若是,则能够从所述令牌桶中为所述业务请求获取所述令牌;
[0019]若否,则不能从所述令牌桶中为所述业务请求获取所述令牌。
[0020]进一步的,当判断能够从所述令牌桶中为所述业务请求获取所述令牌时,所述分布式限流方法还包括;
[0021]确定所述用户在当前限流间隔时间内的令牌消耗数量;
[0022]在位于当前限流间隔时间之后的下一限流间隔时间的开始时刻,向所述令牌桶中放入所述令牌消耗数量对应的令牌。
[0023]进一步的,当判断不能从所述令牌桶中为所述业务请求获取所述令牌时,所述分布式限流方法还包括;
[0024]在位于当前限流间隔时间之后的下一限流间隔时间的开始时刻,基于所述限流策略,向所述用户所属的令牌桶中放入所述限流策略对应的令牌。
[0025]进一步的,当拒绝所述业务请求之后,所述分布式限流方法还包括:
[0026]将所述用户确定为超额访问用户,并确定所述超额访问用户的用户信息;其中,所述用户信息包括请求来源地址、用户姓名、用户联系方式和API路径;
[0027]根据所述超额访问用户的用户联系方式,向所述超额访问用户发送每个不同限流等级对应的限流策略;
[0028]当检测到所述超额访问用户对于限流策略的下单操作时,则获取所述超额访问用户的下单等级,并将所述下单等级所对应的限流策略确定为所述超额访问用户所对应的限流策略,以使所述超额访问用户在下次发送业务请求时,根据所述超额访问用户所对应的限流策略为所述超额访问用户提供所述限流策略对应的令牌;其中,所述下单等级为所述限流等级中的任意一个。
[0029]第二方面,本申请实施例还提供了一种基于令牌桶的分布式限流装置,所述分布式限流装置包括:
[0030]接收模块,用于接收用户发送的接入请求,并确定所述用户的请求来源地址;
[0031]限流策略确定模块,用于基于所述用户的请求来源地址,确定该用户所对应的限流策略;其中,所述限流策略用于表征所述用户在每个限流间隔时间内能够使用的令牌数量;
[0032]令牌放置模块,用于基于所述限流策略,在每一限流间隔时间的开始时刻向所述用户所属的令牌桶中放入所述限流策略对应的令牌;
[0033]判断模块,用于接收用户发送的业务请求,判断是否能够从所述令牌桶中为所述业务请求获取所述令牌;
[0034]请求执行模块,用于若是,则获取所述令牌并将所述令牌赋予所述业务请求,以执行具有令牌的业务请求;
[0035]请求拒绝模块,用于若否,则拒绝所述业务请求。
[0036]第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如上述的基于令牌桶的分布式限流方法的步骤。
[0037]第四方面,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上述的基于令牌桶的分布式限流方法的步骤。
[0038]本申请实施例提供的基于令牌桶的分布式限流方法,首先,接收用户发送的接入请求,并确定所述用户的请求来源地址;然后基于所述用户的请求来源地址,确定该用户所对应的限流策略;其中,所述限流策略用于表征所述用户在每个限流间隔时间内能够使用的令牌的数量;基于所述限流策略,在每一限流间隔时间的开始时刻向所述用户所属的令牌桶中放入所述限流策略对应的令牌;最后,接收用户发送的业务请求,判断是否能够从所述令牌桶中为所述业务请求获取所述令牌;若是,则获取所述令牌并将所述令牌赋予所述业务请求,以执行具有令牌的业务请求;若否,则拒绝所述业务请求。
[0039]本申请提供的分布式限流方法与现有技术中的限流方法相比,根据用户的请求来源地址确定该用户对应的限流策本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于令牌桶的分布式限流方法,其特征在于,所述分布式限流方法包括:接收用户发送的接入请求,并确定所述用户的请求来源地址;基于所述用户的请求来源地址,确定该用户所对应的限流策略;其中,所述限流策略用于表征所述用户在每个限流间隔时间内能够使用的令牌的数量;基于所述限流策略,在每一限流间隔时间的开始时刻向所述用户所属的令牌桶中放入所述限流策略对应的令牌;接收用户发送的业务请求,判断是否能够从所述令牌桶中为所述业务请求获取所述令牌;若是,则获取所述令牌并将所述令牌赋予所述业务请求,以执行具有令牌的业务请求;若否,则拒绝所述业务请求。2.根据权利要求1所述的分布式限流方法,其特征在于,在所述接收用户发送的接入请求之前,所述分布式限流方法还包括:针对于每个不同的限流等级,为该限流等级对应的限流策略设置所述限流间隔时间、每一限流间隔时间内需要放入所述令牌桶中的令牌的数量和所述用户每次业务请求消耗的令牌的数量。3.根据权利要求2所述的分布式限流方法,其特征在于,所述基于所述用户的请求来源地址,确定该用户所对应的限流策略,包括:基于所述用户的请求来源地址,判断所述用户是否为白名单用户;若否,则基于所述请求来源地址确定所述用户的限流等级,并基于所述限流等级确定该用户所对应的限流策略。4.根据权利要求2所述的分布式限流方法,其特征在于,通过以下步骤判断是否能够从令牌桶中为所述业务请求获取所述令牌:在每一限流间隔时间内,判断所述令牌桶中当前令牌数量是否大于或等于所述业务请求消耗的令牌的数量;若是,则能够从所述令牌桶中为所述业务请求获取所述令牌;若否,则不能从所述令牌桶中为所述业务请求获取所述令牌。5.根据权利要求4所述的分布式限流方法,其特征在于,当判断能够从所述令牌桶中为所述业务请求获取所述令牌时,所述分布式限流方法还包括;确定所述用户在当前限流间隔时间内的令牌消耗数量;在位于当前限流间隔时间之后的下一限流间隔时间的开始时刻,向所述令牌桶中放入所述令牌消耗数量对应的令牌。6.根据权利要求4所述的分布式限流方法,其特征在于,当判断不能从所述令牌桶中为所述业务请求获取所述令牌时,所述分布式限流方法还包括;在位于当前限流间隔时间之后的下一限流间...

【专利技术属性】
技术研发人员:胡云森何渝君王翔舒忠玲
申请(专利权)人:瀚云科技有限公司
类型:发明
国别省市:

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

1