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

技术编号:21957041 阅读:40 留言:0更新日期:2019-08-24 20:34
本公开提供了一种流量控制方法,涉及云计算领域,包括:在接收到业务请求时,判断本地缓存的当前滑动窗口内的第一计数值是否小于预设的第一流控额度,其中,滑动窗口用于表示时间段;若是,按照预设的业务逻辑处理所述业务请求;否则,向全局流控节点发送超额流控请求,以供全局流控节点根据超额流控请求,判断缓存的当前滑动窗口内的第二计数值是否小于预设的第二流控额度;接收全局流控节点在判断出缓存的当前滑动窗口内的第二计数值小于预设的第二流控额度时发送的业务处理指令;基于业务处理指令,按照预设的业务逻辑处理所述业务请求。本公开还提供了流量控制装置及系统、服务器及计算机可读介质。

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.一种流量控制方法,包括:在接收到业务请求时,判断本地缓存的当前滑动窗口内的第一计数值是否小于预设的第一流控额度;其中,所述滑动窗口用于表示时间段;若判断出本地缓存的当前滑动窗口内的第一计数值小于预设的第一流控额度时,按照预设的业务逻辑处理所述业务请求;若判断出本地缓存的当前滑动窗口内的第一计数值大于或等于预设的第一流控额度时,向全局流控节点发送超额流控请求,以供所述全局流控节点根据超额流控请求,判断缓存的当前滑动窗口内的第二计数值是否小于预设的第二流控额度;接收所述全局流控节点在判断出缓存的当前滑动窗口内的第二计数值小于预设的第二流控额度时发送的业务处理指令;基于所述业务处理指令,按照预设的业务逻辑处理所述业务请求。2.根据权利要求1所述的流量控制方法,其中所述滑动窗口包括至少两个子窗口,所述时间段包括至少两个时间周期,每个子窗口对应一个时间周期,每个子窗口对应一个预设的第三流控额度,各子窗口对应的第三流控额度之和等于所述第一流控额度;所述在接收到业务请求时,判断本地缓存的当前滑动窗口内的第一计数值是否小于预设的第一流控额度之前,还包括:在接收到业务请求时,判断本地缓存的当前子窗口内的第三计数值是否小于当前子窗口对应的第三流控额度;其中,本地缓存的当前滑动窗口内的各子窗口的第三计数值之和等于当前滑动窗口内的第一计数值;若判断出本地缓存的当前子窗口内的第三计数值小于当前子窗口对应的第三流控额度时,按照预设的业务逻辑处理所述业务请求;若判断出本地缓存的当前子窗口内的第三计数值大于或等于当前子窗口对应的第三流控额度时,执行所述判断本地缓存的当前滑动窗口内的第一计数值是否小于预设的第一流控额度的步骤。3.根据权利要求2所述的流量控制方法,其中所述若判断出本地缓存的当前子窗口内的第三计数值小于当前子窗口对应的第三流控额度时,按照预设的业务逻辑处理所述业务请求之后,以及所述若判断出本地缓存的当前滑动窗口内的第一计数值小于预设的第一流控额度时,按照预设的业务逻辑处理所述业务请求之后,还包括:将本地缓存的当前子窗口内的第三计数值进行加1处理,更新当前子窗口内的第三计数值和当前滑动窗口内的第一计数值;判断当前子窗口内的第三计数值与当前子窗口对应的已同步值的差值是否大于或等于预设阈值;若判断出当前子窗口内的第三计数值与当前子窗口对应的已同步值的差值大于或等于预设阈值时,向所述全局流控节点发送同步更新计数请求,所述同步更新计数请求包括待同步值,以供所述全局流控节点基于同步更新计数请求,根据缓存的当前子窗口内的第四计数值与所述待同步值之和,更新缓存的当前子窗口内的第四计数值和当前滑动窗口内的第二计数值;其中,所述待同步值等于当前子窗口内的第三计数值和当前子窗口对应的第三流控额度中的最小值与当前子窗口对应的已同步值之差,全局流控节点缓存的当前滑动窗口的各子窗口内的第四计数值之和等于当前滑动窗口内的第二计数值;令本地缓存的当前子窗口对应的已同步值等于当前子窗口内的第三计数值,更新本地缓存的当前子窗口对应的已同步值,并等待接收新的业务请求。4.根据权利要求3所述的流量控制方法,其中所述向所述全局流控节点发送同步更新计数请求之后,还包括:接收所述全局流控节点在更新缓存的当前子窗口内的第四计数值和当前滑动窗口内的第二计数值之后发送的当前滑动窗口内的第二计数值;根据当前滑动窗口内的第二计数值,更新本地缓存的全局剩余流控额度,其中,本地预先缓存的全局剩余流控额度等于本地预先缓存的第二流控额度与当前滑动窗口内的第二计数值之差。5.根据权利要求2所述的流量控制方法,其中所述全局流控节点在发送业务处理指令之后,将缓存的当前子窗口内的第四计数值进行加1处理,以更新当前子窗口内的第四计数值和当前滑动窗口内的第二计数值。6.根据权利要求5所述的流量控制方法,其中所述流量控制方法还包括:接收所述全局流控节点在更新缓存的当前子窗口内的第四计数值和当前滑动窗口内的第二计数值之后发送的当前滑动窗口内的第二计数值;根据所述当前滑动窗口内的第二计数值,更新本地预先缓存的全局剩余流控额度,其中,本地预先缓存的全局剩余流控额度等于本地缓存的第二流控额度与当前滑动窗口内的第二计数值之差;将本地缓存的当前子窗口内的第三计数值进行加1处理,更新当前子窗口内的第三计数值和当前子窗口内的第一计数值,并等待接收新的业务请求。7.根据权利要求4或6所述的流量控制方法,其中所述在接收到业务请求时,判断本地缓存的当前子窗口内的第三计数值是否小于当前子窗口对应的第三流控额度之前,还包括:在接收到业务请求时,判断本地缓存的当前滑动窗口内的第一计数值与当前滑动窗口对应的已同步值之差,是否小于本地缓存的全局剩余流控额度;若判断出本地缓存的当前滑动窗口内的第一计数值与当前滑动窗口对应的已同步值之差,小于本地缓存的全局剩余流控额度时,执行判断本地缓存的当前子窗口内的第三计数值是否小于当前子窗口对应的第三流控额度的步骤。8.一种流量控制装置,包括:接收模块,用于接收业务请求;判断模块,用于在所述接收模块接收到业务请求时,判断本地缓存的当前滑动窗口内的第一计数值是否小于预设的第一流控额度;其中,所述滑动窗口用于表示时间段;业务处理模块,用于在所述判断模块判断出本地缓存的当前滑动窗口内的第一计数值小于预设的第一流控额度时,按照预设的业务逻辑处理所述业务请求;发送模块,用于在...

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

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

1