限流方法、装置及分布式限流系统制造方法及图纸

技术编号:38224395 阅读:15 留言:0更新日期:2023-07-25 17:55
本发明专利技术实施例涉及一种限流方法、装置及分布式限流系统,方法包括:分布式限流系统中的任一分布式限流服务节点接收到限流请求,从中心服务器上的全局令牌桶中获取令牌,其中,所述中心服务器按照预设的填充速率向所述全局令牌桶中填充令牌,且所述全局令牌桶被设置有令牌数量上限;若从所述全局令牌桶中获取到令牌,则允许客户端向服务提供方发送访问请求;若从所述全局令牌桶中未获取到令牌,则不允许客户端向服务提供方发送访问请求。由此,可以实现基于令牌桶算法的分布式限流,并避免产生流量突刺的问题。流量突刺的问题。流量突刺的问题。

【技术实现步骤摘要】
限流方法、装置及分布式限流系统


[0001]本专利技术实施例涉及互联网
,尤其涉及一种限流方法、装置及分布式限流系统。

技术介绍

[0002]限流是针对服务请求数量的一种保护机制,当请求数量超过服务的处理能力时,可自动丢弃新来的请求或者排队等待。
[0003]现有技术中,在分布式限流系统中,采用计数器固定时间窗口的算法,该算法的原理是对一段固定时间窗口内的访问请求进行计数,如果该固定时间窗口内的访问请求数超过了设定的阈值,则拒绝当前接收到的访问请求通过;如果该固定时间窗口内的访问请求数未超过设定的阈值,则允许当前接收到的访问请求通过,并将计数器加1。当固定时间窗口结束时,重置上述计数器为0。
[0004]然而,采用计数器固定时间窗口的算法进行分布式限流很可能会出现流量突刺现象。

技术实现思路

[0005]鉴于此,为解决现有技术中采用计数器固定时间窗口的算法进行分布式限流很可能会出现流量突刺现象的技术问题,本专利技术实施例提供一种限流方法、装置及分布式限流系统。
[0006]第一方面,本专利技术实施例提供一种限流方法,应用于第一分布式限流服务节点,所述第一分布式限流服务节点为分布式限流系统中的任一分布式限流服务节点,所述分布式限流系统还包括中心服务器,所述方法包括:
[0007]接收来自客户端的限流请求,其中,所述客户端在向服务提供方发送访问请求之前,向所述分布式限流系统发送所述限流请求;
[0008]从所述中心服务器上的全局令牌桶中获取令牌,其中,所述中心服务器按照预设的填充速率向所述全局令牌桶中填充令牌,且所述全局令牌桶被设置有令牌数量上限;
[0009]在从所述全局令牌桶中获取到令牌的情况下,允许所述客户端向所述服务提供方发送所述访问请求;
[0010]在从所述全局令牌桶中未获取到令牌的情况下,不允许所述客户端向所述服务提供方发送所述访问请求。
[0011]在一个可能的实施方式中,在所述从中心服务器上的全局令牌桶中获取令牌之前,还包括:
[0012]从本节点上的子令牌桶中获取令牌;
[0013]在从本节点上的子令牌桶中未获取到令牌到情况下,执行所述从中心服务器上的全局令牌桶中获取令牌的步骤;
[0014]所述从中心服务器上的全局令牌桶中获取令牌,包括:
[0015]从中心服务器上的全局令牌桶中获取N个令牌,所述N为大于1的自然数;
[0016]所述方法还包括:
[0017]在从中心服务器上的全局令牌桶中获取到M个令牌的情况下,将其中的M

1个令牌放入所述本节点上的子令牌桶,所述M为小于或等于N的正整数。
[0018]在一个可能的实施方式中,所述方法还包括:
[0019]在从本节点上的子令牌桶中获取到令牌的情况下,允许所述客户端向所述服务提供方发送所述访问请求。
[0020]在一个可能的实施方式中,所述方法还包括:
[0021]在从中心服务器上的全局令牌桶中未获取到令牌的情况下,向第二分布式限流服务节点发送转发请求,所述第二分布式限流服务节点包括所述分布式限流系统中除所述第一分布式限流服务节点以外的其他任一分布式限流服务节点;
[0022]接收来自所述第二分布式限流服务节点的指示消息,所述指示消息用于指示所述第二分布式限流服务节点上的子令牌桶中具有令牌;
[0023]向所述第二分布式限流服务节点转发所述限流请求。
[0024]在一个可能的实施方式中,所述方法还包括:
[0025]接收来自所述第二分布式限流服务节点的转发请求;
[0026]响应于所述转发请求,确定本节点上的子令牌桶中是否具有令牌;
[0027]在确定本节点上的子令牌桶中具有令牌的情况下,向所述第二分布式限流服务节点发送所述指示消息。
[0028]在一个可能的实施方式中,所述方法还包括:
[0029]在预设的超时时间内未接收到来自所述第二分布式限流服务节点的指示消息的情况下,不允许所述客户端向所述服务提供方发送所述访问请求。
[0030]在一个可能的实施方式中,所述填充速率为待限流服务的限值速率。
[0031]第二方面,本专利技术实施例提供一种限流方法,应用于客户端,所述方法包括:
[0032]向分布式限流系统发送限流请求,所述分布式限流系统包括中心服务器、多个限流服务节点,以使所述分布式限流系统中的第一分布式限流服务节点接收到所述限流请求,并从所述中心服务器上的全局令牌桶中获取令牌,其中,所述第一分布式限流服务节点为分布式限流系统中的任一分布式限流服务节点,所述中心服务器按照预设的填充速率向所述全局令牌桶中填充令牌,且所述全局令牌桶被设置有令牌数量上限;
[0033]在确定所述第一分布式限流服务节点从所述全局令牌桶中获取到令牌的情况下,向服务提供方发送访问请求;
[0034]在确定所述第一分布式限流服务节点未从所述全局令牌桶中获取到令牌的情况下,拒绝向服务提供方发送所述访问请求。
[0035]第三方面,本专利技术提供一种分布式限流系统,所述分布式限流系统包括:
[0036]中心服务器,所述中心服务器上设置有全局令牌桶,所述中心服务器按照预设的填充速率向所述全局令牌桶中填充令牌,且所述全局令牌桶被设置有令牌数量上限;
[0037]多个分布式限流服务节点,所述分布式限流服务节点接收到来自客户端的限流请求,从中心服务器上的全局令牌桶中获取令牌;在从所述全局令牌桶中获取到令牌的情况下,则允许所述客户端向所述服务提供方发送所述限流请求对应的访问请求;在从所述全
局令牌桶中未获取到令牌的情况下,不允许所述客户端向所述服务提供方发送所述访问请求。
[0038]第四方面,本专利技术提供一种限流装置,应用于第一分布式限流服务节点,所述第一分布式限流服务节点为分布式限流系统中的任一分布式限流服务节点,所述分布式限流系统还包括中心服务器,所述装置包括:
[0039]接收模块,用于接收来自客户端的限流请求,其中,所述客户端在向服务提供方发送访问请求之前,向所述分布式限流系统发送所述限流请求;
[0040]令牌获取模块,用于从所述中心服务器上的全局令牌桶中获取令牌,其中,所述中心服务器按照预设的填充速率向所述全局令牌桶中填充令牌,且所述全局令牌桶被设置有令牌数量上限;
[0041]限流模块,用于在从所述全局令牌桶中获取到令牌的情况下,允许所述客户端向所述服务提供方发送所述访问请求;在从所述全局令牌桶中未获取到令牌的情况下,不允许所述客户端向所述服务提供方发送所述访问请求。
[0042]第五方面,本专利技术提供一种限流装置,应用于客户端,所述装置包括:
[0043]请求发送模块,用于向分布式限流系统发送限流请求,所述分布式限流系统包括中心服务器、多个限流服务节点,以使所述分布式限流系统中的第一分布式限流服务节点接收到所述限流请求,并从所述中心服务器上的全局令牌桶中获取令牌,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种限流方法,其特征在于,应用于第一分布式限流服务节点,所述第一分布式限流服务节点为分布式限流系统中的任一分布式限流服务节点,所述分布式限流系统还包括中心服务器,所述方法包括:接收来自客户端的限流请求,其中,所述客户端在向服务提供方发送访问请求之前,向所述分布式限流系统发送所述限流请求;从所述中心服务器上的全局令牌桶中获取令牌,其中,所述中心服务器按照预设的填充速率向所述全局令牌桶中填充令牌,且所述全局令牌桶被设置有令牌数量上限;在从所述全局令牌桶中获取到令牌的情况下,允许所述客户端向所述服务提供方发送所述访问请求;在从所述全局令牌桶中未获取到令牌的情况下,不允许所述客户端向所述服务提供方发送所述访问请求。2.根据权利要求1所述的方法,其特征在于,在从所述中心服务器上的全局令牌桶中获取令牌之前,还包括:从本节点上的子令牌桶中获取令牌;在从本节点上的子令牌桶中未获取到令牌到情况下,执行所述从中心服务器上的全局令牌桶中获取令牌的步骤;所述从中心服务器上的全局令牌桶中获取令牌,包括:从中心服务器上的全局令牌桶中获取N个令牌,所述N为大于1的自然数;所述方法还包括:在从中心服务器上的全局令牌桶中获取到M个令牌的情况下,将其中的M

1个令牌放入所述本节点上的子令牌桶,所述M为小于或等于N的正整数。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:在从本节点上的子令牌桶中获取到令牌的情况下,允许所述客户端向所述服务提供方发送所述访问请求。4.根据权利要求2所述的方法,其特征在于,所述方法还包括:在从中心服务器上的全局令牌桶中未获取到令牌的情况下,向第二分布式限流服务节点发送转发请求,所述第二分布式限流服务节点包括所述分布式限流系统中除所述第一分布式限流服务节点以外的其他任一分布式限流服务节点;接收来自所述第二分布式限流服务节点的指示消息,所述指示消息用于指示所述第二分布式限流服务节点上的子令牌桶中具有令牌;向所述第二分布式限流服务节点转发所述限流请求。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:接收来自所述第二分布式限流服务节点的转发请求;响应于所述转发请求,确定本节点上的子令牌桶中是否具有令牌;在确定本节点上的子令牌桶中具有令牌的情况下,向所述第二分布式限流服务节点发送所述指示消息。6.根据权利要求4所述的方法,其特征在于,所述方法还包括:在预设的超时时间内未接收到来自所述第二分布式限流服务节点的指示消息的情况下,不允许所述客户端向所述服务提供方发送所述访问请求。
7.根据权利要求1~6任一所述的方法,其特征在于,所述填充速率为待限流服务的限值速率。8.一种限流方法,其特征在于,应用于客户端,所述方法包括:向分布式限流系统发送限流请求,所述分布式限流系统包括中心服务器、多个限流服务节点,以使所述分布式限流系统中的第一分布式限流服务节点接收到所述限流请求,并从所述中心服务器上的全局令牌桶中获取令牌,其中,所述第一分布式限流服务节点为分...

【专利技术属性】
技术研发人员:曹迪
申请(专利权)人:北京金山云网络技术有限公司
类型:发明
国别省市:

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

1