流量控制方法及装置、系统、服务器、计算机可读介质制造方法及图纸

技术编号:22060314 阅读:54 留言:0更新日期:2019-09-07 17:49
本公开提供了一种流量控制方法,涉及云计算领域,包括:在接收到业务请求时,判断本地令牌桶中当前存在的令牌数量是否大于或等于1;若判断出本地令牌桶中当前存在的令牌数量小于1时,向全局流控节点发送超额流控请求,以供所述全局流控节点根据超额流控请求,判断对应的全局令牌桶中当前存在的令牌数量是否大于或等于1;接收所述全局流控节点在判断出对应的全局令牌桶中当前存在的令牌数量大于或等于1时反馈的业务处理指令;基于所述业务处理指令,按照预设的业务逻辑处理所述业务请求。本公开还提供了流量控制装置及系统、服务器及计算机可读介质。

Flow Control Method and Device, System, Server, Computer Readable Media

【技术实现步骤摘要】
流量控制方法及装置、系统、服务器、计算机可读介质
本公开实施例涉及通信
,特别涉及流量控制方法及装置、系统、服务器、计算机可读介质。
技术介绍
产品业务对外提供的服务,通常部署于多个服务器上,为了避免用户恶意攻击,或者避免用户的使用量超出系统能够承载的范围,通常都需要针对服务接口进行流量控制,如限制单个用户调用单个接口时,一秒钟只能调用10次(10qps),尤其在用户按照流量付费的场景下。在单机环境下实现流量控制是非常简单的,但在分布式环境下,兼顾性能、准确性和可用性是实现流量控制的难点。目前,在分布式环境下,通常有两种实现流量控制的方式:1、通过redis进行全局流量控制计算,具体在redis中执行lua脚本实现滑动窗口或者令牌桶等算法,从而实现分布式环境的流量控制。2、按当前服务实例(如服务器)的个数平均分配每个服务实例上的流控限额,将分布式问题转化为单机问题进行流量控制。如当前接口总流控限额是100qps,服务部署有5个服务实例,则每个服务实例上对应的接口的流控限额为100/5=20qps,每个服务实例通过在本地采用单机的滑动窗口算法或者令牌桶算法,以20qps为限制进行本文档来自技高网...

【技术保护点】
1.一种流量控制方法,包括:在接收到业务请求时,判断本地令牌桶中当前存在的令牌数量是否大于或等于1;若判断出本地令牌桶中当前存在的令牌数量小于1时,向全局流控节点发送超额流控请求,以供所述全局流控节点根据超额流控请求,判断对应的全局令牌桶中当前存在的令牌数量是否大于或等于1;接收所述全局流控节点在判断出对应的全局令牌桶中当前存在的令牌数量大于或等于1时反馈的业务处理指令;基于所述业务处理指令,按照预设的业务逻辑处理所述业务请求。

【技术特征摘要】
1.一种流量控制方法,包括:在接收到业务请求时,判断本地令牌桶中当前存在的令牌数量是否大于或等于1;若判断出本地令牌桶中当前存在的令牌数量小于1时,向全局流控节点发送超额流控请求,以供所述全局流控节点根据超额流控请求,判断对应的全局令牌桶中当前存在的令牌数量是否大于或等于1;接收所述全局流控节点在判断出对应的全局令牌桶中当前存在的令牌数量大于或等于1时反馈的业务处理指令;基于所述业务处理指令,按照预设的业务逻辑处理所述业务请求。2.根据权利要求1所述的流量控制方法,其中所述在接收到业务请求时,判断本地令牌桶中当前存在的令牌数量是否大于或等于1之前,还包括:在接收到业务请求时,判断本地预先缓存的全局令牌桶中当前存在的令牌数量是否大于或等于1;若判断出本地预先缓存的全局令牌桶中当前存在的令牌数量大于或等于1时,执行判断本地令牌桶中当前存在的令牌数量是否大于或等于1的步骤;若判断出本地预先缓存的全局令牌桶中当前存在的令牌数量小于1时,返回业务请求失败消息。3.根据权利要求2所述的流量控制方法,其中所述在接收到业务请求时,判断本地令牌桶中当前存在的令牌数量是否大于或等于1之后,还包括:若判断出本地令牌桶中当前存在的令牌数量大于或等于1时,按照预设的业务逻辑处理所述业务请求;将本地令牌桶中当前存在的令牌数量进行减1处理。4.根据权利要求3所述的流量控制方法,其中所述将本地令牌桶中当前存在的令牌数量进行减1处理之后,还包括:将预设的业务请求计数器的当前计数值进行加1处理;判断所述业务请求计数器的当前计数值是否大于或等于第一预设阈值;若判断出所述业务请求计数器的当前计数值大于或等于第一预设阈值时,向所述全局流控节点发送令牌同步扣除请求,所述令牌同步扣除请求包括待扣除令牌数,所述待扣除令牌数等于所述业务请求计数器的当前计数值,以供所述全局流控节点基于令牌同步扣除请求,根据对应的全局令牌桶中当前存在的令牌数量与待扣除令牌数的差值,更新全局令牌桶中当前存在的令牌数量;将所述业务请求计数器的当前计数值进行清零处理。5.根据权利要求2所述的流量控制方法,其中所述全局流控节点在反馈业务处理指令之后,将对应的全局令牌桶中当前存在的令牌数量进行减1处理,以更新全局令牌桶中当前存在的令牌数量。6.根据权利要求4或5所述的流量控制方法,其中在所述全局流控节点更新全局令牌桶中当前存在的令牌数量之后,所述流量控制方法还包括:接收所述全局流控节点在更新全局令牌桶中当前存在的令牌数量之后发送的全局令牌桶中当前存在的令牌数量;更新本地预先缓存的全局令牌桶中当前存在的令牌数量。7.根据权利要求4所述的流量控制方法,其中所述向所述全局流控节点发送令牌同步扣除请求之后,还包括:将预设的同步请求计数器的当前计数值进行加1处理;判断所述同步请求计数器的当前计数值是否大于或等于第二预设阈值;若判断出所述同步请求计数器的当前计数值大于或等于第二预设阈值时,阻塞新的业务请求,直至所述全局流控节点完成令牌同步扣除。8.一种流量控制装置,包括:接收模块,用于接收业务请求;判断模块,用于在所述接收模块接收到业务请求时,判断本地令牌桶中当前存在的令牌数量是否大于或等于1;发送模块,用于若判断模块判断出本地令牌桶中当前存在的令牌数量小于1时,向全局流控节点发送超额流控请求,以供所述全局流控节点根据超额流控请求,判断对应的全局令牌桶中当前存在的令牌数量是否大于或等于1;业务处理模块,用于接收所述全局流控节点在判断出对应的全局令牌桶中当前存在的令牌数量大于或等于1时反馈的业务处理指令;基于所述业务处...

【专利技术属性】
技术研发人员:吴金霖孙芳媛
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:北京,11

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

1