CN109936511A - 一种令牌获取方法、装置、服务器、终端设备及介质 - Google Patents

一种令牌获取方法、装置、服务器、终端设备及介质 Download PDF

Info

Publication number
CN109936511A
CN109936511A CN201711376057.1A CN201711376057A CN109936511A CN 109936511 A CN109936511 A CN 109936511A CN 201711376057 A CN201711376057 A CN 201711376057A CN 109936511 A CN109936511 A CN 109936511A
Authority
CN
China
Prior art keywords
token
global
user terminal
preset
request
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.)
Granted
Application number
CN201711376057.1A
Other languages
English (en)
Other versions
CN109936511B (zh
Inventor
孙鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kingsoft Cloud Network Technology Co Ltd
Beijing Kingsoft Cloud Technology Co Ltd
Original Assignee
Beijing Kingsoft Cloud Network Technology Co Ltd
Beijing Kingsoft Cloud Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Kingsoft Cloud Network Technology Co Ltd, Beijing Kingsoft Cloud Technology Co Ltd filed Critical Beijing Kingsoft Cloud Network Technology Co Ltd
Priority to CN201711376057.1A priority Critical patent/CN109936511B/zh
Priority to PCT/CN2018/122042 priority patent/WO2019120217A1/zh
Publication of CN109936511A publication Critical patent/CN109936511A/zh
Application granted granted Critical
Publication of CN109936511B publication Critical patent/CN109936511B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例提供了一种令牌获取方法、装置、服务器、终端设备及介质,涉及通信技术领域,其中,该令牌获取方法包括:接收用户终端发送的第一令牌请求;根据该第一令牌请求,确定该用户终端所请求的令牌数量;判断该用户终端是否为预设的需要带宽限制的终端;如果是该预设的需要带宽限制的终端,则从预设的该用户终端对应的特定令牌桶中获取该第一令牌请求该所请求的令牌数量个特定令牌,该特定令牌桶中的令牌数量小于全局令牌桶中的令牌数量;判断是否成功获取该特定令牌;如果获取该特定令牌失败,则拒绝该第一令牌请求;如果成功获取该特定令牌,则从该全局令牌桶中获取该第一令牌请求所请求的令牌数量个全局令牌。

Description

一种令牌获取方法、装置、服务器、终端设备及介质
技术领域
本发明涉及通信技术领域,特别是涉及一种令牌获取方法、装置、服务器、终端设备及介质。
背景技术
随着云存储技术的迅速发展,出现了很多数据存储系统为用户提供数据存储服务。例如:对象存储系统,用户能够与该对象存储系统交互,实现对象的上传和下载等。由于数据存储系统面向的用户众多,而这些用户又共享有限的带宽资源,因此需要对各个用户使用的带宽资源进行限制。
目前,有些数据存储系统,如:对象存储系统,采用了全局令牌桶技术来实现带宽资源限制,该对象存储系统包括前端的服务器和后端的存储系统。
具体的,用户终端在向后端的存储系统发送上传或下载等请求前,为了获得带宽资源,需要先向前端的服务器发送申请令牌的请求;前端的服务器根据该请求,通过预设的全局令牌桶获取令牌,将该令牌分配给用户终端,并通知用户终端;用户终端收到该通知后,用分配的令牌对应的带宽资源与后端的存储系统交互,实现对象的上传或下载。
一般的令牌获取方式可能会存在一个用户一次性获得了全局令牌桶中的所有的令牌,则其他用户无法通过全局令牌桶获得令牌。这样导致其他用户的请求不能及时地获取到全局令牌,影响其他用户的使用,这样可能导致系统长时间处于无法为其他用户提供服务的异常状态。
发明内容
本发明实施例的目的在于提供一种令牌获取方法、装置、服务器、终端设备及介质,以防止系统长时间处于无法为其他用户提供服务的异常状态。具体技术方案如下:
第一方面,本发明实施例提供了一种令牌获取方法,应用于服务器,上述方法包括:接收用户终端发送的第一令牌请求;
根据所述第一令牌请求,确定所述用户终端所请求的令牌数量;
判断所述用户终端是否为预设的需要带宽限制的终端;
如果是所述预设的需要带宽限制的终端,则从预设的所述用户终端对应的特定令牌桶中获取所述第一令牌请求所述所请求的令牌数量个特定令牌,所述特定令牌桶中的令牌数量小于全局令牌桶中的令牌数量;
判断是否成功获取所述特定令牌;
如果获取所述特定令牌失败,则拒绝所述第一令牌请求;
如果成功获取所述特定令牌,则从所述全局令牌桶中获取所述第一令牌请求所请求的令牌数量个全局令牌。
可选的,所述第一令牌请求中包含所述用户终端的标识和带宽需求;
所述根据所述第一令牌请求,确定所述用户终端所请求的令牌数量,包括:
根据所述第一令牌请求中所述带宽需求对应的带宽,计算所述所请求的令牌数量。
可选的,所述判断所述用户终端是否为预设的需要带宽限制的终端,包括:
判断预先记录的预设的需要带宽限制的标识中,是否包含所述用户终端的标识。
可选的,所述方法还包括:
如果所述用户终端不为所述预设的需要带宽限制的终端,则判断所述第一令牌请求所述所请求的令牌数量是否大于或等于所述全局令牌桶中的全局令牌的总数量;
如果大于或等于所述全局令牌桶中的所述全局令牌的总数量,则将所述用户终端的标识记录为预设的需要带宽限制的标识,为所述用户终端设置对应的特定令牌桶,并拒绝所述第一令牌请求;
如果小于所述全局令牌桶中的所述全局令牌的总数量,则直接从所述全局令牌桶中获取所述所请求的令牌个全局令牌。
可选的,所述方法还包括:
获取预设时间内,所有用户终端的请求信息,其中,所述预设时间内,所有用户终端的令牌请求次数及令牌请求失败次数;
在判断出不存在惩罚用户终端时,根据所述预设时间内,所有用户终端的请求信息,将令牌请求次数最多的用户终端确定为惩罚用户终端;
判断所述预设时间内,所有用户终端的请求信息中的令牌请求失败次数是否等于零;
如果所述预设时间内,所有用户终端的请求信息中的令牌请求失败次数大于零,则将所述惩罚用户终端对应特定令牌桶中特定令牌的总数量设置为第一预设令牌数量,所述第一预设令牌数量小于全局令牌桶中的令牌数量;
获取在所述预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息,其中,所述在所述预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息包括:所有用户终端的令牌请求次数及令牌请求失败次数;
判断所述在所述预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息中的令牌请求失败次数是否等于零;
在判定存在所述惩罚用户终端且所述在所述预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息中的令牌请求失败次数等于零,则基于所述第一预设令牌数量,增大所述惩罚用户终端对应特定令牌桶的特定令牌数量,得到增大后的所述特定令牌桶的特定令牌的总数量,所述增大后的所述特定令牌桶的特定令牌的总数量小于全局令牌桶中的令牌数量。
可选的,所述方法还包括:
判断是否成功从全局令牌桶中获取所述第一令牌请求所述所请求的令牌数量个全局令牌;
如果成功获取所述全局令牌,则向所述用户终端发送所述第一令牌请求所述所请求的令牌数量个全局令牌;
如果获取所述全局令牌失败,则按照预设的拒绝策略拒绝所述第一令牌请求;或者
等待第一预设时长,并在等待所述第一预设时长达到时,返回判断是否成功从全局令牌桶中获取所述第一令牌请求所请求的令牌数量个全局令牌的步骤继续执行,如果获取所述全局令牌失败,则按照预设的拒绝策略拒绝所述第一令牌请求,所述全局令牌桶每隔第二预设时长,增加预设数量个全局令牌。
可选的,所述如果获取所述全局令牌失败,则按照预设的拒绝策略拒绝所述第一令牌请求,包括:
获取当前时间处理所有用户终端的第一令牌请求对应的工作线程数量;
若所述所有用户终端的第一令牌请求对应的工作线程数量达到第一预设数量,则拒绝所有第一令牌请求,释放与所有第一令牌请求对应的工作线程;
若所述所有用户终端的第一令牌请求对应的工作线程数量达到第二预设数量,且未达到第一预设数量,则
判断所记录的所述惩罚用户终端中,是否包含所述用户终端;
如果包含,则拒绝所述第一令牌请求,并释放该第一令牌请求对应的工作线程;
如果不包含,则等待所述第一预设时长;
若所述所有用户终端的第一令牌请求对应的工作线程数量未达到第二预设数量,则等待所述第一预设时长。
可选的,所述如果获取所述全局令牌失败,则按照预设的拒绝策略拒绝所述第一令牌请求,或者等待第一预设时长包括:
如果获取所述全局令牌失败,则按照预设的拒绝策略产生,拒绝所述第一令牌请求的拒绝指令或等待所述第一预设时长的等待指令;
将所述拒绝指令或者所述等待指令发送至用户终端。
第二方面,本发明实施例提供了一种令牌获取方法,应用于终端设备,上述方法包括:
发送用户终端的第一令牌请求至服务器,所述第一令牌请求用于通过服务器根据所述第一令牌请求,确定所述用户终端所请求的令牌数量;判断所述用户终端是否为预设的需要带宽限制的终端;如果是所述预设的需要带宽限制的终端,则从预设的所述用户终端对应的特定令牌桶中获取所述第一令牌请求所述所请求的令牌数量个特定令牌,所述特定令牌桶中的令牌数量小于全局令牌桶中的令牌数量;判断是否成功获取所述特定令牌;如果获取所述特定令牌失败,则拒绝所述第一令牌请求;如果成功获取所述特定令牌,则从所述全局令牌桶中获取所述第一令牌请求所请求的令牌数量个全局令牌;
接收由所述服务器针对所述第一令牌请求发送的反馈信息。
可选的,所述反馈信息包括:成功获取所述所请求的令牌数量个全局令牌;
所述方法还包括:
利用所述所请求的令牌数量个全局令牌,执行在数据存储系统中的写入或读出。
第三方面,本发明实施例提供了一种令牌获取装置,应用于服务器,包括:
第一接收模块,用于接收用户终端发送的第一令牌请求;
第一确定模块,用于根据所述第一令牌请求,确定所述用户终端所请求的令牌数量;
第一判断模块,用于判断所述用户终端是否为预设的需要带宽限制的终端;
第一获取模块,用于如果是所述预设的需要带宽限制的终端,则从预设的所述用户终端对应的特定令牌桶中获取所述第一令牌请求所述所请求的令牌数量个特定令牌,所述特定令牌桶中的令牌数量小于全局令牌桶中的令牌数量;
第二判断模块,用于判断是否成功获取所述特定令牌;
第一拒绝模块,用于如果获取所述特定令牌失败,则拒绝所述第一令牌请求;
第二获取模块,用于如果成功获取所述特定令牌,则从所述全局令牌桶中获取所述第一令牌请求所请求的令牌数量个全局令牌。
可选的,所述第一令牌请求中包含所述用户终端的标识和带宽需求;
所述第一确定模块具体包括:
根据所述第一令牌请求中所述带宽需求对应的带宽,计算所述所请求的令牌数量。
可选的,所述第一判断模块具体包括:判断预先记录的预设的需要带宽限制的标识中,是否包含所述用户终端的标识。
可选的,所述令牌获取装置还包括:
第三判断模块,用于如果所述用户终端不为所述预设的需要带宽限制的终端,则判断所述第一令牌请求所述所请求的令牌数量是否大于或等于所述全局令牌桶中的全局令牌的总数量;
第一处理模块,用于如果大于或等于所述全局令牌桶中的所述全局令牌的总数量,则将所述用户终端的标识记录为预设的需要带宽限制的标识,为所述用户终端设置对应的特定令牌桶,并拒绝所述第一令牌请求;
第三获取模块,用于如果小于所述全局令牌桶中的所述全局令牌的总数量,则直接从所述全局令牌桶中获取所述所请求的令牌个全局令牌。
可选的,所述令牌获取装置还包括:
第四获取模块,用于获取预设时间内,所有用户终端的请求信息,其中,所述预设时间内,所有用户终端的令牌请求次数及令牌请求失败次数;
第二确定模块,用于在判断出不存在惩罚用户终端时,根据所述预设时间内,所有用户终端的请求信息,将令牌请求次数最多的用户终端确定为惩罚用户终端;
第四判断模块,用于判断所述预设时间内,所有用户终端的请求信息中的令牌请求失败次数是否等于零;
设置模块,用于如果所述预设时间内,所有用户终端的请求信息中的令牌请求失败次数大于零,则将所述惩罚用户终端对应特定令牌桶中特定令牌的总数量设置为第一预设令牌数量,所述第一预设令牌数量小于全局令牌桶中的令牌数量;
第五获取模块,用于获取在所述预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息,其中,所述在所述预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息包括:所有用户终端的令牌请求次数及令牌请求失败次数;
第五判断模块,用于判断所述在所述预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息中的令牌请求失败次数是否等于零;
增大模块,用于在判定存在所述惩罚用户终端且所述在所述预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息中的令牌请求失败次数等于零,则基于所述第一预设令牌数量,增大所述惩罚用户终端对应特定令牌桶的特定令牌数量,得到增大后的所述特定令牌桶的特定令牌的总数量,所述增大后的所述特定令牌桶的特定令牌的总数量小于全局令牌桶中的令牌数量。
可选的,所述令牌获取装置还包括:
第六判断模块,用于判断是否成功从全局令牌桶中获取所述第一令牌请求所述所请求的令牌数量个全局令牌;
第一发送模块,用于如果成功获取所述全局令牌,则向所述用户终端发送所述第一令牌请求所述所请求的令牌数量个全局令牌;
第二拒绝模块,用于如果获取所述全局令牌失败,则按照预设的拒绝策略拒绝所述第一令牌请求,或者等待第一预设时长;
第二处理模块,用于在等待所述第一预设时长达到时,则返回判断是否成功从全局令牌桶中获取所述第一令牌请求所述所请求的令牌数量个全局令牌的步骤继续执行,该全局令牌桶每隔第二预设时长,增加预设数量个全局令牌。
可选的,所述第二处理模块,具体包括:
获取当前时间处理所有用户终端的第一令牌请求对应的工作线程数量;
若所述所有用户终端的第一令牌请求对应的工作线程数量达到第一预设数量,则拒绝所有第一令牌请求,释放与所有第一令牌请求对应的工作线程;
若所述所有用户终端的第一令牌请求对应的工作线程数量达到第二预设数量,且未达到第一预设数量,则
判断所记录的所述惩罚用户终端中,是否包含所述用户终端;
如果包含,则拒绝所述第一令牌请求,并释放该第一令牌请求对应的工作线程;
如果不包含,则等待第一预设时长;
若所述所有用户终端的第一令牌请求对应的工作线程数量未达到第二预设数量,则等待第一预设时长。
可选的,所述第二拒绝模块,具体用于:
如果获取所述全局令牌失败,则按照预设的拒绝策略产生,拒绝所述第一令牌请求的拒绝指令或等待第一预设时长的等待指令;
将所述拒绝指令或者所述等待指令发送至用户终端。
第四方面,本发明实施例提供了一种令牌获取装置,应用于终端设备,包括:
第三发送模块,用于发送用户终端的第一令牌请求至服务器,所述第一令牌请求用于通过服务器根据所述第一令牌请求,确定所述用户终端所请求的令牌数量;判断所述用户终端是否为预设的需要带宽限制的终端;如果是所述预设的需要带宽限制的终端,则从预设的所述用户终端对应的特定令牌桶中获取所述第一令牌请求所述所请求的令牌数量个特定令牌,所述特定令牌桶中的令牌数量小于全局令牌桶中的令牌数量;判断是否成功获取所述特定令牌;如果获取所述特定令牌失败,则拒绝所述第一令牌请求;如果成功获取所述特定令牌,则从所述全局令牌桶中获取所述第一令牌请求所请求的令牌数量个全局令牌。
第二接收模块,用于接收由所述服务器针对所述第一令牌请求发送的反馈信息。
可选的,所述反馈信息包括:成功获取所述所请求的令牌数量个全局令牌;
所述令牌获取装置还包括:
执行模块,用于利用所述所请求的令牌数量个全局令牌,执行在数据存储系统中的写入或读出。
第五方面,本发明实施例提供了一种服务器包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序,实现第一方面所述的方法步骤。
第六方面,本发明实施例提供了一种终端设备包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序,实现第二方面所述的方法步骤。
第七方面,本发明实施例提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的方法步骤。
第八方面,本发明实施例提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第二方面所述的方法步骤。
第九方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法步骤。
第十方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第二方面所述的方法步骤。
第十一方面,本发明实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法步骤。
第十二方面,本发明实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述第二方面所述的方法步骤。
本发明实施例提供的一种令牌获取方法、装置、服务器、终端设备及介质,接收用户终端发送的第一令牌请求;根据第一令牌请求,确定用户终端所请求的令牌数量;判断用户终端是否为预设的需要带宽限制的终端;如果是预设的需要带宽限制的终端,则从预设的用户终端对应的特定令牌桶中获取所请求的令牌数量个特定令牌,特定令牌桶中的令牌数量小于全局令牌桶中的令牌数量;判断是否成功获取特定令牌;如果成功获取特定令牌,则从全局令牌桶中获取所请求的令牌数量个全局令牌。
对需要带宽限制的用户终端从用户终端对应的特定令牌桶成功获取特定令牌,再从全局令牌桶中获取全局令牌,这样限制该用户终端直接从全局令牌桶中获取令牌;由于该特定令牌桶中的令牌数量小于全局令牌桶中的令牌数量,这样该用户终端无法一次性从全局令牌桶中获得所有的全局令牌,从而保证除该用户终端以外的其他用户终端可以从全局令牌桶中请求令牌,防止系统长时间处于无法为其他用户提供服务的异常状态。
当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例应用于服务器的令牌获取方法的第一种流程示意图;
图2为本发明实施例的应用于服务器的令牌获取方法的第二种流程示意图;
图3为本发明实施例的令牌获取方法中对惩罚用户终端进行奖惩的实现流程示意图;
图4为本发明实施例应用于终端设备侧的令牌获取方法的流程示意图;
图5为本发明实施例的应用于服务器的令牌获取装置的结构示意图;
图6为本发明实施例的应用于终端设备的令牌获取装置的结构示意图;
图7为本发明实施例的服务器的结构示意图;
图8为本发明实施例的终端设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有的实现方式,虽然实现了对用户使用的带宽资源进行限制,然而本申请发明人在实现本发明的过程中,发现现有技术对用户使用的带宽资源进行限制的方式,会出现如下问题:
如果一个用户一次性获得了全局令牌桶中的所有的令牌,则其他用户无法通过全局令牌桶获得令牌,导致其他用户的请求被拒绝,或者,其他用户的请求需要等待预设时长,在预设时长内全局令牌桶自动补给令牌,在全局令牌桶补给后满足该其他用户的请求时,其他用户再通过上述请求从全局令牌桶获得令牌,这样其他用户的请求可能等待全局令牌桶补给令牌的时间过长,从而可能导致系统长时间处于无法为其他用户提供服务的异常状态。
基于现有技术存在的技术问题,发明人考虑到采用本发明实施例提供一种令牌获取方法、装置、服务器、终端设备及介质,通过需要带宽限制的用户终端,从用户终端对应的特定令牌桶成功获取特定令牌,再从全局令牌桶中获取全局令牌,这样限制该用户终端直接从全局令牌桶中获取令牌;由于该特定令牌桶中的令牌数量小于全局令牌桶中的令牌数量,这样该用户终端无法一次性从全局令牌桶中获得所有的全局令牌,从而保证除该用户终端以外的其他用户终端可以从全局令牌桶中请求令牌,防止系统长时间处于无法为其他用户提供服务的异常状态。
为便于理解,首先介绍一下,本发明实施例中特定令牌桶和全局令牌桶。特定令牌桶和全局令牌桶可以统称为令牌桶。令牌桶可以看作是一个存放预设数量令牌的容器。令牌桶具有令牌桶控制机制,该控制机制可以按照设定速度或预设频率向桶中放置令牌,如果该令牌桶中的令牌不被获取,或者被获取的速度小于产生的速度,令牌就会不断地增多,直到把令牌桶填满。当令牌桶中令牌超出令牌桶的总令牌数量时,多出的令牌会溢出该令牌桶,这样令牌桶中令牌不再增加。
令牌桶的这种控制机制,可以实现带宽限制。也就是,用户请求从一个令牌桶中申请令牌,只有令牌申请成功才能进行后续操作,如果令牌申请失败,则需要等待或者被告知申请失败。这样达到全局带宽限制的作用。
基于对特定令牌桶和全局令牌桶的介绍,下面对本发明实施例所提供的令牌获取方法进行介绍。
本发明实施例针对服务器所提供的令牌获取方法,可以应用于数据存储系统的服务器。
第一方面,为了避免一个用户终端一次性从全局令牌桶中获得所有的全局令牌,保证除该用户终端以外的其他用户终端可以从全局令牌桶中请求令牌,防止系统长时间处于无法为其他用户提供服务的异常状态,从服务器的角度,本发明实施例提供了一种令牌获取方法。
如图1所示,本发明实施例所提供的一种令牌获取方法,应用于服务器,该方法可以包括如下步骤:
步骤101,接收用户终端发送的第一令牌请求。
在进入上述数据存储系统之前可以通过用户名和密码验证登录。以保证该用户名和用户密码,与预先存储用户信息的数据库中的用户名和用户密码相匹配,保护该用户的隐私。
用户终端可以为用户预先定制固定流量或者用户使用计费流量的终端设备,也可以为不同品牌类型的终端设备。任何可以实现本发明实施例的用户终端均属于本发明实施例的保护范围。
步骤102,根据该第一令牌请求,确定该用户终端所请求的令牌数量。
在一种具体实施例中,第一令牌请求可以包括请求的所请求的令牌数量。上述步骤102确定该用户终端所请求的令牌数量可以直接从第一令牌请求中获得所需的所请求的令牌数量,方便快捷。
在其他具体实施例中,上述第一令牌请求中包含该用户终端的标识和带宽需求;上述步骤102可以通过如下步骤,确定该用户终端所请求的令牌数量:
先根据第一令牌请求中带宽需求对应的带宽,计算该用户终端所请求的令牌数量,然后本步骤获取该计算所得到的所请求的令牌数量。这样接收到用户设备的第一令牌请求,通过第一令牌请求中的带宽需求对应的带宽,计算用户终端所需的所请求的令牌数量。该标识可以为用户终端的序列码,用户终端唯一标识码。
在其他具体实施例中,上述步骤102还可以通过如下步骤,确定该用户终端所请求的令牌数量:
先获取预设带宽的大小与预设令牌的大小的对应关系;然后将第一令牌请求中的带宽需求对应的带宽与所获取的对应关系,按照预设运算规则进行运算;计算出该用户终端所请求的令牌数量。最后获取该计算所得到的所请求的令牌数量。
其中,该预设预算规则可以为除法运算规则或乘法运算规则。当然这里的预设预算规则仅仅是举例说明,任何可以实现本发明实施例的预设预算规则,均属于本发明实施例的保护范围,在此不一一举例。
应用于除法运算规则时,上述步骤的具体实现步骤如下:上述预设带宽的大小与预设令牌的大小的对应关系为每个令牌对应的带宽大小,将该第一令牌请求中的带宽需求对应的带宽,除以每个令牌对应的带宽大小,得到商,将商作为该用户终端所请求的令牌数量。
示例性的,一个令牌允许发送1Byte数据,则每个令牌对应带宽大小为1B,第一令牌请求中带宽需求对应的带宽大小为100B,则确定的所请求的令牌数量为100个。需要说明的是,B是常用的带宽流量的单位符号。其中,B是字节的符号,字节是数据或数据流量的基本单位。1B就是1个Byte(字节)。
应用于乘法运算规则时,上述步骤的具体实现步骤如下。具体实现步骤如下:上述预设带宽的大小与预设令牌的大小的对应关系为,预设令牌的大小与预设带宽的大小的比值,将该第一令牌请求中的带宽需求对应的带宽,乘以该比值,得到积,将积作为该用户终端所请求的令牌数量。
示例性的,10个令牌允许发送100Byte数据,则10个令牌对应带宽大小为100B,则令牌大小对应带宽大小的比值为0.1个/B,第一令牌请求中带宽需求对应的带宽大小为1000B,则确定的所请求的令牌数量为100个。可选的,每个令牌对应的对应带宽大小的取值范围可以为[1B,0.1KB],该取值范围不作限定。其中,0.1KB就是0.1千Byte。
步骤103,判断该用户终端是否为预设的需要带宽限制的终端。如果是,则执行步骤104;预设的需要带宽限制的终端可以通过多种方式确定:
在一种具体实施例中,将预先设置的用户终端作为预设的需要带宽限制的终端。这样可以方便记录用户终端。用户终端作为预设的需要带宽限制的终端时,可以先存储该用户终端的标识,有利于后期及时分配与标识对应的特定令牌桶,方便实现该用户终端的带宽限制。
在其他具体实施例中,将该固定带宽需求的用户终端作为预设的需要带宽限制的终端。这样可以满足不同的用户需求。
在其他具体实施例中,判断预先记录的预设的需要带宽限制的标识中,不包含该用户终端的标识,如果包含,则说明该用户终端为预先记录的预设的需要带宽限制的终端。如果不包含,判断第一令牌请求的所请求的令牌数量大于或等于该全局令牌桶中的全局令牌的总数量时,将该用户终端的标识记录为预设的需要带宽限制的标识,将该用户终端作为预设的需要带宽限制的终端。
步骤104,从预设的用户终端对应的特定令牌桶中获取所请求的令牌数量个特定令牌,该特定令牌桶的令牌数量小于全局令牌桶的令牌数量。
上述特定令牌桶的令牌数量小于全局令牌桶的令牌数量,是指特定令牌桶的总令牌数量小于全局令牌桶的总令牌数量。这样可以防止用户终端一次性获得全局令牌桶中所有的令牌,以防止系统长时间处于无法为其他用户提供服务的异常状态。
预设的需要带宽限制的终端预先设置对应的特定令牌桶,是为了方便对每个用户终端进行针对性地限制。
步骤105,判断是否成功获取特定令牌,如果否,则执行步骤106;如果是,则执行步骤107。
步骤106,如果获取特定令牌失败,则拒绝所述第一令牌请求。
因为该特定令牌桶的令牌可能被拿去使用了的令牌,或者可能被用过释放的令牌,也可能是自动添加的令牌,所以特定令牌桶中的特定令牌的令牌数一直在变化。在特定令牌桶中的特定令牌的令牌数小于所请求的令牌数量时,则特定令牌桶不满足所请求的令牌数量,此时,服务器获取特定令牌失败。由于特定令牌桶是为了防止用户终端一次性从全局令牌桶中获得所有的全局令牌,因此这里特定令牌桶不满足用户终端所请求的令牌数量,则直接拒绝该第一令牌请求。
在一种具体实施例中,步骤106可以通过如下步骤实现:
如果获取全局令牌失败,则按照预设的拒绝策略产生,拒绝该第一令牌请求的拒绝指令或等待第一预设时长的等待指令;将该拒绝指令或者该等待指令发送至用户终端。通过这些步骤完成拒绝和等待的过程。
这样用户终端会针对该拒绝指令和等待指令进行处理,比如,根据拒绝指令,用户终端本次无法后端数据存储系统交互,用户终端会发送新的第一令牌请求。比如,根据等待指令,在等待第一预设时长达到时,重新发送该第一令牌请求。这样服务器可以对用户终端的第一令牌请求进行反馈,完成用户终端与服务器之间交互。
步骤107,从全局令牌桶中获取所请求的令牌数量个全局令牌。
从特定令牌桶中成功获取特定令牌时,则全局令牌桶中获取所请求的令牌数量个全局令牌。这样相当于串联了特定令牌桶和全局令牌桶,从而实现对用户终端的带宽限制。
应用本发明实施例中,对需要带宽限制的用户终端从用户终端对应的特定令牌桶成功获取特定令牌,再从全局令牌桶中获取全局令牌,这样限制该用户终端直接从全局令牌桶中获取令牌;由于该特定令牌桶中的令牌数量小于全局令牌桶中的令牌数量,这样该用户终端无法一次性从全局令牌桶中获得所有的全局令牌,从而保证除该用户终端以外的其他用户终端可以从全局令牌桶中请求令牌,防止系统长时间处于无法为其他用户提供服务的异常状态。
当然,本发明实施例中,在全局令牌桶之前,只串联了一个特定令牌桶。
在其他实施例中,在全局令牌桶之前,可以串联多个特定令牌桶。例如:该多个特定令牌桶包括第一特定令牌桶及第二特定令牌桶。在全局令牌桶之前,可以串联多个特定令牌桶具体的实现过程,在全局令牌桶之前串联一个第一特定令牌桶,然后在该第一特定令牌桶之前,再串联一个第二特定令牌桶,该第二特定令牌桶的令牌数量小于该第一令牌桶的令牌数量。也就是说,对预设的需要带宽限制的终端,利用两层特定令牌桶进行带宽限制,这样该用户终端一次性可申请全局令牌桶的全局令牌,所对应的数量就变少了,进一步保证除该用户终端以外的其他用户终端可以从全局令牌桶中请求令牌,防止系统长时间处于无法为其他用户提供服务的异常状态。
上述该第一特定令牌桶之前,再串联一个第二特定令牌桶的实现过程,与全局令牌桶之前,只串联了一个特定令牌桶的实现过程相同或者相似,在此不再赘述。当然以上设置两层特定令牌桶只是举例,任何可以利用本发明实施的特定令牌桶,保证除该用户终端以外的其他用户终端可以从全局令牌桶中请求令牌的方式,均属于本发明实施例的保护范围。
在其他具体实施方式中,基于图1的基础上,增加了步骤108至步骤114。如图2所示,步骤103,包括:判断预先记录的预设的需要带宽限制的标识中,是否包含该用户终端的标识。也就是,判断预先记录的预设的需要带宽限制的终端中,是否包含该用户终端;如果是,则执行步骤104;如果否,也就是,该用户终端不为预设的需要带宽限制的终端,则执行步骤112;
步骤104,从预设的用户终端对应的特定令牌桶中获取所请求的令牌数量个特定令牌,该特定令牌桶的令牌数量小于全局令牌桶的令牌数量。
步骤105,判断是否成功获取特定令牌;如果是,则执行步骤108。
图2中的步骤104和步骤105,与图1中的步骤104和步骤105相同,均能够达到相同或相似的技术效果,在此不再赘述。
步骤108,判断是否成功从全局令牌桶中获取所请求的令牌数量个全局令牌。如果是,则执行步骤109,如果否,则执行步骤110;
步骤109,向该用户终端发送该所请求的令牌数量个的全局令牌;
步骤110,按照预设的拒绝策略拒绝所述第一令牌请求,或者等待第一预设时长,并执行步骤112。
一般获取全局令牌桶的全局令牌失败,服务器等待第一预设时长,从而达到限流的效果。但是,服务器也可以按照预设的拒绝策略拒绝所述第一令牌请求,避免该用户终端影响除该用户终端以外的其他用户终端的正常服务。
向该用户终端发送所请求的令牌数量个的全局令牌,该用户终端可以利用所请求的令牌数量个全局令牌,执行在数据存储系统中的写入或读出。
步骤111,在等待该第一预设时长时,判断该第一令牌请求所等待的第一预设时长是否到达;如果否,则继续执行步骤111,如果是,则执行步骤108,若判断从全局令牌桶中获取所请求的令牌数量个全局令牌失败,则执行按照预设的拒绝策略拒绝所述第一令牌请求的步骤,该全局令牌桶每隔第二预设时长,增加预设数量个全局令牌。
这里按照每间隔第二预设时长写入的预设数量的全局令牌,预设数量可以为固定的数值,这样可以实现部分带宽的限制。
上述第一预设时长和第二预设时长可以根据用户需要进行设置,在此不做限定。第一预设时长可以和第二预设时长相同,第一预设时长与第二预设时长也可以不同。
步骤112,判断该所请求的令牌数量是否大于或等于该全局令牌桶中的全局令牌的总数量;如果是,则执行步骤113,如果否,则执行步骤114;
步骤113,将用户终端的标识记录为预设的需要带宽限制的标识,为该用户终端设置对应的特定令牌桶,并拒绝该第一令牌请求;
步骤114,直接从所述全局令牌桶中获取所请求的令牌数量个全局令牌。
判断该所请求的令牌数量大于或等于该全局令牌桶中的全局令牌的总数量时,表明该用户终端将可能一次申请全局令牌桶的所有全局令牌,该用户终端称为异常流量的用户终端。因此,需要对该异常流量的用户终端的带宽进行限制。
示例性的,基于上述图1以及图2执行步骤的基础上,全局令牌桶每1秒内增加10个全局令牌。全局令牌桶初始的全局令牌的数量为25个,需要带宽限制的用户请求的所请求的令牌数量为30个,在1秒后,获取全局令牌桶的全局令牌的数量为35个,此时的,全局令牌桶中的全局令牌的数量大于所请求的令牌数量,这样用户终端可以从全局令牌桶中获取全局令牌。这样该用户终端无法一次性从全局令牌桶中获得所有的全局令牌,从而保证除该用户终端以外的其他用户终端可以从全局令牌桶中请求令牌,防止系统长时间处于无法为其他用户提供服务的异常状态。
通过记录该用户终端的标识为预设的需要带宽限制的标识,并设置与标识对应的特定令牌桶,记录该用户终端的标识方便快速发现异常流量的用户终端,利用该特定令牌桶实现对该用户终端的带宽进行限制。这样可以在异常流量发生时,快速定位到异常流量的根源,避免系统长时间处于异常状态。
这里设置的与标识对应的特定令牌桶,可以数据存储系统中已经存在的特定令牌桶,也可以新建立的特定令牌桶。
该所请求的令牌数量等于或超出该全局令牌桶中的全局令牌的总数量,表明第一令牌请求的所请求的令牌数量不合理,该用户终端将可能一次申请全局令牌桶的所有全局令牌,这样该用户终端可能影响除该用户终端以外的其他用户终端从全局令牌桶中请求令牌,因此为了防止系统长时间处于无法为其他用户提供服务的异常状态,需要拒绝该所请求的令牌数量大于或等于该全局令牌桶中的全局令牌的总数量,所对应的第一令牌请求。
判断预先记录的预设的需要带宽限制的标识中,不包含该用户终端的标识,并且判断该所请求的令牌数量小于该全局令牌桶中的全局令牌的总数量时,用户终端可以从全局令牌桶中获取所请求的令牌数量个全局令牌。
应用本发明实施例,判断所请求的令牌数量大于或等于该全局令牌桶中的全局令牌的总数量的用户终端,可以自动的发现异常流量的用户终端,然后为所述用户终端设置对应的特定令牌桶,并拒绝该第一令牌请求,可以控制该异常流量的用户终端,保证数据存储系统的稳定性。
上述具体实现流程举例如下:
用户终端发送第一令牌请求至服务器;
服务器接收到该第一令牌请求,判断预先记录的预设的需要带宽限制的标识中不包含该用户终端的标识S,并确定所请求的令牌数量为200个;
此时,全局令牌桶的全局令牌的总数量为100个,由于200大于100,记录该终端用户的标识S,为该终端用户设置一个特定令牌桶,该特定令牌桶中有90个特定令牌,拒绝这次的第一令牌请求;
用户终端重新再发送新的第一令牌请求至服务器;
服务器接收到该新的第一令牌请求,判断预先记录的预设的需要带宽限制的标识中包含该用户终端的标识S,并确定新的所请求的令牌数量为70个,则从特定令牌桶内获取特定令牌成功,然后从全局令牌桶中获取70个全局令牌。
可选的,在一种具体实施方式中,上述步骤110包括:
获取当前时间处理所有用户终端的第一令牌请求对应的工作线程数量;
若所述所有用户终端的第一令牌请求对应的工作线程数量达到第一预设数量,则拒绝所有第一令牌请求,释放与所有第一令牌请求对应的工作线程;
第一预设数量可以根据服务器的需要及用户需要进行设置。第一预设数量的取值范围为93%至98%。示例性的,第一预设数量为95%。
判断出当前时间处理所有用户终端的第一令牌请求对应的工作线程数量达到第一预设数量,表明当前工作线程较大,工作负荷过大,容易造成数据存储系统的瘫痪,因此拒绝所有第一令牌请求,释放与所有第一令牌请求对应的工作线程。这样保证数据存储系统的稳定性。
若所述所有用户终端的第一令牌请求对应的工作线程数量达到第二预设数量,且未达到第一预设数量,则判断所记录的所述惩罚用户终端中,是否包含所述用户终端;
第二预设数量可以根据服务器的需要及用户需要进行设置。第一预设数量的取值范围为89%至92%。可选的,第一预设数量为90%。第一预设数量大于第二预设数量。
判断出当前时间处理所有用户终端的第一令牌请求对应的工作线程数量达到第一预设数量,表明当前工作线程还具有部分承载能力,可以拒绝部分第一令牌请求,释放所拒绝部分第一令牌请求对应的工作线程。这样保证数据存储系统的稳定性。
如果所记录的令牌请求次数最多的用户终端包含所述用户终端,则拒绝所述第一令牌请求,并释放该第一令牌请求对应的工作线程。由于该请求次数最多的用户终端所占用的线程比较多,容易给系统造成较大的负载,因此可以保证大部分用户终端的第一令牌请求都正常处理,可以拒绝该令牌请求次数最多的用户终端对应的第一令牌请求。
如果所记录的所述惩罚用户终端不包含所述用户终端,则等待第一预设时长。
若所述所有用户终端的第一令牌请求对应的工作线程数量未达到第二预设数量,则等待第一预设时长,则等待第一预设时长。
判断当前时间处理所有用户终端的第一令牌请求对应的工作线程数量未达到第二预设数量,表明当前工作线程承载能力较强,将所有用户终端的第一令牌请求都可以正常处理,等待第一预设时长。这样保证数据存储系统的稳定性。
应用本发明实施例,按照预设的拒绝策略拒绝所述第一令牌请求,或者等待第一预设时长,可以准确地保证系统的稳定性。
可选的,在一种具体实施方式中,基于上述图1或图2的步骤的基础上,如图3所示,所述方法还包括:
步骤201,获取预设时间内,所有用户终端的请求信息,其中,所述预设时间内,所有用户终端的令牌请求次数及令牌请求失败次数。
预设时间可以根据用户需要进行设置。预设时间的数值越小,则出现系统长时间处于无法为其他用户提供服务的异常状态的可能性越小,但是,预设时间的数值过小,记录的频率过多,会增加运行负荷。因此一般权衡运行负载和判断异常状态的准确性,该预设时间的数值为1秒至10秒内,比如,5秒,6秒。
每个预设时间所记录数据可以清零,这样可以减少存储的负荷。或者,每个预设时间所记录数据也可以迁移到其他存储设备上,方便后期使用所记录的数据。
上述请求信息还可以包括令牌请求成功次数。这个令牌请求成功次数可以通过令牌请求次数与令牌请求失败次数作差计算得出,也可以通过计数器记录令牌请求成功次数获得。这里前者计算过程也会占用运行内存,后者也可以方便记录预设时间内的获取的所有用户终端的令牌请求成功次数。
预设时间可以通过计时器实现,或者任何可以能够表明预设时间的代码实现。上述令牌请求次数、令牌请求失败次数和/或令牌请求成功次数,也可以通过计数器实现,或者任何可以能够记录令牌请求次数、令牌请求失败次数和/或令牌请求成功次数的代码实现。
在一种具体实施例中,步骤201可以通过如下步骤获取该预设时间内,所有用户终端的请求信息:
首先获取计时器的计时时间是否达到预设时间,在计时器的计时时间达到预设时间时,然后获取该预设时间内,所有用户终端的请求信息。
上述获取也可以通过获取工具实现,还可以通过具有获取功能的代码实现。在此不作限定。
步骤202,判断该预设时间内,所有用户终端的请求信息中的令牌请求失败次数是否等于零。如果是,则执行203;如果否,且该令牌请求失败次数大于零,则执行步骤205;
步骤203,判断是否存在惩罚用户终端,如果是,则执行步骤204;如果否,则执行结束。
步骤204,基于已设置的令牌数量,增大该惩罚用户终端对应特定令牌桶的特定令牌数量,得到增大后的该特定令牌桶的特定令牌的总数量,该增大后的该特定令牌桶的特定令牌的总数量小于全局令牌桶中的令牌数量。
上述已设置的令牌数量可能是只进行过一次设置的第一预设令牌数量,上述已设置的令牌数量也可能是已经进行增大了该惩罚用户终端对应特定令牌桶的特定令牌数量所得到的数量。
步骤205,判断是否存在惩罚用户终端,如果否,则执行步骤206;如果是,则执行结束;
如果利用已经记录有的惩罚用户终端的标识,则表示存在惩罚用户终端,并且该惩罚用户终端对应特定令牌桶中特定令牌的总数量,已经被设置为第一预设令牌数量。
步骤206,根据预设时间内,所有用户终端的请求信息,确定出令牌请求次数最多的惩罚用户终端,然后执行步骤207。
惩罚用户终端是在预设时间内,所有用户终端的请求信息中查找出令牌请求次数最多的用户终端。
步骤207,将该惩罚用户终端对应特定令牌桶中特定令牌的总数量设置为第一预设令牌数量,该第一预设令牌数量小于全局令牌桶中的令牌数量。由于该第一预设令牌数量小于全局令牌桶中的令牌数量,以完成对该惩罚用户终端的惩罚。
判断该请求信息中的令牌请求失败次数不等于零,表明在预设时间内,服务器比较不稳定,比如中断服务或者出现过错误,在这个预设时间内,可以让惩罚用户终端请求特定令牌的总数量变少,这样可以保证该惩罚用户终端不影响除该惩罚用户终端的其他用户终端从全局令牌桶中请求令牌。
该第一预设令牌数量可以根据用户需要进行设置,也可以通过该惩罚用户终端令牌请求成功次数的令牌数量总和,与令牌请求失败次数的令牌数量总和进行运算得到,还可以通过预设时间内请求成功的令牌数量进行运算得到。
具体的,计算在预设时间内,该惩罚用户终端的每次请求成功的令牌数量,在所有请求成功的令牌数量查找出最小的令牌数量。将上述最小的令牌数量可以作为该第一预设令牌数量。在该最小的令牌数量大于预设数值时,上述第一预设令牌数量可以取值为预设数量。比如,该预设数量可以为1或2,任何满足小于上述最小的令牌数量的数值,均属于本发明实施例的保护范围,在此不一一举例。
步骤208,获取在该预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息,其中,该预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息包括:所有用户终端的令牌请求次数及令牌请求失败次数。
步骤209,判断该预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息中的令牌请求失败次数是否等于零。如果是,则执行步骤210。
步骤210,判断是否存在该惩罚用户终端,如果是,则执行步骤211;如果否,则执行结束。
步骤211,基于上述第一预设令牌数量,增大该惩罚用户终端对应特定令牌桶的特定令牌数量,得到增大后的该特定令牌桶的特定令牌的总数量,该增大后的该特定令牌桶的特定令牌的总数量小于全局令牌桶中的令牌数量。
判断该请求信息中的令牌请求失败次数等于零,表明在预设时间内,服务器比较稳定,比如未出现中断服务或者未出现过错误,在这个预设时间内,可以让惩罚用户终端请求特定令牌的数目变多,这样可以满足该惩罚用户终端的需要。
基于上述第一预设令牌数量,增大该惩罚用户终端对应特定令牌桶的特定令牌数量,得到增大后的该特定令牌桶的特定令牌的总数量,可以将第一预设令牌数量增大预设比例倍,得到增大后的该特定令牌桶的特定令牌的总数量。任何能够实现增大后的该特定令牌桶的特定令牌的总数量的预设比例倍,均属于本发明实施例的保护范围。示例性的,第一预设令牌数量为10,增大后的该特定令牌桶的特定令牌的总数量为10,预设比例为1.2,则增大后的该特定令牌桶的特定令牌的总数量为12=1.2×10。
按照预设比例增大特定令牌桶的特定令牌的总数量,属于对该惩罚用户终端的奖励,并且这里的奖励属于逐渐奖励,可以保证系统快速回归稳定,减少该惩罚用户终端对其他用户终端从全局令牌桶中请求令牌的影响。
为了减缓对惩罚用户终端的惩罚,可以在惩罚之后,可以设置惩罚用户终端的休眠时间。该休眠时间的数值为1秒至5秒内,比如5秒。
示例性的,假设预设比例为1.1,每5秒记录并统计当前5秒内的所有用户终端令牌请求成功次数记为B、令牌请求失败次数记为n、以及所有用户终端,获取令牌请求次数最多的用户终端记为b,确定该惩罚用户终端b令牌请求次数为m,令牌请求成功次数的令牌数量总和ts,令牌请求失败次数的令牌数量总和tf,令牌数量总和ts小于或等于全局令牌桶的总数量。当前5秒记录并统计数据完成后,进入当前5秒相邻的下一个5秒时,自动将上述当前5秒所记录并统计数据清零。
比如,全局令牌桶的全局令牌的总数量为100个,该惩罚用户终端b令牌请求次数为5次,每次该惩罚用户终端b请求40个令牌,那么用户令牌请求成功次数ts为2次,则令牌请求成功次数的令牌数量总和ts为80个,全局令牌桶的全局令牌的剩余数量为20个,那么用户令牌请求失败次数为3次,对应用户请求失败的令牌数量tf为120个。
惩罚:当前5秒内,如果n>0,设置惩罚用户终端对应特定令牌桶的特定令牌的总数量为第一预设令牌数量为max(2,ts-tf),以完成对惩罚用户终端对应特定令牌桶的特定令牌的总数量进行限制。
奖励:当前5秒相邻的下一个5秒内,如果n=0,而且存在该惩罚用户终端,则在该当前5秒相邻的下一个5秒内,将该惩罚用户终端对应第一预设令牌数量乘以1.1,得到增大后的该特定令牌桶的特定令牌的总数量。
当前5秒相邻的下一个5秒相邻的下一个5秒内,如果n=0,而且存在该惩罚用户终端,则在该当前5秒相邻的下一个5秒相邻的下一个5秒内,将该惩罚用户终端对应上述增大后的该特定令牌桶的特定令牌的总数量乘以1.1,继续得到增大后的该特定令牌桶的特定令牌的总数量,直至满足该惩罚用户终端的预设奖励的次数,则不再对该惩罚用户终端进行奖励,该奖励的次数可以根据用户需要进行设置,且,增大后的该特定令牌桶的特定令牌的总数量小于全局令牌桶中的令牌数量。
应用本发明实施例,上述对令牌请求次数最多的惩罚用户终端进行惩罚,这种只惩罚惩罚用户终端可以保证系统稳定性,也保证了其他用户终端可以从全局令牌桶中申请全局令牌,从而达到所有用户终端的公平性;在惩罚该惩罚用户终端之后,再采用逐渐奖励对该对惩罚用户终端进行奖励,可以保证系统快速回归稳定,减少该惩罚用户终端对其他用户终端从全局令牌桶中请求令牌的影响。服务器自动实现获取所有用户终端,并对令牌请求次数最多的惩罚用户终端进行限制,不需要人工介入,避免人工操作失误的风险,服务器稳定以后,自动开放对惩罚用户终端的限制,以实现对惩罚用户终端的奖励。这种引入的惩罚和奖励,可以快速限制惩罚用户终端,使得系统快速回归稳定。
第二方面,为了避免一个用户终端一次性从全局令牌桶中获得所有的全局令牌,保证除该用户终端以外的其他用户终端可以从全局令牌桶中请求令牌,防止系统长时间处于无法为其他用户提供服务的异常状态,本发明实施例针对终端设备所提供的令牌获取方法,可以应用于数据存储系统的终端设备。从终端设备的角度,本发明实施例提供了一种令牌获取方法。
如图4所示,本发明实施例还提供一种令牌获取方法,应用于终端设备,包括如下步骤:
步骤31,发送用户终端的第一令牌请求至服务器,该第一令牌请求用于通过服务器根据该第一令牌请求,确定该用户终端所请求的令牌数量;判断该用户终端是否为预设的需要带宽限制的终端;如果是所述预设的需要带宽限制的终端,则从预设的所述用户终端对应的特定令牌桶中获取所述第一令牌请求所述所请求的令牌数量个特定令牌,该特定令牌桶中的令牌数量小于全局令牌桶中的令牌数量;判断是否成功获取所述特定令牌;如果获取所述特定令牌失败,则拒绝所述第一令牌请求;如果成功获取特定令牌,则从全局令牌桶中获取该所请求的令牌数量个全局令牌。
步骤32,接收由所述服务器针对所述第一令牌请求发送的反馈信息。
上述反馈信息包括:服务器如果获取所述全局令牌失败,则按照预设的拒绝策略产生,拒绝上述第一令牌请求的拒绝指令或等待第一预设时长的等待指令。
由于每个用户终端都具有用户终端的标识,然后服务器通过标识就可以判断哪个用户终端向自己发送的第一令牌请求,服务器也就可以知道给发送的第一令牌请求的这个用户终端发送反馈信息。该标识可以为用户终端的序列码,用户终端唯一标识码。
上述反馈信息还可以包括:成功获取所请求的令牌数量个全局令牌。上述反馈信息还可以包括:成功所请求的令牌数量个特定令牌,终端设备可以接收到服务器成功获取的所请求的令牌数量个全局令牌和所请求的令牌数量个特定令牌。
终端设备在接收到该成功获取所请求的令牌数量个全局令牌的反馈信息之后,所述方法还包括:
利用该所请求的令牌数量个全局令牌,执行在数据存储系统中的写入或读出。
应用本发明实施例中,用户终端发送第一令牌请求至服务器,由服务器对需要带宽限制的用户终端从用户终端对应的特定令牌桶成功获取特定令牌,再从全局令牌桶中成功获取全局令牌后,这样限制该用户终端直接从全局令牌桶中获取令牌;由于该特定令牌桶中的令牌数量小于全局令牌桶中的令牌数量,这样该用户终端无法一次性从全局令牌桶中获得所有的全局令牌,从而保证除该用户终端以外的其他用户终端可以从全局令牌桶中请求令牌,防止系统长时间处于无法为其他用户提供服务的异常状态。
如图5所示,本发明实施例还提供一种令牌获取装置,应用于服务器,包括:
第一接收模块41,用于接收用户终端发送的第一令牌请求;
第一确定模块42,用于根据所述第一令牌请求,确定所述用户终端所请求的令牌数量;
第一判断模块43,用于判断所述用户终端是否为预设的需要带宽限制的终端;
第一获取模块44,用于如果是所述预设的需要带宽限制的终端,则从预设的所述用户终端对应的特定令牌桶中获取所述第一令牌请求所述所请求的令牌数量个特定令牌,所述特定令牌桶中的令牌数量小于全局令牌桶中的令牌数量;
第二判断模块45,用于判断是否成功获取所述特定令牌;
第一拒绝模块46,用于如果获取所述特定令牌失败,则拒绝所述第一令牌请求;
第二获取模块47,用于如果成功获取所述特定令牌,则从所述全局令牌桶中获取所述第一令牌请求所请求的令牌数量个全局令牌。
应用本发明实施例中,服务器对需要带宽限制的用户终端从用户终端对应的特定令牌桶成功获取特定令牌,再从全局令牌桶中成功获取全局令牌后,这样限制该用户终端直接从全局令牌桶中获取令牌;由于该特定令牌桶中的令牌数量小于全局令牌桶中的令牌数量,这样该用户终端无法一次性从全局令牌桶中获得所有的全局令牌,从而保证除该用户终端以外的其他用户终端可以从全局令牌桶中请求令牌,防止系统长时间处于无法为其他用户提供服务的异常状态。
可选的,所述第一令牌请求中包含所述用户终端的标识和带宽需求;
所述第一确定模块具体包括:
根据所述第一令牌请求中所述带宽需求对应的带宽,计算所述所请求的令牌数量。
可选的,所述第一判断模块具体包括:判断预先记录的预设的需要带宽限制的标识中,是否包含所述用户终端的标识。
可选的,所述令牌获取装置还包括:
第三判断模块,用于如果所述用户终端不为所述预设的需要带宽限制的终端,则判断所述第一令牌请求所述所请求的令牌数量是否大于或等于所述全局令牌桶中的全局令牌的总数量;
第一处理模块,用于如果大于或等于所述全局令牌桶中的所述全局令牌的总数量,则将所述用户终端的标识记录为预设的需要带宽限制的标识,为所述用户终端设置对应的特定令牌桶,并拒绝所述第一令牌请求;
第三获取模块,用于如果小于所述全局令牌桶中的所述全局令牌的总数量,则直接从所述全局令牌桶中获取所述所请求的令牌个全局令牌。
可选的,所述令牌获取装置还包括:
第四获取模块,用于获取预设时间内,所有用户终端的请求信息,其中,所述预设时间内,所有用户终端的令牌请求次数及令牌请求失败次数;
第二确定模块,用于在判断出不存在惩罚用户终端时,根据所述预设时间内,所有用户终端的请求信息,将令牌请求次数最多的用户终端确定为惩罚用户终端;
第四判断模块,用于判断所述预设时间内,所有用户终端的请求信息中的令牌请求失败次数是否等于零;
设置模块,用于如果所述预设时间内,所有用户终端的请求信息中的令牌请求失败次数大于零,则将所述惩罚用户终端对应特定令牌桶中特定令牌的总数量设置为第一预设令牌数量,所述第一预设令牌数量小于全局令牌桶中的令牌数量;
第五获取模块,用于获取在所述预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息,其中,所述在所述预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息包括:所有用户终端的令牌请求次数及令牌请求失败次数;
第五判断模块,用于判断所述在所述预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息中的令牌请求失败次数是否等于零;
增大模块,用于在判定存在所述惩罚用户终端且所述在所述预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息中的令牌请求失败次数等于零,则基于所述第一预设令牌数量,增大所述惩罚用户终端对应特定令牌桶的特定令牌数量,得到增大后的所述特定令牌桶的特定令牌的总数量,所述增大后的所述特定令牌桶的特定令牌的总数量小于全局令牌桶中的令牌数量。
可选的,所述令牌获取装置还包括:
第六判断模块,用于判断是否成功从全局令牌桶中获取所述第一令牌请求所述所请求的令牌数量个全局令牌;
第一发送模块,用于如果成功获取所述全局令牌,则向所述用户终端发送所述第一令牌请求所述所请求的令牌数量个全局令牌;
第二拒绝模块,用于如果获取所述全局令牌失败,则按照预设的拒绝策略拒绝所述第一令牌请求,或者等待第一预设时长;
第二处理模块,用于在等待所述第一预设时长达到时,则返回判断是否成功从全局令牌桶中获取所述第一令牌请求所述所请求的令牌数量个全局令牌的步骤继续执行,该全局令牌桶每隔第二预设时长,增加预设数量个全局令牌。
可选的,所述第二处理模块,具体包括:
获取当前时间处理所有用户终端的第一令牌请求对应的工作线程数量;
若所述所有用户终端的第一令牌请求对应的工作线程数量达到第一预设数量,则拒绝所有第一令牌请求,释放与所有第一令牌请求对应的工作线程;
若所述所有用户终端的第一令牌请求对应的工作线程数量达到第二预设数量,且未达到第一预设数量,则
判断所记录的所述惩罚用户终端中,是否包含所述用户终端;
如果包含,则拒绝所述第一令牌请求,并释放该第一令牌请求对应的工作线程;
如果不包含,则等待第一预设时长;
若所述所有用户终端的第一令牌请求对应的工作线程数量未达到第二预设数量,则等待第一预设时长。
可选的,所述第二拒绝模块,具体用于:
如果获取所述全局令牌失败,则按照预设的拒绝策略产生,拒绝所述第一令牌请求的拒绝指令或等待第一预设时长的等待指令;
将所述拒绝指令或者所述等待指令发送至用户终端。
如图6所示,本发明实施例还提供一种令牌获取装置,应用于终端设备,包括:
第三发送模块51,用于发送用户终端的第一令牌请求至服务器,所述第一令牌请求用于通过服务器根据所述第一令牌请求,确定所述用户终端所请求的令牌数量;判断所述用户终端是否为预设的需要带宽限制的终端;如果是所述预设的需要带宽限制的终端,则从预设的所述用户终端对应的特定令牌桶中获取所述第一令牌请求所述所请求的令牌数量个特定令牌,所述特定令牌桶中的令牌数量小于全局令牌桶中的令牌数量;判断是否成功获取所述特定令牌;如果获取所述特定令牌失败,则拒绝所述第一令牌请求;如果成功获取所述特定令牌,则从所述全局令牌桶中获取所述第一令牌请求所请求的令牌数量个全局令牌。
第二接收模块52,用于接收由所述服务器针对所述第一令牌请求发送的反馈信息。
可选的,所述反馈信息包括:成功获取所述所请求的令牌数量个全局令牌;
所述令牌获取装置还包括:
执行模块,用于利用所述所请求的令牌数量个全局令牌,执行在数据存储系统中的写入或读出。
本发明实施例还提供了一种服务器,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现上述的令牌获取方法步骤。
相应于第一方面所示的方法,本发明实施例还提供了一种服务器,如图7所示,包括处理器61、通信接口62、存储器63和通信总线64,其中,处理器61,通信接口62,存储器63通过通信总线64完成相互间的通信,
存储器63,用于存放计算机程序;
处理器61,用于执行存储器63上所存放的程序时,实现如下步骤:
接收用户终端发送的第一令牌请求;
根据所述第一令牌请求,确定所述用户终端所请求的令牌数量;
判断所述用户终端是否为预设的需要带宽限制的终端;
如果是所述预设的需要带宽限制的终端,则从预设的所述用户终端对应的特定令牌桶中获取所述第一令牌请求所述所请求的令牌数量个特定令牌,所述特定令牌桶中的令牌数量小于全局令牌桶中的令牌数量;
判断是否成功获取所述特定令牌;
如果获取所述特定令牌失败,则拒绝所述第一令牌请求;
如果成功获取所述特定令牌,则从所述全局令牌桶中获取所述第一令牌请求所请求的令牌数量个全局令牌。
本发明实施例还提供了一种终端设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现上述的令牌获取方法步骤。
相应于第二方面所示的方法,本发明实施例还提供了一种终端设备,如图8所示,包括处理器71、通信接口72、存储器73和通信总线74,其中,处理器71,通信接口72,存储器73通过通信总线74完成相互间的通信,
存储器73,用于存放计算机程序;
处理器71,用于执行存储器73上所存放的程序时,实现如下步骤:
发送用户终端的第一令牌请求至服务器,该第一令牌请求用于通过服务器根据该第一令牌请求,确定该用户终端所请求的令牌数量;判断该用户终端是否为预设的需要带宽限制的终端;如果是所述预设的需要带宽限制的终端,则从预设的所述用户终端对应的特定令牌桶中获取所述第一令牌请求所述所请求的令牌数量个特定令牌,该特定令牌桶中的令牌数量小于全局令牌桶中的令牌数量;判断是否成功获取所述特定令牌;如果获取所述特定令牌失败,则拒绝所述第一令牌请求;如果成功获取特定令牌,则从全局令牌桶中获取该所请求的令牌数量个全局令牌。
接收由所述服务器针对所述第一令牌请求发送的反馈信息。
上述终端设备/服务器提到的通信总线可以是外设部件互连标准(PeripheralComponent Interconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端设备/服务器与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本发明实施例提供的方法可以应用于终端设备。具体的,该终端设备可以为:台式计算机、便携式计算机、智能移动终端、服务器等。在此不作限定,任何可以实现本发明的终端设备,均属于本发明的保护范围。
相应于第一方面所示的方法,本发明实施例提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述的令牌获取方法步骤。
相应于第二方面所示的方法,本发明实施例提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述的令牌获取方法步骤。
相应于第一方面所示的方法,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述的令牌获取方法步骤。
相应于第二方面所示的方法,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述的令牌获取方法步骤。
相应于第一方面所示的方法,本发明实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述的令牌获取方法的步骤。
相应于第二方面所示的方法,本发明实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述的令牌获取方法的步骤。
对于令牌获取装置/服务器/终端设备/存储介质/包含指令的计算机程序产品/计算机程序实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于令牌获取装置/服务器/终端设备/存储介质/包含指令的计算机程序产品/计算机程序实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (17)

1.一种令牌获取方法,其特征在于,应用于服务器,所述方法包括:
接收用户终端发送的第一令牌请求;
根据所述第一令牌请求,确定所述用户终端所请求的令牌数量;
判断所述用户终端是否为预设的需要带宽限制的终端;
如果是所述预设的需要带宽限制的终端,则从预设的所述用户终端对应的特定令牌桶中获取所述第一令牌请求所述所请求的令牌数量个特定令牌,所述特定令牌桶中的令牌数量小于全局令牌桶中的令牌数量;
判断是否成功获取所述特定令牌;
如果获取所述特定令牌失败,则拒绝所述第一令牌请求;
如果成功获取所述特定令牌,则从所述全局令牌桶中获取所述第一令牌请求所请求的令牌数量个全局令牌。
2.如权利要求1所述的令牌获取方法,其特征在于,所述第一令牌请求中包含所述用户终端的标识和带宽需求;
所述根据所述第一令牌请求,确定所述用户终端所请求的令牌数量,包括:
根据所述第一令牌请求中所述带宽需求对应的带宽,计算所述所请求的令牌数量。
3.如权利要求2所述的令牌获取方法,其特征在于,所述判断所述用户终端是否为预设的需要带宽限制的终端,包括:
判断预先记录的预设的需要带宽限制的标识中,是否包含所述用户终端的标识。
4.如权利要求3所述的令牌获取方法,其特征在于,所述方法还包括:
如果所述用户终端不为所述预设的需要带宽限制的终端,则判断所述第一令牌请求所述所请求的令牌数量是否大于或等于所述全局令牌桶中的全局令牌的总数量;
如果大于或等于所述全局令牌桶中的所述全局令牌的总数量,则将所述用户终端的标识记录为预设的需要带宽限制的标识,为所述用户终端设置对应的特定令牌桶,并拒绝所述第一令牌请求;
如果小于所述全局令牌桶中的所述全局令牌的总数量,则直接从所述全局令牌桶中获取所述所请求的令牌个全局令牌。
5.如权利要求1至4任一项所述的令牌获取方法,其特征在于,所述方法还包括:
获取预设时间内,所有用户终端的请求信息,其中,所述预设时间内,所有用户终端的请求信息包括所有用户终端的令牌请求次数及令牌请求失败次数;
在判断出不存在惩罚用户终端时,根据所述预设时间内,所有用户终端的请求信息,将令牌请求次数最多的用户终端确定为惩罚用户终端;
判断所述预设时间内,所有用户终端的请求信息中的令牌请求失败次数是否等于零;
如果所述预设时间内,所有用户终端的请求信息中的令牌请求失败次数大于零,则将所述惩罚用户终端对应特定令牌桶中特定令牌的总数量设置为第一预设令牌数量,所述第一预设令牌数量小于全局令牌桶中的令牌数量;
获取在所述预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息,其中,所述在所述预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息包括:所有用户终端的令牌请求次数及令牌请求失败次数;
判断所述在所述预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息中的令牌请求失败次数是否等于零;
在判定存在所述惩罚用户终端且所述在所述预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息中的令牌请求失败次数等于零,则基于所述第一预设令牌数量,增大所述惩罚用户终端对应特定令牌桶的特定令牌数量,得到增大后的所述特定令牌桶的特定令牌的总数量,所述增大后的所述特定令牌桶的特定令牌的总数量小于全局令牌桶中的令牌数量。
6.如权利要求5所述的令牌获取方法,其特征在于,所述方法还包括:
判断是否成功从全局令牌桶中获取所述第一令牌请求所述所请求的令牌数量个全局令牌;
如果成功获取所述全局令牌,则向所述用户终端发送所述第一令牌请求所述所请求的令牌数量个全局令牌;
如果获取所述全局令牌失败,则按照预设的拒绝策略拒绝所述第一令牌请求,或者
等待第一预设时长,并在等待所述第一预设时长达到时,返回判断是否成功从全局令牌桶中获取所述第一令牌请求所请求的令牌数量个全局令牌的步骤继续执行,如果获取所述全局令牌失败,则按照预设的拒绝策略拒绝所述第一令牌请求,所述全局令牌桶每隔第二预设时长,增加预设数量个全局令牌。
7.如权利要求6所述的令牌获取方法,其特征在于,所述如果获取所述全局令牌失败,则按照预设的拒绝策略拒绝所述第一令牌请求,或者等待第一预设时长,包括:
获取当前时间处理所有用户终端的第一令牌请求对应的工作线程数量;
若所述所有用户终端的第一令牌请求对应的工作线程数量达到第一预设数量,则拒绝所有第一令牌请求,释放与所有第一令牌请求对应的工作线程;
若所述所有用户终端的第一令牌请求对应的工作线程数量达到第二预设数量,且未达到第一预设数量,则
判断所记录的所述惩罚用户终端中,是否包含所述用户终端;
如果包含,则拒绝所述第一令牌请求,并释放该第一令牌请求对应的工作线程;
如果不包含,则等待所述第一预设时长;
若所述所有用户终端的第一令牌请求对应的工作线程数量未达到第二预设数量,则等待所述第一预设时长。
8.一种令牌获取装置,其特征在于,应用于服务器,所述令牌获取装置包括:
第一接收模块,用于接收用户终端发送的第一令牌请求;
第一确定模块,用于根据所述第一令牌请求,确定所述用户终端所请求的令牌数量;
第一判断模块,用于判断所述用户终端是否为预设的需要带宽限制的终端;
第一获取模块,用于如果是所述预设的需要带宽限制的终端,则从预设的所述用户终端对应的特定令牌桶中获取所述第一令牌请求所述所请求的令牌数量个特定令牌,所述特定令牌桶中的令牌数量小于全局令牌桶中的令牌数量;
第二判断模块,用于判断是否成功获取所述特定令牌;
第一拒绝模块,用于在所述第二判断模块判断是否成功获取所述特定令牌之后,如果获取所述特定令牌失败,则拒绝所述第一令牌请求;
第二获取模块,用于如果成功获取所述特定令牌,则从所述全局令牌桶中获取所述第一令牌请求所请求的令牌数量个全局令牌。
9.如权利要求8所述的令牌获取装置,其特征在于,所述第一令牌请求中包含所述用户终端的标识和带宽需求;
所述第一确定模块具体包括:
根据所述第一令牌请求中所述带宽需求对应的带宽,计算所述所请求的令牌数量。
10.如权利要求9所述的令牌获取装置,其特征在于,所述第一判断模块具体包括:判断预先记录的预设的需要带宽限制的标识中,是否包含所述用户终端的标识。
11.如权利要求10所述的令牌获取装置,其特征在于,所述令牌获取装置还包括:
第三判断模块,用于如果所述用户终端不为所述预设的需要带宽限制的终端,则判断所述第一令牌请求所述所请求的令牌数量是否大于或等于所述全局令牌桶中的全局令牌的总数量;
第一处理模块,用于如果大于或等于所述全局令牌桶中的所述全局令牌的总数量,则将所述用户终端的标识记录为预设的需要带宽限制的标识,为所述用户终端设置对应的特定令牌桶,并拒绝所述第一令牌请求;
第三获取模块,用于如果小于所述全局令牌桶中的所述全局令牌的总数量,则直接从所述全局令牌桶中获取所述所请求的令牌个全局令牌。
12.如权利要求8至11任一项所述的令牌获取装置,其特征在于,所述令牌获取装置还包括:
第四获取模块,用于获取预设时间内,所有用户终端的请求信息,其中,所述预设时间内,所有用户终端的令牌请求次数及令牌请求失败次数;
第二确定模块,用于在判断出不存在惩罚用户终端时,根据所述预设时间内,所有用户终端的请求信息,将令牌请求次数最多的用户终端确定为惩罚用户终端;
第四判断模块,用于判断所述预设时间内,所有用户终端的请求信息中的令牌请求失败次数是否等于零;
设置模块,用于如果所述预设时间内,所有用户终端的请求信息中的令牌请求失败次数大于零,则将所述惩罚用户终端对应特定令牌桶中特定令牌的总数量设置为第一预设令牌数量,所述第一预设令牌数量小于全局令牌桶中的令牌数量;
第五获取模块,用于获取在所述预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息,其中,所述在所述预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息包括:所有用户终端的令牌请求次数及令牌请求失败次数;
第五判断模块,用于判断所述在所述预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息中的令牌请求失败次数是否等于零;
增大模块,用于在判定存在所述惩罚用户终端且所述在所述预设时间之后相邻的下一个预设时间内,所有用户终端的请求信息中的令牌请求失败次数等于零,则基于所述第一预设令牌数量,增大所述惩罚用户终端对应特定令牌桶的特定令牌数量,得到增大后的所述特定令牌桶的特定令牌的总数量,所述增大后的所述特定令牌桶的特定令牌的总数量小于全局令牌桶中的令牌数量。
13.如权利要求12所述的令牌获取装置,其特征在于,所述令牌获取装置还包括:
第六判断模块,用于判断是否成功从全局令牌桶中获取所述第一令牌请求所述所请求的令牌数量个全局令牌;
第一发送模块,用于如果成功获取所述全局令牌,则向所述用户终端发送所述第一令牌请求所述所请求的令牌数量个全局令牌;
第二拒绝模块,用于如果获取所述全局令牌失败,则按照预设的拒绝策略拒绝所述第一令牌请求;或者
第二处理模块,用于等待第一预设时长,并在等待所述第一预设时长达到时,返回判断是否成功从全局令牌桶中获取所述第一令牌请求所请求的令牌数量个全局令牌的步骤继续执行,如果获取所述全局令牌失败,则按照预设的拒绝策略拒绝所述第一令牌请求,所述全局令牌桶每隔第二预设时长,增加预设数量个全局令牌。
14.如权利要求13所述的令牌获取装置,其特征在于,所述第二处理模块,具体包括:
获取当前时间处理所有用户终端的第一令牌请求对应的工作线程数量;
若所述所有用户终端的第一令牌请求对应的工作线程数量达到第一预设数量,则拒绝所有第一令牌请求,释放与所有第一令牌请求对应的工作线程;
若所述所有用户终端的第一令牌请求对应的工作线程数量达到第二预设数量,且未达到第一预设数量,则
判断所记录的所述惩罚用户终端中,是否包含所述用户终端;
如果包含,则拒绝所述第一令牌请求,并释放该第一令牌请求对应的工作线程;
如果不包含,则等待所述第一预设时长;
若所述所有用户终端的第一令牌请求对应的工作线程数量未达到第二预设数量,则等待所述第一预设时长。
15.如权利要求13或14所述的令牌获取装置,其特征在于,所述第二拒绝模块,具体用于:
如果获取所述全局令牌失败,则按照预设的拒绝策略产生,拒绝所述第一令牌请求的拒绝指令或等待所述第一预设时长的等待指令;
将所述拒绝指令或者所述等待指令发送至用户终端。
16.一种服务器,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现权利要求1-8任一所述的方法步骤。
17.一种计算机可读存储介质,其特征在于,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-8任一所述的方法步骤。
CN201711376057.1A 2017-12-19 2017-12-19 一种令牌获取方法、装置、服务器、终端设备及介质 Active CN109936511B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201711376057.1A CN109936511B (zh) 2017-12-19 2017-12-19 一种令牌获取方法、装置、服务器、终端设备及介质
PCT/CN2018/122042 WO2019120217A1 (zh) 2017-12-19 2018-12-19 一种令牌获取方法、装置、服务器、用户终端及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711376057.1A CN109936511B (zh) 2017-12-19 2017-12-19 一种令牌获取方法、装置、服务器、终端设备及介质

Publications (2)

Publication Number Publication Date
CN109936511A true CN109936511A (zh) 2019-06-25
CN109936511B CN109936511B (zh) 2020-12-25

Family

ID=66983790

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711376057.1A Active CN109936511B (zh) 2017-12-19 2017-12-19 一种令牌获取方法、装置、服务器、终端设备及介质

Country Status (2)

Country Link
CN (1) CN109936511B (zh)
WO (1) WO2019120217A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111049756A (zh) * 2019-12-24 2020-04-21 北京奇艺世纪科技有限公司 请求响应方法、装置、电子设备及计算机可读存储介质
CN111447150A (zh) * 2020-02-29 2020-07-24 中国平安财产保险股份有限公司 访问请求限流方法、服务器及存储介质
CN113472681A (zh) * 2020-03-30 2021-10-01 阿里巴巴集团控股有限公司 流量限速方法及装置
CN114095444A (zh) * 2020-07-15 2022-02-25 中移物联网有限公司 限流方法、装置及电子设备
CN114826774A (zh) * 2022-06-02 2022-07-29 天翼数字生活科技有限公司 一种终端设备日志请求控制方法、服务端和系统
CN114979012A (zh) * 2022-05-31 2022-08-30 济南浪潮数据技术有限公司 一种网络流量的限流方法、系统、装置及计算机存储介质
CN115080657A (zh) * 2021-03-10 2022-09-20 中国移动通信集团山东有限公司 一种应用于分布式存储的操作令牌分配方法、系统及设备

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113765818A (zh) * 2020-06-28 2021-12-07 北京沃东天骏信息技术有限公司 分布式限流方法、装置、设备、存储介质和系统
CN114070847B (zh) * 2020-07-27 2024-01-23 腾讯科技(深圳)有限公司 服务器的限流方法、装置、设备及存储介质
CN112084090B (zh) * 2020-09-03 2024-02-23 深信服科技股份有限公司 服务器管理方法、服务器、管理终端及存储介质
CN112787950B (zh) * 2021-01-28 2022-07-12 西安交通大学 一种公平网络流量管控方法及装置
CN114124399B (zh) * 2021-10-22 2024-04-16 杭州安恒信息安全技术有限公司 数据接入方法、装置和计算机设备
CN114374652B (zh) * 2022-01-11 2024-01-16 同方有云(北京)科技有限公司 热磁存储和蓝光存储之间的数据传输限速方法及装置
CN114584519B (zh) * 2022-05-05 2022-09-16 飞狐信息技术(天津)有限公司 一种消息中间件的限流方法及消息中间件
CN115225580B (zh) * 2022-06-10 2024-02-02 新浪技术(中国)有限公司 一种针对多处理器核的业务隔离限速方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102118269A (zh) * 2011-02-28 2011-07-06 华为技术有限公司 一种令牌发放方法和系统
CN103491100A (zh) * 2013-09-30 2014-01-01 中国科学院计算技术研究所 一种在多方间构建令牌关联关系的系统
CN105939285A (zh) * 2015-08-21 2016-09-14 杭州迪普科技有限公司 报文转发方法及装置
CN106843170A (zh) * 2016-11-30 2017-06-13 浙江中控软件技术有限公司 基于令牌的任务调度方法
US9712453B1 (en) * 2012-03-26 2017-07-18 Amazon Technologies, Inc. Adaptive throttling for shared resources

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101227410A (zh) * 2008-02-03 2008-07-23 杭州华三通信技术有限公司 流量监管方法及流量监管设备
CN101674247B (zh) * 2009-10-21 2015-01-28 中兴通讯股份有限公司 一种对业务流量进行监管的方法及其装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102118269A (zh) * 2011-02-28 2011-07-06 华为技术有限公司 一种令牌发放方法和系统
US9712453B1 (en) * 2012-03-26 2017-07-18 Amazon Technologies, Inc. Adaptive throttling for shared resources
CN103491100A (zh) * 2013-09-30 2014-01-01 中国科学院计算技术研究所 一种在多方间构建令牌关联关系的系统
CN105939285A (zh) * 2015-08-21 2016-09-14 杭州迪普科技有限公司 报文转发方法及装置
CN106843170A (zh) * 2016-11-30 2017-06-13 浙江中控软件技术有限公司 基于令牌的任务调度方法

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111049756A (zh) * 2019-12-24 2020-04-21 北京奇艺世纪科技有限公司 请求响应方法、装置、电子设备及计算机可读存储介质
CN111447150A (zh) * 2020-02-29 2020-07-24 中国平安财产保险股份有限公司 访问请求限流方法、服务器及存储介质
CN111447150B (zh) * 2020-02-29 2023-07-28 中国平安财产保险股份有限公司 访问请求限流方法、服务器及存储介质
CN113472681A (zh) * 2020-03-30 2021-10-01 阿里巴巴集团控股有限公司 流量限速方法及装置
WO2021197128A1 (zh) * 2020-03-30 2021-10-07 阿里巴巴集团控股有限公司 流量限速方法及装置
CN114095444A (zh) * 2020-07-15 2022-02-25 中移物联网有限公司 限流方法、装置及电子设备
CN114095444B (zh) * 2020-07-15 2023-11-10 中移物联网有限公司 限流方法、装置及电子设备
CN115080657A (zh) * 2021-03-10 2022-09-20 中国移动通信集团山东有限公司 一种应用于分布式存储的操作令牌分配方法、系统及设备
CN114979012A (zh) * 2022-05-31 2022-08-30 济南浪潮数据技术有限公司 一种网络流量的限流方法、系统、装置及计算机存储介质
CN114826774A (zh) * 2022-06-02 2022-07-29 天翼数字生活科技有限公司 一种终端设备日志请求控制方法、服务端和系统
CN114826774B (zh) * 2022-06-02 2024-01-30 天翼数字生活科技有限公司 一种终端设备日志请求控制方法、服务端和系统

Also Published As

Publication number Publication date
CN109936511B (zh) 2020-12-25
WO2019120217A1 (zh) 2019-06-27

Similar Documents

Publication Publication Date Title
CN109936511A (zh) 一种令牌获取方法、装置、服务器、终端设备及介质
CN107634993B (zh) 一种信息推送事件处理方法、装置及电子设备
CN108243246A (zh) 一种边缘计算资源调度方法、边缘设备及系统
CN105446827B (zh) 一种数据库故障时的数据存储方法和设备
CN110489391A (zh) 一种数据处理方法及相关设备
CN108681963A (zh) 多区块链整合控制方法、系统、电子装置及存储介质
CN110457138A (zh) 游戏服务器集群的管理方法、装置及电子设备
CN109788450A (zh) 一种物联网卡的流量共享方法、系统和终端
CN109491788A (zh) 一种虚拟化平台负载均衡实现方法及装置
CN108572898A (zh) 一种控制接口的方法、装置、设备、以及存储介质
CN109800204A (zh) 数据分配方法及相关产品
CN110389822A (zh) 执行任务的节点调度方法、装置和服务器
CN108628890A (zh) 一种数据导出方法及系统
CN111768174A (zh) 一种活动管理方法、装置、设备及介质
CN109729155A (zh) 一种业务请求的分配方法及相关装置
CN111984733A (zh) 基于区块链的数据传输方法、装置及存储介质
CN107276857A (zh) 一种监测流量的方法及装置
CN107908481A (zh) 一种数据同步方法、装置和系统
CN103685084B (zh) 一种生成数据帧的方法及装置
CN108718398A (zh) 视频会议系统的码流传输方法、装置及会议设备
CN105511959A (zh) 虚拟资源分配方法和装置
CN107426012A (zh) 一种基于超融合架构的故障恢复方法及其装置
CN110007940B (zh) 灰度发布的验证方法、系统、服务器及可读存储介质
CN108830658B (zh) 信息推送的数据处理方法、装置、电子设备与存储介质
CN104270466B (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
GR01 Patent grant
GR01 Patent grant