本申请公开了一种服务限流方法及装置、存储介质、计算机设备,该方法包括:接收对目标功能服务的服务请求,确定所述目标功能服务对应的功能计数资源,其中,所述功能计数资源包括预设服务限流数量的令牌分配线程,所述令牌分配线程用于为服务请求分配访问令牌;查询所述功能计数资源中是否包含第一空闲线程;若所述功能计数资源中包含第一空闲线程,则利用所述第一空闲线程为所述目标功能服务分配访问令牌;依据所述目标访问令牌,处理所述服务请求,其中,所述目标功能服务被配置为允许被携带访问令牌的请求访问。本申请实现了对目标功能服务的限流,改善了后台在限流时因多线程竞争容易导致计数出现偏差的问题。易导致计数出现偏差的问题。易导致计数出现偏差的问题。
【技术实现步骤摘要】
服务限流方法及装置、存储介质、计算机设备
[0001]本申请涉及计算机应用
,尤其是涉及到一种服务限流方法及装置、存储介质、计算机设备。
技术介绍
[0002]现代的操作系统和编程语言支持线程,且许多大型商业应用程序是多线程的。由于目前更新了很多热门的产品功能,这些功能的点击流量非常大,为了系统能够稳定的运行,常常会对请求进行限流,如果不进行限流的话,海量的请求很可能会把系统给压垮,当产品功能被大量使用时,由于线程竞争太大的缘故,后台的计数往往会出现偏差,导致限流会出现问题,所以改善后台在限流时的计数偏差是目前亟待解决的问题。
技术实现思路
[0003]有鉴于此,本申请提供了一种服务限流方法及装置、存储介质、计算机设备,有助于减少对计数资源的竞争,改善了后台在限流时计数偏差的问题。
[0004]根据本申请的一个方面,提供了一种服务限流方法,所述方法包括:
[0005]接收对目标功能服务的服务请求,确定所述目标功能服务对应的功能计数资源,其中,所述功能计数资源包括预设服务限流数量的令牌分配线程,所述令牌分配线程用于为服务请求分配访问令牌;
[0006]查询所述功能计数资源中是否包含第一空闲线程;
[0007]若所述功能计数资源中包含第一空闲线程,则利用所述第一空闲线程为所述目标功能服务分配访问令牌;
[0008]依据所述目标访问令牌,处理所述服务请求,其中,所述目标功能服务被配置为允许被携带访问令牌的请求访问。
[0009]可选地,所述若所述功能计数资源中包含第一空闲线程,则利用所述第一空闲线程为所述目标功能服务分配访问令牌,包括:
[0010]若所述功能计数资源中包含第一空闲线程,则将任意一个第一空闲线程确定为所述服务器请求的目标令牌分配线程;
[0011]将所述目标功能服务的服务请求写入所述目标令牌分配线程中,通过所述目标令牌分配线程为所述服务请求分配访问令牌,并将所述目标令牌分配线程标记为占用线程。
[0012]可选地,所述依据所述目标访问令牌,处理所述服务请求之后,所述方法还包括:
[0013]监控所述服务请求的访问进度;
[0014]若所述服务请求完成访问,则清空所述目标令牌分配线程中的任务,并将所述目标令牌分配线程标记为空闲线程。
[0015]可选地,所述功能计数资源还包括与每个所述令牌分配线程对应的线程记录数据,所述线程记录数据包括所述令牌分配线程的序号以及状态值,所述状态值为第一数值时表示对应的令牌分配线程处于空闲状态,所述状态值为第二数值时表示对应的令牌分配
线程处于占用状态;
[0016]所述查询所述功能计数资源中是否包含第一空闲线程,包括:
[0017]查询对应的状态值为所述第一数值的所述令牌分配线程;
[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]可选地,所述功能计数资源还包括与每个所述令牌分配线程对应的线程记录数据,所述线程记录数据包括所述令牌分配线程的序号以及状态值,所述状态值为第一数值时表示对应的令牌分配线程处于空闲状态,所述状态值为第二数值时表示对应的令牌分配线程处于占用状态;
[0044]所述查询模块,还用于:查询对应的状态值为所述第一数值的所述令牌分配线程;
[0045]所述分配模块,还用于:将所述目标令牌分配线程的状态值从第一数值变更为第二数值;
[0046]所述监控模块,还用于:将所述目标令牌分配线程的状态值从第二数值变更为第一数值。
[0047]可选地,所述装置还包括:限流模块,用于所述查询所述目标功能服务对应的功能计数资源之后,若所述功能计数资源中不包含第一空闲线程,则对所述目标功能服务的服务请求进行限流处理。
[0048]可选地,所述限流模块,还用于:
[0049]将所述服务请求标记为等候服务请求,写入所述目标功能服务的等待列表中;
[0050]等待所述功能计数资源中包含第二空闲线程时,按所述等待列表中等候服务请求的顺序,利用所述第二空闲线程为所述等候服务请求分配访问令牌。
[0051]可选地,所述本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种服务限流方法,其特征在于,所述方法包括:接收对目标功能服务的服务请求,确定所述目标功能服务对应的功能计数资源,其中,所述功能计数资源包括预设服务限流数量的令牌分配线程,所述令牌分配线程用于为服务请求分配访问令牌;查询所述功能计数资源中是否包含第一空闲线程;若所述功能计数资源中包含第一空闲线程,则利用所述第一空闲线程为所述目标功能服务分配访问令牌;依据所述目标访问令牌,处理所述服务请求,其中,所述目标功能服务被配置为允许被携带访问令牌的请求访问。2.根据权利要求1所述的方法,其特征在于,所述若所述功能计数资源中包含第一空闲线程,则利用所述第一空闲线程为所述目标功能服务分配访问令牌,包括:若所述功能计数资源中包含第一空闲线程,则将任意一个第一空闲线程确定为所述服务器请求的目标令牌分配线程;将所述目标功能服务的服务请求写入所述目标令牌分配线程中,通过所述目标令牌分配线程为所述服务请求分配访问令牌,并将所述目标令牌分配线程标记为占用线程。3.根据权利要求2所述的方法,其特征在于,所述依据所述目标访问令牌,处理所述服务请求之后,所述方法还包括:监控所述服务请求的访问进度;若所述服务请求完成访问,则清空所述目标令牌分配线程中的任务,并将所述目标令牌分配线程标记为空闲线程。4.根据权利要求3所述的方法,其特征在于,所述功能计数资源还包括与每个所述令牌分配线程对应的线程记录数据,所述线程记录数据包括所述令牌分配线程的序号以及状态值,所述状态值为第一数值时表示对应的令牌分配线程处于空闲状态,所述状态值为第二数值时表示对应的令牌分配线程处于占用状态;所述查询所述功能计数资源中是否包含第一空闲线程,包括:查询对应的状态值为所述第一数值的所述令牌分配线程;所述将所述目标令牌分配线程标记为占用线程,包括:将所述目标令牌分配线程的状态值从第一数值变更为第二数值;所述将所述目标令牌分配线程标记为空闲线程,包括:将所述目标令牌分配线程的状态值从第二数值变...
【专利技术属性】
技术研发人员:何辉,
申请(专利权)人:平安付科技服务有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。