CN111770126B - 服务请求处理方法、装置及存储介质 - Google Patents
服务请求处理方法、装置及存储介质 Download PDFInfo
- Publication number
- CN111770126B CN111770126B CN201910572964.6A CN201910572964A CN111770126B CN 111770126 B CN111770126 B CN 111770126B CN 201910572964 A CN201910572964 A CN 201910572964A CN 111770126 B CN111770126 B CN 111770126B
- Authority
- CN
- China
- Prior art keywords
- service
- calling party
- forbidden
- identification
- target service
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/62—Establishing a time schedule for servicing the requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/108—Network architectures or network communication protocols for network security for controlling access to devices or network resources when the policy decisions are valid for a limited amount of time
Abstract
本申请实施例提供一种服务请求处理方法、装置及存储介质。该方法包括:获取服务调用请求,该服务调用请求包括请求调用的目标服务的标识和调用方的标识,根据该调用方的标识和目标服务的标识,判断该调用方是否处于被允许服务的时间段,该被允许服务是指允许为调用方提供目标服务;若该调用方处于被允许服务的时间段,则执行该目标服务。本申请实施例可以基于调用方的标识和目标服务的标识能够区分出合法用户与非法用户,避免了恶意访问请求浪费系统资源的问题,提高了系统的稳定性,提高了用户体验。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种服务请求处理方法、装置及存储介质。
背景技术
限流是一种常用的系统保护措施。在系统响应用户业务请求时,会产生一定的访问流量。为了避免因业务访问流量超过系统的处理能力,而出现系统宕机的现象,系统通常都具备限流的功能,以对系统中的业务访问流量进行控制。
目前,通常采用令牌桶进行限流。令牌桶中存有一定数量的令牌,系统每响应一次用户的业务请求,便从令牌桶中扣除相应数量的令牌。当令牌桶中的令牌数量不足时,便停止响应用户的业务请求,以实现对业务请求的限流,达到保护系统的目的。
虽然采用令牌桶的方式可以达到限流的效果,防止系统因访问流量过大而出现宕机现象。然而这种方式无法对合法用户与非法用户进行区分,导致非法用户的恶意访问请求浪费了宝贵的系统资源。
发明内容
本申请实施例提供一种服务请求处理方法、装置及存储介质,用以解决现有技术无法区分合法用户与非法用户,导致恶意访问请求浪费系统资源的问题。
第一方面,本申请实施例提供一种服务请求处理方法,包括:
获取服务调用请求,所述服务调用请求包括请求调用的目标服务的标识和调用方的标识;
根据所述调用方的标识和所述目标服务的标识,判断所述调用方是否处于被允许服务的时间段,所述被允许服务是指允许为所述调用方提供所述目标服务;
若所述调用方处于被允许服务的时间段,则执行所述目标服务。
在第一方面的一种可能的实现方式中,所述根据所述调用方的标识和所述目标服务的标识,判断所述调用方是否处于被允许服务的时间段,包括:
根据所述调用方的标识和所述服务标识,判断服务系统中是否存在禁止服务关键字,所述禁止服务关键字用于指示禁止为所述调用方提供所述目标服务;
若所述服务系统中存在所述禁止服务关键字,则确定所述调用方处于被禁止服务的时间段,若所述服务系统中不存在所述禁止服务关键字,则确定所述调用方处于被允许服务的时间段。
在第一方面的上述可能的实现方式中,在所述执行所述目标服务之后,所述方法还包括:
统计在预设时间段内获取到所述服务调用请求的次数;
根据所述次数,确定所述禁止服务关键字存在于所述服务系统的有效时长,所述禁止服务关键字的有效时长与所述次数正相关。
在第一方面的上述可能的实现方式中,所述根据所述次数,确定所述禁止服务关键字存在于所述服务系统的有效时长包括:
若所述次数大于预设阈值,则根据所述次数,确定所述禁止服务关键字存在于所述服务系统的有效时长。
可选的,所述根据所述次数,确定所述禁止服务关键字存在于所述服务系统的有效时长,包括:
根据如下公式确定所述禁止服务关键字存在于所述服务系统的有效时长:
P_t=P_fNum;
其中,P_t表示所述有效时长,P_f表示禁止因子,且P_f>1,Num表示所述次数。
在第一方面的另一种可能的实现方式中,禁止因子的大小与系统性能负相关。
在第一方面的再一种可能的实现方式中,所述执行所述目标服务,包括:
根据所述服务标识,申请执行所述目标服务所需的资源;
在申请到所述资源时,利用所述资源执行所述目标服务。
可选的,在未申请到所述资源时,拒绝执行所述目标服务,或者,将所述服务调用请求加入申请资源的队列中。
在第一方面的又一种可能的实现方式中,所述调用方的标识包括以下任一种:
互联网协议地址、通用唯一识别码、所述调用方的设备标识。
第二方面,本申请实施例提供一种服务请求处理装置,包括:获取模块、判断模块和处理模块;
所述获取模块,用于获取服务调用请求,所述服务调用请求包括请求调用的目标服务的标识和调用方的标识;
所述判断模块,用于根据所述调用方的标识和所述目标服务的标识,判断所述调用方是否处于被允许服务的时间段,所述被允许服务是指允许为所述调用方提供所述目标服务;
所述处理模块,用于在所述调用方处于被允许服务的时间段时,执行所述目标服务。
在第二方面的一种可能的实现方式中,所述判断模块,具体用于根据所述调用方的标识和所述服务标识,判断服务系统中是否存在禁止服务关键字,所述禁止服务关键字用于指示禁止为所述调用方提供所述目标服务,并在所述服务系统中存在所述禁止服务关键字时,确定所述调用方处于被禁止服务的时间段,在所述服务系统中不存在所述禁止服务关键字时,确定所述调用方处于被允许服务的时间段。
在第二方面的上述可能的实现方式中,所述处理模块,还用于在执行所述目标服务之后,统计在预设时间段内获取到所述服务调用请求的次数,根据所述次数,确定所述禁止服务关键字存在于所述服务系统的有效时长,所述禁止服务关键字的有效时长与所述次数正相关。
在第二方面的上述可能的实现方式中,所述处理模块,具体用于在所述次数大于预设阈值时,根据所述次数,确定所述禁止服务关键字存在于所述服务系统的有效时长。
可选的,所述处理模块,具体用于根据如下公式确定所述禁止服务关键字存在于所述服务系统的有效时长:
P_t=P_fNum;
其中,P_t表示所述有效时长,P_f表示禁止因子,且P_f>1,Num表示所述次数。
在第二方面的另一种可能的实现方式中,禁止因子的大小与系统性能负相关。
在第二方面的再一种可能的实现方式中,所述处理模块,具体用于根据所述服务标识,申请执行所述目标服务所需的资源,并在申请到所述资源时,利用所述资源执行所述目标服务。
可选的,所述处理模块,还用于在未申请到所述资源时,拒绝执行所述目标服务,或者,将所述服务调用请求加入申请资源的队列中。
在第二方面的又一种可能的实现方式中,所述调用方的标识包括以下任一种:
互联网协议地址、通用唯一识别码、所述调用方的设备标识。
第三方面,本申请实施例提供一种服务请求处理装置,包括:处理器和存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,使得所述处理器执行如第一方面任一项所述的方法。
第四方面,本申请实施例提供一种存储介质,所述存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现如第一方面任一项所述的方法。
本申请实施例提供的服务请求处理方法、装置及存储介质,通过根据服务调用请求中的调用方的标识和目标服务的标识,判断该调用方是否处于被允许服务的时间段,只有在调用方处于被允许服务的时间段时,才执行目标服务。该技术方案基于调用方的标识和目标服务的标识能够区分出合法用户与非法用户,避免了恶意访问请求浪费系统资源的问题,提高了系统的稳定性,提高了用户体验。
附图说明
图1为本申请实施例提供的服务请求处理方法实施例一的流程示意图;
图2为本申请实施例提供的服务请求处理方法实施例二的流程示意图;
图3为本申请实施例提供的服务请求处理方法实施例三的流程示意图;
图4为本申请实施例提供的服务请求处理方法实施例四的流程示意图;
图5为本申请的实施例中限流组件进行限流的示意图;
图6为本申请实施例提供的服务请求处理装置实施例一的结构示意图;
图7为本申请实施例提供的服务请求处理装置实施例二的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
本申请的说明书和权利要求书中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请中的“第一”和“第二”只起标识作用,而不能理解为指示或暗示顺序关系、相对重要性或者隐含指明所指示的技术特征的数量。“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本申请的说明书中通篇提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本申请实施例针对现有限流方案无法区分请求服务的合法用户与非法用户,导致恶意访问请求浪费系统资源的问题,提出了一种服务请求处理方法,通过根据服务调用请求中的调用方的标识和目标服务的标识,判断该调用方是否处于被允许服务的时间段,只有在调用方处于被允许服务的时间段时,才执行目标服务。该技术方案基于调用方的标识和目标服务的标识能够区分出合法用户与非法用户,避免了恶意访问请求浪费系统资源的问题。
在介绍本申请的具体实施例之前,下面首先对本申请实施例涉及到的相关术语和应用场景进行介绍:
Redis:Redis是一个开源的key-value服务系统,基于内存的高速存取和其分布式可扩展的特性,为互联网应用的高并发,高可用提供了高效的解决方案。
通常情况下,Redis通常用于作为分布式应用的缓存层,在各个服务器实例之间共享数据,为客户端请求提供快速的反馈,缓解应用数据库底层的压力,同时其丰富的数据结构和应用程序编程接口(application programming interface,API)更为各种应用场景提供了强有力的支撑。
令牌桶:令牌桶算法,是一种常见的网络流量整形算法,核心是通过限制请求速率来防止网络拥塞的状况出现。
令牌桶算法,是一种常见的网络流量整形算法,核心是通过限制请求速率来防止网络拥塞的状况出现。令牌桶算法除了能控制单位时间请求速率,还允许一定程度的突发流量,十分适用于互联网应用的流控场景。令牌桶的思想核心是控制单位时间窗口内通过的请求量或调用量。对于给定容量的令牌桶可自行以设定的速率生产令牌,若有请求通过则需消耗相应的令牌数。如果产生的令牌不被消耗,或消耗的速度小于产生的速度,令牌就会不断地增多,直到把桶填满,当令牌桶被填满后则不再产生令牌直到再有令牌被消耗。
在实际应用中,令牌桶算法为业内许多开源限流组件提供了算法基础,例如,guava的限流框架RateLimiter就是基于令牌桶的思想开发的。令牌桶算法除了能控制单位时间请求速率,还允许一定程度的突发流量,十分适用于互联网应用的流控场景。
本申请实施例提供的服务请求处理方法可以应用于任何有限流需求的系统。比如,Redis系统,Hystrix等。本申请实施例并不对该服务请求处理方法的应用系统进行限定,其可以根据实际情况确定。
下面,通过具体实施例对本申请的技术方案进行详细说明。需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图1为本申请实施例提供的服务请求处理方法实施例一的流程图。本实施例提供的方法例如可以由提供服务的服务器执行。如图1所示,在本实施例中,该方法可以包括如下步骤:
S101、获取服务调用请求,该服务调用请求包括请求调用的目标服务的标识和调用方的标识。
在本实施例中,该调用方可以是请求服务的主体,其可以是一个设备,也可以是一个设备内的处理器,本申请实施例并不对调用方的具体表现形式进行限定。该目标服务的标识是用于标识调用方请求调用的服务。
可选的,本实施例中调用方的标识用于区分不同的调用方,例如可以包括以下信息中的至少一种:互联网协议(internet protocol,IP)地址、通用唯一识别码(universally unique identifier,UUID)和调用方的设备标识。以调用方为移动终端为例,其设备标识例如可以是移动设备识别码(mobile equipment identifier,MEID)、国际移动设备识别码(international mobile equipment identity,IMEI)等。
当调用方有访问需求时,可以向服务提供方发起服务调用请求。相应的,服务提供方可以获取该服务调用请求。本实施例中,服务提供方在接收到调用方发送的服务调用请求之后,根据该服务调用请求中的目标服务的标识和调用方的标识,判断该调用方是否处于被允许服务的时间段,也即,判断当前时刻是否允许为调用方提供该目标服务。
S102、根据调用方的标识和目标服务的标识,判断该调用方是否处于被允许服务的时间段,其中,被允许服务是指允许为调用方提供该目标服务。
可选的,在本申请的实施例中,当获取到服务调用请求时,可以根据由调用方的标识和目标服务的标识组成的禁止服务关键字,判断该调用方是否处于被允许服务的时间段,进而确定是否允许为该调用方提供其请求的该目标服务。
关于本步骤的具体实现原理可以参见下述图2所示实施例中的记载,此处不再赘述。
S103、若该调用方处于被允许服务的时间段,则执行该目标服务。
示例性的,在本实施例中,当确定该调用方处于被允许服务的时间段时,表明该调用方不是恶意用户,该服务提供方可以为其申请相应的资源,进而执行该调用方所请求的目标服务,向调用方提供相应的服务。
本申请实施例提供的服务请求处理方法,通过根据服务调用请求中的调用方的标识和目标服务的标识,判断该调用方是否处于被允许服务的时间段,只有在调用方处于被允许服务的时间段时,才执行目标服务。该技术方案基于调用方的标识和目标服务的标识能够区分出合法用户与非法用户,避免了恶意访问请求浪费系统资源的问题,提高了系统的稳定性,提高了用户体验。
示例性的,在上述实施例的基础上,图2为本申请实施例提供的服务请求处理方法实施例二的流程示意图。如图2所示,在本实施例中,上述S102可以通过如下步骤实现:
S201、根据该调用方的标识和服务标识,判断服务系统中是否存在禁止服务关键字,若是,执行S202;若否,执行S203。
其中,该禁止服务关键字用于指示禁止为该调用方提供该目标服务。
可选的,在本申请的实施例中,为了避免非法用户恶意的请求服务以占用资源,本实施例中,服务提供方可以根据每个调用方的标识和其请求的服务组成禁止服务关键字,并确定出该禁止服务关键字的有效时长,该有限时长与该调用方在其之前的预设时间段内请求该服务的次数有关。
示例性的,该有限时长与该调用方在其之前的预设时间段内请求该服务的次数呈正相关。
例如,服务提供方可以通过设置禁止服务关键字的方式避免恶意用户的访问,具体的,在系统中设置禁止服务关键字,以将调用方的标识、目标服务的标识均与禁止服务关键字进行匹配,通过判断系统中是否存在与该调用方的标识、目标服务的标识均匹配的禁止服务关键字,确定是否执行该调用方请求的该目标服务。
S202、确定调用方处于被禁止服务的时间段。
作为一种示例,若系统中存在与该调用方的标识、目标服务的标识均匹配的禁止服务关键字,也即,该服务系统中存在该禁止服务关键字,则确定调用方处于被禁止服务的时间段,拒绝响应该调用方的服务调用请求。
S203、确定该调用方处于被允许服务的时间段。
作为另一种示例,若系统中不存在与该调用方的标识、目标服务的标识均匹配的禁止服务关键字,也即,该服务系统中不存在该禁止服务关键字,则确定调用方处于被允许服务的时间段,此时可以响应该调用方的服务调用请求,执行后续的响应操作,例如,申请资源,利用该资源执行服务等。
本申请实施例提供的服务请求处理方法,通过根据该调用方的标识和服务标识,判断服务系统中是否存在禁止服务关键字,并在该服务系统中存在该禁止服务关键字时,确定调用方处于被禁止服务的时间段,在该服务系统中不存在该禁止服务关键字时,确定该调用方处于被允许服务的时间段。该技术方案通过在系统内设置禁止服务关键字,基于禁止服务关键字在系统中的存在情况确定该调用方是否处于被允许服务的时间段,简化了判断流程,提高了系统的稳定性。
示例性的,在上述实施例的基础上,图3为本申请实施例提供的服务请求处理方法实施例三的流程示意图。如图3所示,在本实施例中,在上述S103中的执行该目标服务之后,该方法还可以包括如下步骤:
S301、统计在预设时间段内获取到服务调用请求的次数。
在本实施例中,服务提供方可以统计每个调用方在预设时间段内请求服务的次数。具体的,服务提供方获取到调用方发出的服务调用请求时,检测该系统内是否存在服务次数关键字。
作为一种示例,该服务次数关键字可以由服务的标识和调用次数组成,用于记录该调用方请求所有服务的次数。示例性的,若调用方的标识为UUID,,服务次数关键字可以表示为UUID_times,以UUID_times作为键值,记录该UUID对应的调用方发起的所有服务调用请求的次数。
作为另一种示例,该服务次数关键字可以由服务的标识、调用方的标识和调用次数组成,用于记录该调用方请求该服务的次数。可选的,对于调用方的标识为UUID,请求的目标服务为ServiceA时,服务次数关键字可以表示为ServiceA_UUID_times,以ServiceA_UUID_times作为键值,记录该UUID对应的调用方发起的请求ServiceA的次数。
在本实施例中,服务提供方根据服务调用请求中调用方的标识、目标服务的标识判断该系统内是否存在其对应的服务次数关键字。若不存在,则利用服务的标识、调用方的标识和调用次数创建服务次数关键字,该服务次数关键字的键值为调用方请求该目标服务的次数,因而,在服务次数关键字创建后,其初始键值为1。若存在,则直接更新服务次数关键字的键值,次数加1。
示例性的,以Redis系统为例,详细说明如何统计ServiceA_UUID_times。键值ServiceA_UUID_times用来记录预设时间段(例如,单位时间)内UUID对应的调用方调用服务ServiceA的次数,单位时间例如可以设置为1秒。
在接收到该服务调用请求时,首先判断Redis中是否存在ServiceA_UUID_times,此时存在两种情况:
(1)若不存在,则调用Redis系统的incr方法设置ServiceA_UUID_times,同时进行计数,此时ServiceA_UUID_times的值为初始值1,同时为ServiceA_UUID_times设置一个过期时间,该过期时间为系统需要统计的单位时间,如上文提到单位时间,通常为1秒。
(2)若存在,则调用Redis系统的incr方法对ServiceA_UUID_times计数加1,累加单位时间的调用次数。
示例性的,在一些实施例中,可以通过将预设时间段划分为多个时间窗口,采用滑动窗口的方式,获取调用方在预设时间段内发送服务调用请求的次数。
举例来说,若预设时间段设为1秒,一个时间窗口的长度为100毫秒,则预设时间段可以包括10个时间窗口,滑动窗口的大小可以设为1秒。采用滑动窗口的方式,获取调用方在当前时刻之前的1秒中内发送服务调用请求的次数。
S302、根据该次数,确定禁止服务关键字存在于该服务系统的有效时长,该禁止服务关键字的有效时长与次数正相关。
本实施例中在执行服务调用请求所请求的服务之后,可以根据调用方在预设时间段内发送服务调用请求的次数,确定调用方是合法用户还是恶意攻击者。
可以理解的是,合法用户在单位时间内发起服务调用请求的次数会处于一个合理的范围;而恶意攻击者在单位时间内发起服务调用请求的次数每秒数以万记甚至更高。因此,可以通过设置次数阈值的方式,区分合法用户和恶意攻击者。例如,可以将单位时间内发起服务调用请求的次数大于预设次数阈值的调用方,加入禁止服务名单,禁止响应其发起的服务调用请求。
需要说明的是,对于合法用户来说,在一些特定的场景中,也有可能会在短时间内发出大量非恶意的服务调用请求,例如,秒杀活动或者抢票服务等。因此,为了避免采用次数阈值的方式,将合法用户误判为恶意攻击者的现象出现,本实施例通过设置禁止服务关键字的有效时长,禁止服务关键字的有效时长用于指示在该有效时长内禁止响应该调用方发送的服务调用请求。
在本实施例中,禁止服务关键字的有效时长与调用方在预设时间段内发送服务调用请求的次数正相关。也就是说,在预设时间段内发送服务调用请求的次数越多的调用方,其被禁止响应的时间就越长。
举例来说,对于发起服务调用请求每秒钟数以万计的恶意攻击者来说,对应的禁止服务关键字的有效时长例如可以设为1天;而对于参与秒杀活动或者进行抢票的调用方来说,每秒钟发起服务调用请求的次数可能高达数以百计,其对应的禁止服务关键字的有效时长例如可以设为1分钟;而对于普通调用者,其发起服务调用请求的频率较低,其对应的禁止服务关键字的有效时长例如可以设为10秒,甚至可以设为0秒。其中,预设时间段可以根据实际需要进行设置,例如可以为1秒、10秒、1分钟等。
本实施例中的禁止服务关键字的有效时长例如可以通过禁止服务关键字的生成时刻和持续时间来表示,或者,还可以通过生成时刻和终止时刻来表示。利用该禁止服务关键字有效时长的时间长短来区分合法用户与恶意攻击者,避免将系统资源分配给恶意攻击者,从而保证了合法用户可以充分享受系统资源提供的服务,提高了资源的有效利用率。
可选的,在本申请的实施例中,根据所述次数,确定禁止服务关键字存在于服务系统的有效时长的一种实现方式可以是:
若所述次数大于预设阈值,则根据所述次数,确定该禁止服务关键字存在于服务系统的有效时长。
也就是说,对于在预设时间段内发起服务调用请求的次数小于等于预设阈值的调用方,可以不用设置禁止服务关键字,进一步提升了合法用户的体验。
在本实施例的一种可能设计中,上述S302可以通过如下方式实现:
根据如下公式确定该禁止服务关键字存在于服务系统的有效时长:
P_t=P_fNum;
其中,P_t表示有效时长,P_f表示禁止因子,且P_f>1,Num表示次数。
可选的,禁止因子的大小与系统性能负相关。也就是说,当系统资源充足时,可以减小禁止因子,即禁止服务关键字的有效时长会减小,以充分利用系统资源;当系统资源紧缺时,可以加大禁止因子,即禁止服务关键字的有效时长会增大,以将有限的系统资源分配给最需要的调用方。
本实施例中的禁止因子大于1,禁止时间随着因变量次数的增加而单调递增,充分利用了指数函数单调递增的特性,使得对恶意攻击者的禁止服务力度随着其调用次数的增加,呈指数级增大。调用次数越大,其对应的禁止服务关键字的有效时长就越长。在禁止服务关键字的有效时长内,禁止响应该调用方的任何服务调用请求,即禁止其申请资源。
本申请实施例提供的服务请求处理方法,在执行目标服务之后,还统计在预设时间段内获取到服务调用请求的次数,根据该次数,确定禁止服务关键字存在于服务系统的有效时长,该禁止服务关键字的有效时长与所述次数正相关。该技术方案在实现对服务调用请求限流的同时,根据服务调用请求的次数,识别恶意攻击者,通过设置有效时长与次数正相关的禁止服务关键字,实现了具有伸缩性的禁止方案。即对于发送服务调用请求频率越高的恶意攻击者的禁止时长越长,而对于正常调用或者偶发的较高频率的服务调用请求,其禁止时间较小或者不予禁止,避免了系统资源被恶意攻击者占用,使得合法用户可以充分享受系统资源提供的服务,提高了资源的有效利用率。
图4为本申请实施例提供的服务请求处理方法实施例四的流程示意图。如图4所示,在本实施例中,上述S103中的执行该目标服务可以通过如下步骤实现:
S401、根据该服务标识,申请执行目标服务所需的资源。
在本申请的实施例中,当根据调用方的标识和目标服务的标识,确定该调用方处于被允许服务的时间段时,则可以通过限流组件申请资源。
示例性的,在本实施例中以目标服务所需的资源为令牌进行举例说明。本实施例中的限流组件可以基于令牌桶算法对申请的资源进行限流。例如,限流组件可以是RateLimiter等。
示例性的,图5为本申请的实施例中限流组件进行限流的示意图。如图5所示,本实施例中令牌桶的容量为b,也就是说令牌桶中最多会有b个令牌,如果令牌桶中的令牌数达到了b,新产生的令牌将会被丢弃或者停止生产令牌。令牌桶每秒钟可以产出r个令牌,也就是说每隔1/r秒向令牌桶中放入一个令牌。当获取到n个服务调用请求时,将会消耗n个令牌,获得令牌的服务调用请求将会被继续执行;如果令牌桶中的可用令牌小于n,如令牌桶中剩于m个令牌,则将只有m个服务调用请求可以获得令牌,其余(n-m)个服务调用请求将会被丢弃或者被阻塞。只有申请到令牌的服务调用请求,才有资格继续被执行。图5中的拦截器例如可以用于过滤禁止服务名单中的调用方发起的服务调用请求。
可选的,为了提高系统的资源利用率,本实施例中令牌桶的容量以及产生令牌的速率可以与系统的性能正相关。也就是说,当系统的可用资源增加时,则可以增大令牌桶的容量和/或提高令牌桶产生令牌的速率,以充分利用系统资源,提供更多服务;而当系统的可用资源减少时,则可以减小令牌桶的容量和/或降低令牌桶产生令牌的速率,以加强限流,实现对系统的保护。
S402、判断是否申请执行该目标服务所需的资源,若是,执行S403,若否,执行S404。
可选的,可以根据系统中空闲资源的情况确定是否可以申请到执行该目标服务的资源。示例性的,在系统的资源充足时,确定可以申请到执行该目标服务所需的资源,若系统的资源紧缺时,确定未申请到执行该目标服务所需的资源。
S403、利用该资源执行目标服务。
在申请到资源时,利用资源执行该目标服务。也即,对于申请到资源的服务调用请求,则分配相应的资源,执行服务调用请求所请求的目标服务,向调用方提供相应的服务。
S404、拒绝执行目标服务,或者,将服务调用请求加入申请资源的队列中。
在未申请到资源时,即针对未申请到资源的服务调用请求,可以拒绝执行调用方的服务调用请求所请求的服务,直接丢弃该服务调用请求;或者,可以将调用方的服务调用请求加入申请资源的队列中,排队等候,直至有足够的资源为止。
本申请实施例提供的服务请求处理方法,通过根据服务标识,申请执行目标服务所需的资源,并在申请到资源时,利用该资源执行目标服务,以及在未申请到资源时,拒绝执行目标服务,或者,将服务调用请求加入申请资源的队列中。该技术方案可以不仅可以识别合法用户和恶意攻击者的目的,而且可以达到限流的效果,避免了服务系统超过服务容量的请求导致系统崩溃的现象出现,提高了系统稳定性。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图6为本申请实施例提供的服务请求处理装置实施例一的结构示意图。如图6所示,该服务请求处理装置可以包括:获取模块61、判断模块62和处理模块63。
其中,该获取模块61,用于获取服务调用请求,所述服务调用请求包括请求调用的目标服务的标识和调用方的标识;
该判断模块62,用于根据所述调用方的标识和所述目标服务的标识,判断所述调用方是否处于被允许服务的时间段,所述被允许服务是指允许为所述调用方提供所述目标服务;
该处理模块63,用于在所述调用方处于被允许服务的时间段时,执行所述目标服务。
在本实施例的一种可能的实现方式中,该判断模块62,具体用于根据所述调用方的标识和所述服务标识,判断服务系统中是否存在禁止服务关键字,所述禁止服务关键字用于指示禁止为所述调用方提供所述目标服务,并在所述服务系统中存在所述禁止服务关键字时,确定所述调用方处于被禁止服务的时间段,在所述服务系统中不存在所述禁止服务关键字时,确定所述调用方处于被允许服务的时间段。
在本实施例的上述可能的实现方式中,该处理模块63,还用于在执行所述目标服务之后,统计在预设时间段内获取到所述服务调用请求的次数,根据所述次数,确定所述禁止服务关键字存在于所述服务系统的有效时长,所述禁止服务关键字的有效时长与所述次数正相关。
在本实施例的上述可能的实现方式中,该处理模块63,具体用于在所述次数大于预设阈值时,根据所述次数,确定所述禁止服务关键字存在于所述服务系统的有效时长。
可选的,该处理模块63,具体用于根据如下公式确定所述禁止服务关键字存在于所述服务系统的有效时长:
P_t=P_fNum;
其中,P_t表示所述有效时长,P_f表示禁止因子,且P_f>1,Num表示所述次数。
在本实施例的另一种可能的实现方式中,禁止因子的大小与系统性能负相关。
在本实施例的再一种可能的实现方式中,该处理模块63,具体用于根据所述服务标识,申请执行所述目标服务所需的资源,并在申请到所述资源时,利用所述资源执行所述目标服务。
可选的,该处理模块63,还用于在未申请到所述资源时,拒绝执行所述目标服务,或者,将所述服务调用请求加入申请资源的队列中。
在本实施例的又一种可能的实现方式中,所述调用方的标识包括以下任一种:
互联网协议地址、通用唯一识别码、所述调用方的设备标识。
本实施例的装置可以用于执行图1至图4所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,处理模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上确定模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit,ASIC),或,一个或多个微处理器(digital signal processor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(centralprocessing unit,CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,SOC)的形式实现。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘solid state disk(SSD))等。
图7为本申请实施例提供的服务请求处理装置实施例二的结构示意图。如图7所示,该装置可以包括:处理器71、存储器72、通信接口73和系统总线74,所述存储器72和所述通信接口73通过所述系统总线74与所述处理器71连接并完成相互间的通信,所述存储器72用于存储计算机执行指令,所述通信接口73用于和其他设备进行通信,所述处理器71执行所述计算机执行指令时实现如上述图1至图4所示实施例的方法。
该图7中提到的系统总线可以是外设部件互连标准(peripheral componentinterconnect,PCI)总线或扩展工业标准结构(extended industry standardarchitecture,EISA)总线等。所述系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于实现数据库访问装置与其他设备(例如客户端、读写库和只读库)之间的通信。存储器可能包含随机存取存储器(random access memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
上述的处理器可以是通用处理器,包括中央处理器CPU、网络处理器(networkprocessor,NP)等;还可以是数字信号处理器DSP、专用集成电路ASIC、现场可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本申请实施例还提供一种存储介质,也即,计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时可以实现上述任一方法实施例提供的方法。本实施例中的计算机可读存储介质可以是计算机能够存取的任何可用介质,或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备,可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如SSD)等。
可选的,本申请实施例还提供一种运行指令的芯片,所述芯片用于执行上述图1至图4所示实施例的方法。
在上述的实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (10)
1.一种服务请求处理方法,其特征在于,包括:
获取服务调用请求,所述服务调用请求包括请求调用的目标服务的标识和调用方的标识;
根据所述调用方的标识和所述目标服务的标识,判断服务系统中是否存在禁止服务关键字,得到判断结果,所述禁止服务关键字由所述调用方的标识和所述目标服务的标识组成,所述禁止服务关键字用于指示禁止为所述调用方提供所述目标服务;
根据所述判断结果,判断所述调用方是否处于被允许服务的时间段,所述被允许服务是指允许为所述调用方提供所述目标服务;
若所述调用方处于被允许服务的时间段,则执行所述目标服务;
在所述执行所述目标服务之后,所述方法还包括:
统计在预设时间段内获取到所述服务调用请求的次数;
若所述次数大于预设阈值,则根据所述次数,确定所述禁止服务关键字存在于所述服务系统的有效时长,以区分合法用户与恶意攻击者,避免系统资源被所述恶意攻击者占用,所述禁止服务关键字的有效时长与所述次数正相关。
2.根据权利要求1所述的方法,其特征在于,所述根据所述判断结果,判断所述调用方是否处于被允许服务的时间段,包括:
若所述服务系统中存在所述禁止服务关键字,则确定所述调用方处于被禁止服务的时间段,若所述服务系统中不存在所述禁止服务关键字,则确定所述调用方处于被允许服务的时间段。
3.根据权利要求1所述的方法,其特征在于,所述根据所述次数,确定所述禁止服务关键字存在于所述服务系统的有效时长,包括:
根据如下公式确定所述禁止服务关键字存在于所述服务系统的有效时长:
P_t=P_fNum;
其中,P_t表示所述有效时长,P_f表示禁止因子,且P_f>1,Num表示所述次数。
4.根据权利要求3所述的方法,其特征在于,所述禁止因子的大小与系统性能负相关。
5.根据权利要求1所述的方法,其特征在于,所述执行所述目标服务,包括:
根据所述服务标识,申请执行所述目标服务所需的资源;
在申请到所述资源时,利用所述资源执行所述目标服务。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在未申请到所述资源时,拒绝执行所述目标服务,或者,将所述服务调用请求加入申请资源的队列中。
7.根据权利要求1所述的方法,其特征在于,所述调用方的标识包括以下任一种:
互联网协议地址、通用唯一识别码、所述调用方的设备标识。
8.一种服务请求处理装置,其特征在于,包括:获取模块、判断模块和处理模块;
所述获取模块,用于获取服务调用请求,所述服务调用请求包括请求调用的目标服务的标识和调用方的标识;
所述判断模块,用于根据所述调用方的标识和所述目标服务的标识,判断服务系统中是否存在禁止服务关键字,得到判断结果,所述禁止服务关键字由所述调用方的标识和所述目标服务的标识组成,所述禁止服务关键字用于指示禁止为所述调用方提供所述目标服务;
根据所述判断结果,判断所述调用方是否处于被允许服务的时间段,所述被允许服务是指允许为所述调用方提供所述目标服务;
所述处理模块,用于在所述调用方处于被允许服务的时间段时,执行所述目标服务;
所述处理模块,还用于在执行所述目标服务之后,统计在预设时间段内获取到所述服务调用请求的次数;
所述处理模块,具体用于在所述次数大于预设阈值时,根据所述次数,确定所述禁止服务关键字存在于所述服务系统的有效时长,以区分合法用户与恶意攻击者,避免系统资源被所述恶意攻击者占用,所述禁止服务关键字的有效时长与所述次数正相关。
9.一种服务请求处理装置,其特征在于,包括:处理器和存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,使得所述处理器执行如权利要求1-7任一项所述的方法。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910572964.6A CN111770126B (zh) | 2019-06-28 | 2019-06-28 | 服务请求处理方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910572964.6A CN111770126B (zh) | 2019-06-28 | 2019-06-28 | 服务请求处理方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111770126A CN111770126A (zh) | 2020-10-13 |
CN111770126B true CN111770126B (zh) | 2023-08-04 |
Family
ID=72718261
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910572964.6A Active CN111770126B (zh) | 2019-06-28 | 2019-06-28 | 服务请求处理方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111770126B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105915510A (zh) * | 2016-04-12 | 2016-08-31 | 北京小米移动软件有限公司 | 控制业务访问量的方法和装置 |
CN107704765A (zh) * | 2017-08-28 | 2018-02-16 | 深圳市诚壹科技有限公司 | 一种接口访问方法、服务器及计算机可读存储介质 |
CN107896210A (zh) * | 2017-11-14 | 2018-04-10 | 北京知道创宇信息技术有限公司 | 安全防护方法、装置、服务器及存储介质 |
CN108400963A (zh) * | 2017-10-23 | 2018-08-14 | 平安科技(深圳)有限公司 | 电子装置、访问请求控制方法和计算机可读存储介质 |
CN108494703A (zh) * | 2018-03-08 | 2018-09-04 | 腾讯科技(深圳)有限公司 | 一种访问频率控制方法、装置及存储介质 |
CN109150878A (zh) * | 2018-08-21 | 2019-01-04 | 郑州云海信息技术有限公司 | 一种云平台的访问限制的方法及装置 |
CN109298939A (zh) * | 2018-09-26 | 2019-02-01 | 腾讯科技(深圳)有限公司 | 分布式系统的访问频率控制方法、装置、系统及服务器 |
CN109831504A (zh) * | 2019-01-31 | 2019-05-31 | 泰康保险集团股份有限公司 | 微服务请求处理方法、装置及设备 |
-
2019
- 2019-06-28 CN CN201910572964.6A patent/CN111770126B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105915510A (zh) * | 2016-04-12 | 2016-08-31 | 北京小米移动软件有限公司 | 控制业务访问量的方法和装置 |
CN107704765A (zh) * | 2017-08-28 | 2018-02-16 | 深圳市诚壹科技有限公司 | 一种接口访问方法、服务器及计算机可读存储介质 |
CN108400963A (zh) * | 2017-10-23 | 2018-08-14 | 平安科技(深圳)有限公司 | 电子装置、访问请求控制方法和计算机可读存储介质 |
CN107896210A (zh) * | 2017-11-14 | 2018-04-10 | 北京知道创宇信息技术有限公司 | 安全防护方法、装置、服务器及存储介质 |
CN108494703A (zh) * | 2018-03-08 | 2018-09-04 | 腾讯科技(深圳)有限公司 | 一种访问频率控制方法、装置及存储介质 |
CN109150878A (zh) * | 2018-08-21 | 2019-01-04 | 郑州云海信息技术有限公司 | 一种云平台的访问限制的方法及装置 |
CN109298939A (zh) * | 2018-09-26 | 2019-02-01 | 腾讯科技(深圳)有限公司 | 分布式系统的访问频率控制方法、装置、系统及服务器 |
CN109831504A (zh) * | 2019-01-31 | 2019-05-31 | 泰康保险集团股份有限公司 | 微服务请求处理方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111770126A (zh) | 2020-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11263305B2 (en) | Multilayered approach to protecting cloud credentials | |
US20210144120A1 (en) | Service resource scheduling method and apparatus | |
RU2307390C2 (ru) | Использование полномочий для распределения ресурсов устройства к приложению | |
US11606372B2 (en) | Mitigating against malicious login attempts | |
CN108833450B (zh) | 一种实现服务器防攻击方法及装置 | |
CN110855709A (zh) | 安全接入网关的准入控制方法、装置、设备和介质 | |
WO2021068205A1 (zh) | 访问控制方法、装置、服务器和计算机可读介质 | |
CN112165455A (zh) | 数据访问控制方法、装置、计算机设备和存储介质 | |
WO2016141808A1 (zh) | 一种服务器的安全管理方法及装置 | |
CN113726683A (zh) | 访问限流方法、装置、设备、存储介质及计算机程序产品 | |
US20210105624A1 (en) | Systems and methods for low latency cloud computing for mobile applications | |
CN114244624A (zh) | 流量控制方法及装置、设备、存储介质 | |
CN109547427B (zh) | 黑名单用户识别方法、装置、计算机设备及存储介质 | |
CN111770126B (zh) | 服务请求处理方法、装置及存储介质 | |
CN108882296B (zh) | 一种处理报文的方法及装置 | |
US20200322358A1 (en) | Transaction authentication and risk analysis | |
WO2023011233A1 (zh) | 流量管理方法、装置、设备及计算机可读存储介质 | |
US9936008B2 (en) | Method and system for dynamically shifting a service | |
US11943618B2 (en) | Forcing re-authentication of users for accessing online services | |
CN114938508A (zh) | 5g专网网络控制方法、装置、电子设备及存储介质 | |
CN110417615B (zh) | 校验开关控制方法、装置、设备及计算机可读存储介质 | |
EP3672290B1 (en) | Cellular behaviour manager | |
CN115037693B (zh) | 一种基于令牌桶的分布式限流方法和分布式限流装置 | |
CN113489726B (zh) | 流量限制方法及设备 | |
US11798001B2 (en) | Progressively validating access tokens |
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 |