服务限流方法、装置、存储介质及电子设备
文献发布时间:2024-04-18 19:57:11
技术领域
本申请涉及信息安全领域,具体而言,涉及一种服务限流方法、装置、存储介质及电子设备。
背景技术
随着网页应用程序的访问量越来越大,网页应用程序的单个接口存在高并发访问导致的服务异常的情况,相关技术中,对网页应用程序的限流方案是基于nginx(engine x,高性能的Http和反向代理web服务器)的粗放式整体限流。然而,整体限流的方式仍然无法避免网页应用程序中的单个接口的访问量过大引起的服务异常的问题。
针对相关技术中应用程序的单个接口访问量过大导致服务异常的问题,目前尚未提出有效的解决方案。
发明内容
本申请的主要目的在于提供一种服务限流方法、装置、存储介质及电子设备,以解决相关技术中应用程序的单个接口访问量过大导致服务异常的问题。
为了实现上述目的,根据本申请的一个方面,提供了一种服务限流方法。该方法包括:接收客户端对目标应用程序的访问请求,解析访问请求,得到客户端的客户端IP、客户端访问目标应用程序的目标接口,其中,目标应用程序包含多个接口;判断目标接口的限流名单中是否包含客户端IP;在目标接口的限流名单中不包含客户端IP的情况下,获取目标接口的预设限流策略,其中,预设限流策略至少包括以下之一:限流频率和最大线程数,限流频率是预设时间段内限制访问目标接口的次数,最大线程数是目标接口同时处理访问请求的最大数量;基于预设限流策略执行对访问请求的限流操作。
可选地,在基于预设限流策略执行对访问请求的限流操作之前,该方法还包括:确定目标应用程序当前执行的限流策略数量,并判断限流策略数量是否大于等于限流策略数量阈值;在限流策略数量小于限流策略数量阈值的情况下,确定等待执行预设限流策略的等待时长;判断等待时长是否大于等于等待时长阈值;在等待时长小于等待时长阈值的情况下,执行基于预设限流策略执行对访问请求的限流操作的步骤。
可选地,在判断限流策略数量是否大于等于限流策略数量阈值之后,该方法还包括:在限流策略数量大于等于限流策略数量阈值的情况下,向客户端返回第一提示信息,其中,第一提示信息用于提示目标应用程序的服务器繁忙;在判断等待时长是否大于等于等待时长阈值之后,方法还包括:在等待时长大于等于等待时长阈值的情况下,向客户端返回第一提示信息。
可选地,限流频率通过以下方式确定:确定目标接口的目标等级,基于目标等级从预设关联关系表中确定目标等级关联的限流频率,其中,预设关联关系中包含多个关联关系,每个关联关系包含一种接口的等级和一个限流频率;将目标等级关联的限流频率确定为预设限流策略中的限流频率。
可选地,在预设限流策略包括限流频率和最大线程数的情况下,基于预设限流策略执行对访问请求的限流操作包括:确定预设时间段内目标接口接收的访问请求的数量,计算数量与预设时间段的比值,得到接口访问频率;确定目标接口当期待执行的访问请求的数量,得到待执行数量;判断接口访问频率是否大于等于限流频率;在接口访问频率大于等于限流频率的情况下,将访问请求添加至待访问接口队列,其中,待访问接口队列包含所有等待访问目标接口的访问请求;在接口访问频率小于限流频率的情况下,判断待执行数量是否大于等于最大线程数;在待执行数量大于等于最大线程数的情况下,将访问请求添加至待处理队列,其中,待处理队列包含所有已访问目标接口并等待处理的访问请求;在待执行数量小于最大线程数的情况下,处理访问请求。
可选地,在判断目标接口的限流名单中是否包含客户端IP之前,该方法还包括:确定每个客户端IP对目标接口同一批次的历史访问量;在同一批次的历史访问量大于等于目标接口的访问量阈值的情况下,将客户端IP添加至限流名单;在判断目标接口的限流名单中是否包含客户端IP之后,方法还包括:在目标接口的限流名单中包含客户端IP的情况下,向客户端返回第二提示信息,其中,第二提示信息用于表征目标应用程序拒绝客户端的访问。
可选地,在解析访问请求之前,该方法还包括:确定目标应用程序的所有接口的访问请求的总访问数量;判断总访问数量是否大于等于总访问数量阈值;在总访问数量大于等于总访问数量阈值的情况下,向客户端返回第一提示信息;在总访问数量小于总访问数量阈值的情况下,执行解析访问请求的步骤。
为了实现上述目的,根据本申请的另一方面,提供了一种服务限流装置。该装置包括:接收单元,用于接收客户端对目标应用程序的访问请求,解析访问请求,得到客户端的客户端IP、客户端访问目标应用程序的目标接口,其中,目标应用程序包含多个接口;第一判断单元,用于判断目标接口的限流名单中是否包含客户端IP;获取单元,用于在目标接口的限流名单中不包含客户端IP的情况下,获取目标接口的预设限流策略,其中,预设限流策略至少包括以下之一:限流频率和最大线程数,限流频率是预设时间段内限制访问目标接口的次数,最大线程数是目标接口同时处理访问请求的最大数量;第一执行单元,用于基于预设限流策略执行对访问请求的限流操作。
通过本申请,采用以下步骤:接收客户端对目标应用程序的访问请求,解析访问请求,得到客户端的客户端IP、客户端访问目标应用程序的目标接口,其中,目标应用程序包含多个接口;判断目标接口的限流名单中是否包含客户端IP;在目标接口的限流名单中不包含客户端IP的情况下,获取目标接口的预设限流策略,其中,预设限流策略至少包括以下之一:限流频率和最大线程数,限流频率是预设时间段内限制访问目标接口的次数,最大线程数是目标接口同时处理访问请求的最大数量;基于预设限流策略执行对访问请求的限流操作,解决了相关技术中应用程序的单个接口访问量过大导致服务异常的问题。通过限流名单、限流频率和最大线程数等对访问目标接口的访问请求进行限流,从而实现针对应用程序中的单个接口的限流,进而达到了避免单个接口访问量过大导致服务异常的效果。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例提供的服务限流方法的流程图;
图2是根据本申请实施例提供的服务限流系统的示意图;
图3是根据本申请实施例提供的可选的服务限流方法的流程图;
图4是根据本申请实施例提供的服务限流装置的示意图;
图5是根据本申请实施例提供的电子设备的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
为了便于描述,以下对本申请实施例涉及的部分名词或术语进行说明:
Javaweb:用Java技术解决相关互联网领域的技术栈。
下面结合优选的实施步骤对本发明进行说明,图1是根据本申请实施例提供的服务限流方法的流程图,如图1所示,该方法包括如下步骤:
步骤S101,接收客户端对目标应用程序的访问请求,解析访问请求,得到客户端的客户端IP、客户端访问目标应用程序的目标接口,其中,目标应用程序包含多个接口。
具体地,客户端可以为任意一个可以登陆网页的设备,例如手机、电脑和平板等。目标应用程序是网页应用程序,用户通过访问网页登陆目标应用程序。目标应用程序每天都会接收到大量的客户端的访问请求,由于目标应用程序的服务器能够承担的访问量有限,因此需要对客户端的访问请求进行限流。目标应用程序中的不同接口承接的访问请求的数量也不同,因此也会存在某个接口访问量过大导致的服务异常的问题。通过接收客户端对目标应用程序的访问请求后,对访问请求进行解析,获取到客户端的客户端IP地址,并确定客户端待访问的目标接口。
步骤S102,判断目标接口的限流名单中是否包含客户端IP。
具体地,每个接口设置一个限流名单,当客户端的访问请求被目标应用程序接收后,通过该目标应用程序的服务器部署的过滤器拦截访问请求,然后查询目标接口的限流名单信息。限流名单中包含一张限流服务接口名单信息存储表,如果客户端IP在限流名单里,则直接拦截访问请求,限制客户端的访问,如果客户端IP不存在限流名单里则正常处理访问请求。
步骤S103,在目标接口的限流名单中不包含客户端IP的情况下,获取目标接口的预设限流策略,其中,预设限流策略至少包括以下之一:限流频率和最大线程数,限流频率是预设时间段内限制访问目标接口的次数,最大线程数是目标接口同时处理访问请求的最大数量。
具体地,若目标接口的限流名单中不包含客户端IP,说明该客户端IP的历史访问记录中不存在大批量访问的情况,但是目标接口当前处理的访问请求的量可能较大,此时还需要获取目标接口的预设限流策略,并基于预设限流策略来处理访问请求。通过访问限流服务接口清单信息存储表获取预设限流策略,限流服务接口清单信息存储表中记录每个接口的限流控制参数,即每个接口分别对应存储一条限流策略,限流策略中至少包括以下之一:限流频率和最大线程数,还可以包含限流等待超时时间等。
步骤S104,基于预设限流策略执行对访问请求的限流操作。
具体地,根据预设限流测略中的限流频率和最大线程数等对访问请求进行限流,例如,在接口访问频率大于等于限流频率的情况下,将访问请求添加至待访问接口队列。在访问请求的待执行数量大于等于最大线程数的情况下,将访问请求添加至待处理队列,等待目标接口的线程数有空余再处理待处理队列中的访问请求。在限流操作处理完成后,将处理结果反馈给客户端。
本申请实施例提供的服务限流方法,通过接收客户端对目标应用程序的访问请求,解析访问请求,得到客户端的客户端IP、客户端访问目标应用程序的目标接口,其中,目标应用程序包含多个接口;判断目标接口的限流名单中是否包含客户端IP;在目标接口的限流名单中不包含客户端IP的情况下,获取目标接口的预设限流策略,其中,预设限流策略至少包括以下之一:限流频率和最大线程数,限流频率是预设时间段内限制访问目标接口的次数,最大线程数是目标接口同时处理访问请求的最大数量;基于预设限流策略执行对访问请求的限流操作,解决了相关技术中应用程序的单个接口访问量过大导致服务异常的问题。通过限流名单、限流频率和最大线程数等对访问目标接口的访问请求进行限流,从而实现针对应用程序中的单个接口的限流,进而达到了避免单个接口访问量过大导致服务异常的效果。
通过限流策略数量阈值和等待时长阈值判断预设限流策略是否可以执行,可选地,在本申请实施例提供的服务限流方法中,在基于预设限流策略执行对访问请求的限流操作之前,该方法还包括:确定目标应用程序当前执行的限流策略数量,并判断限流策略数量是否大于等于限流策略数量阈值;在限流策略数量小于限流策略数量阈值的情况下,确定等待执行预设限流策略的等待时长;判断等待时长是否大于等于等待时长阈值;在等待时长小于等待时长阈值的情况下,执行基于预设限流策略执行对访问请求的限流操作的步骤。
具体地,由于每个接口均设置有限流测略,目标应用程序可能存在多条限流策略同时执行的情况,若较多限流策略同时执行可能会影响目标应用程序的其他服务,因此通过限流策略数量阈值来限制限流策略的执行数量。在限流策略数量小于限流策略数量阈值的情况下,还需要判断待执行的预设限流策略的等待时长,若等待时长小于等待时长阈值则执行基于预设限流策略执行对访问请求的限流操作的步骤。通过限流策略数量阈值和等待时长阈值来对预设限流策略的执行进行限制,保障目标应用程序不会因为限流策略的执行影响正常服务。
需要说明的是,限流策略的详细执行机制为,每一条限流策略对应新建一个每秒限制(X)个访问请求的令牌桶,X默认大小为100,令牌桶容量的大小是限流策略的并发执行峰值,处理访问请求时若接口不需要限流则直接放行访问请求,若接口需要限流则从令牌桶取一个令牌,执行令牌对应的限流策略,每个令牌均设置有自己的等待时长阈值,若限流策略执行的等待时间超过限流服务策略信息表中的等待时长阈值或令牌桶内已无令牌则向客户端返回当前服务器繁忙,请稍后再试,否则就放行访问请求。
可选地,在本申请实施例提供的服务限流方法中,在判断限流策略数量是否大于等于限流策略数量阈值之后,该方法还包括:在限流策略数量大于等于限流策略数量阈值的情况下,向客户端返回第一提示信息,其中,第一提示信息用于提示目标应用程序的服务器繁忙;在判断等待时长是否大于等于等待时长阈值之后,方法还包括:在等待时长大于等于等待时长阈值的情况下,向客户端返回第一提示信息。
具体地,若限流策略数量大于等于限流策略数量阈值,说明目标应用程序的多个接口当前正在执行限流操作,为避免服务异常,目标应用程序当前无法执行预设限流策略,此时向客户端返回第一提示信息,例如“当前服务器繁忙,请稍后再试”。若限流策略小于限流策略数量阈值,说明目标应用程序当前可以执行预设限流策略,但是目标应用程序可能无空闲线程处理预设限流策略,因此预设限流策略需要等待处理,当等待处理的等待时长超过等待时长阈值的情况下,也向客户端返回“当前服务器繁忙,请稍后再试”的第一提示信息。通过向客户端返回第一提示信息,从而让客户端了解访问请求的处理进度。
可选地,在本申请实施例提供的服务限流方法中,限流频率通过以下方式确定:确定目标接口的目标等级,基于目标等级从预设关联关系表中确定目标等级关联的限流频率,其中,预设关联关系中包含多个关联关系,每个关联关系包含一种接口的等级和一个限流频率;将目标等级关联的限流频率确定为预设限流策略中的限流频率。
具体地,由于目标应用程序的不同接口的功能不同,需要承载的客户端的访问量也不同,因此为每个接口设置对应的等级,每个等级设置一个限流频率。接口的平均访问量越大,则限流频率设置的越大,进而保障客户端对接口的正常访问需求。基于目标应用程序的各个接口的历史平均访问量设置等级与限流频率的关联关系,每个接口基于接口的等级从预设关联关系表中获取具体的目标接口的限流频率。通过预设关联关系表向不同等级的接口提供对应的限流频率。
通过限流频率和最大线程数执行对访问请求的限流操作,可选地,在本申请实施例提供的服务限流方法中,在预设限流策略包括限流频率和最大线程数的情况下,基于预设限流策略执行对访问请求的限流操作包括:确定预设时间段内目标接口接收的访问请求的数量,计算数量与预设时间段的比值,得到接口访问频率;确定目标接口当期待执行的访问请求的数量,得到待执行数量;判断接口访问频率是否大于等于限流频率;在接口访问频率大于等于限流频率的情况下,将访问请求添加至待访问接口队列,其中,待访问接口队列包含所有等待访问目标接口的访问请求;在接口访问频率小于限流频率的情况下,判断待执行数量是否大于等于最大线程数;在待执行数量大于等于最大线程数的情况下,将访问请求添加至待处理队列,其中,待处理队列包含所有已访问目标接口并等待处理的访问请求;在待执行数量小于最大线程数的情况下,处理访问请求。
例如,预设时间段为1秒,目标接口1秒内接收到的访问请求的数量为10次,则接口访问频率为10次/秒,目标接口当前待执行的访问请求的数量,也即待执行数量为20,若限流频率为5次/秒,接口访问频率大于限流频率,说明目标接口当前接收到的访问量过大,无法直接处理访问请求,因此将当前接收到的访问请求添加至待访问接口队列,等到接口访问访问频率小于限流频率时再处理待访问接口队列中的访问请求。若目标接口的最大线程数为10,也即目标接口一次可以同时处理10个访问请求,待执行数量大于最大线程数,说明目标接口无法同时处理当前的所有访问请求。因此将访问请求添加至待处理队列。当待执行数量小于最大线程数时,目标接口再处理待处理队列中的访问请求。通过限流频率和最大线程数对目标接口进行限流,避免单个接口因为访问量过大导致的服务异常的问题。
通过限流名单阻止存在大量访问记录的客户端访问目标接口,可选地,在本申请实施例提供的服务限流方法中,在判断目标接口的限流名单中是否包含客户端IP之前,该方法还包括:确定每个客户端IP对目标接口同一批次的历史访问量;在同一批次的历史访问量大于等于目标接口的访问量阈值的情况下,将客户端IP添加至限流名单;在判断目标接口的限流名单中是否包含客户端IP之后,方法还包括:在目标接口的限流名单中包含客户端IP的情况下,向客户端返回第二提示信息,其中,第二提示信息用于表征目标应用程序拒绝客户端的访问。
具体地,通过查询目标应用程序中目标接口的历史访问记录,确定每个客户端IP是否存在同一批次的历史访问量超过目标接口的访问量阈值的情况。若某个客户端IP同一批次访问目标接口的请求量超过了并发量,也即超过访问量阈值,则将该客户端IP加入限流名单,若该客户端IP连续两个批次的访问都超过访问量阈值,自动修改限流名单里的记录禁止访问的名单,限制该客户端IP对于目标接口的访问,待确认客户端IP信息后若该客户端是正常申请产生的访问量超过访问量阈值则人工解除该客户端IP的限制访问,若该客户端是非正常申请则记录限制其访问目标接口。在目标接口查询到访问申请对应的客户端IP在限流名单中时,向客户端返回第二提示信息,例如,“对不起,您没有权限访问”。通过设置限流名单避免客户端的恶意申请,提供目标应用程序的安全性。
在对接口进行精细化限流之前,先通过整体限流控制对目标应用程序的所有接口的总访问量,可选地,在本申请实施例提供的服务限流方法中,在解析访问请求之前,该方法还包括:确定目标应用程序的所有接口的访问请求的总访问数量;判断总访问数量是否大于等于总访问数量阈值;在总访问数量大于等于总访问数量阈值的情况下,向客户端返回第一提示信息;在总访问数量小于总访问数量阈值的情况下,执行解析访问请求的步骤。
具体地,在某些特殊时间段,例如假期期间,目标应用程序的整体访问量可能会大幅度增多,此时可以通过nginx配置开启目标应用程序自带的限流功能,对于目标应用程序的请求的总访问数量进行控制。在总访问数量大于等于总访问数量阈值的情况下,对所有的访问请求分流平均负载到目标应用程序的多台服务器上面。并向各个客户端返回第一提示信息,若总访问数量小于总访问数量阈值,则执行解析访问请求的步骤。通过整体限流保障目标应用程序整体不会因访问量过大引起服务异常。
根据本申请的另一实施例,还提供了一种服务限流系统,图2是根据本申请实施例提供的服务限流系统的示意图。如图2所示,该系统包括:
限流服务策略信息存储装置201:用于记录网页系统对外提供的服务接口限流的参数信息,即针对单个接口的请求的限流策略,为限流操作提供策略数据。
限流灰名单信息存储装置202:通过记录访问请求中的不符合限流策略的IP、访问请求和接口等相关信息,限制该IP对于该接口的访问。
服务请求过滤装置203:对于用户对接口的访问,服务请求过滤装置203首先查询限流灰名单信息存储装置202中的灰名单,若访问通过了灰名单机制,再查询限流服务策略信息存储装置201的限流策略,对访问进行限流操作。
限流结果信息和回馈装置204:用户的访问请求在经过服务请求过滤装置203的过滤和限流之后,根据对应的限流结果信息返回给用户。
根据本申请实施例提供的服务限流系统,对网页应用程序的具体的接口进行精细化限流控制,包含接口请求IP、并发量、最大线程数、超时时间等具体的控制信息,对于单个接口访问做到安全有效的限流控制,完善网页应用程序的服务限流框架。
根据本申请的另一实施例,还提供了一种可选的服务限流方法,图3是根据本申请实施例提供的可选的服务限流方法的流程图。如图3所示,该方法包括:
步骤S301:通过nginx配置开启限流功能,对于web系统的整体服务的请求最大量进行控制。
具体地,通过nginx配置对web服务多台平均负载和反向代理,将web服务的请求分流平均负载到多台服务器上面。
步骤S302:通过限流服务接口清单信息存储表,记录每个API接口的限流控制参数,每个API分别对应存储一条限流策略。
具体地,限流策略中包含每秒限流频率、限流等待超时时间、接口等级、最大线程数、不同等级的限流频率。web请求在访问接口的时候,在限流服务接口清单信息存储表中查询该接口的限流策略信息。
步骤S303:通过web应用系统的请求过滤器拦截请求,查询限流灰名单信息和限流策略信息来控制请求。
具体地,在nginx限流请求分发到某台web服务器的时候,该服务器部署的请求过滤器基于限流灰名单信息和限流策略信息来处理请求。
步骤S304:通过限流服务接口灰名单信息存储表中存储的灰名单处理请求。
具体地,判断发出请求的客户端IP是否在灰名单里,且状态标记为异常,若在灰名单里则直接拦截请求,限制访问,如果不存在正常访问。
步骤S305:查询限流服务接口清单信息存储表中已经存储好的关于接口的限流策略信息,基于限流策略信息对请求进行限流。
具体地,对于该限流策略信息内的策略条目,详细的控制机制为,每一条策略对应新建一个每秒限制(X)个的令牌桶,令牌桶大小为100,令牌桶大小为限流策略的并发峰值,处理请求时如果不是需要限流的API则直接放行请求,是需要限流的API则从令牌桶取一个令牌,同时等待执行限流策略的等待时间如超过限流服务策略信息表内超时字段时间或令牌桶内已无令牌则返回当前服务器繁忙,请稍后再试,否则就放行请求。
步骤S306:将单个接口的请求量超过并发量的客户端IP加入灰名单。
具体地,某个客户端IP连续两个批次的访问都超过该接口并发量,自动修改灰名单,限制该客户端IP对于该接口的访问,待确认客户端IP正常访问的信息后人工解除对客户端IP的限制。
步骤S307:对于客户端IP的请求进行限流处理后,将对应的处理结果反馈给客户端。
通过本申请实施例提供的可选的服务限流方法,对主要关键参数都可配置化,在web服务整体限流的基础上,可以对单个客户端的IP访问的某个接口进行精细化限流,包含其访问的并发量、最大线程数等进行精准的限流,可以控制系统整体并发量比较大导致整体过大负载过量,同时支持控制单个接口大量并发过载导致的异常情况,极大的保证了系统的安全运行。根据不同的项目需求可以进行二次开发,可以对于不同的服务进行降级限流等的迭代优化升级,满足对于不同场景的接口进行限流。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例还提供了一种服务限流装置,需要说明的是,本申请实施例的服务限流装置可以用于执行本申请实施例所提供的用于服务限流方法。以下对本申请实施例提供的服务限流装置进行介绍。
图4是根据本申请实施例提供的服务限流装置的示意图。如图4所示,该装置包括:
接收单元401,用于接收客户端对目标应用程序的访问请求,解析访问请求,得到客户端的客户端IP、客户端访问目标应用程序的目标接口,其中,目标应用程序包含多个接口;
第一判断单元402,用于判断目标接口的限流名单中是否包含客户端IP;
获取单元403,用于在目标接口的限流名单中不包含客户端IP的情况下,获取目标接口的预设限流策略,其中,预设限流策略至少包括以下之一:限流频率和最大线程数,限流频率是预设时间段内限制访问目标接口的次数,最大线程数是目标接口同时处理访问请求的最大数量;
第一执行单元404,用于基于预设限流策略执行对访问请求的限流操作。
本申请实施例提供的服务限流装置,通过接收单元401,接收客户端对目标应用程序的访问请求,解析访问请求,得到客户端的客户端IP、客户端访问目标应用程序的目标接口,其中,目标应用程序包含多个接口;第一判断单元402,判断目标接口的限流名单中是否包含客户端IP;获取单元403,在目标接口的限流名单中不包含客户端IP的情况下,获取目标接口的预设限流策略,其中,预设限流策略至少包括以下之一:限流频率和最大线程数,限流频率是预设时间段内限制访问目标接口的次数,最大线程数是目标接口同时处理访问请求的最大数量;第一执行单元404,基于预设限流策略执行对访问请求的限流操作,解决了相关技术中应用程序的单个接口访问量过大导致服务异常的问题,通过限流名单、限流频率和最大线程数等对访问目标接口的访问请求进行限流,从而实现针对应用程序中的单个接口的限流,进而达到了避免单个接口访问量过大导致服务异常的效果。
可选地,在本申请实施例提供的服务限流装置中,该装置还包括:第一确定单元,用于确定目标应用程序当前执行的限流策略数量,并判断限流策略数量是否大于等于限流策略数量阈值;第二确定单元,用于在限流策略数量小于限流策略数量阈值的情况下,确定等待执行预设限流策略的等待时长;第二判断单元,用于判断等待时长是否大于等于等待时长阈值;第二执行单元,用于在等待时长小于等待时长阈值的情况下,执行基于预设限流策略执行对访问请求的限流操作的步骤。
可选地,在本申请实施例提供的服务限流装置中,该装置还包括:第一提示单元,用于在限流策略数量大于等于限流策略数量阈值的情况下,向客户端返回第一提示信息,其中,第一提示信息用于提示目标应用程序的服务器繁忙;该装置还包括:第二提示单元,用于在等待时长大于等于等待时长阈值的情况下,向客户端返回第一提示信息。
可选地,在本申请实施例提供的服务限流装置中,限流频率通过以下方式确定:确定目标接口的目标等级,基于目标等级从预设关联关系表中确定目标等级关联的限流频率,其中,预设关联关系中包含多个关联关系,每个关联关系包含一种接口的等级和一个限流频率;将目标等级关联的限流频率确定为预设限流策略中的限流频率。
可选地,在本申请实施例提供的服务限流装置中,在预设限流策略包括限流频率和最大线程数的情况下,第一执行单元404包括:第一确定模块,用于确定预设时间段内目标接口接收的访问请求的数量,计算数量与预设时间段的比值,得到接口访问频率;第二确定模块,用于确定目标接口当期待执行的访问请求的数量,得到待执行数量;第一判断模块,用于判断接口访问频率是否大于等于限流频率;第一添加模块,用于在接口访问频率大于等于限流频率的情况下,将访问请求添加至待访问接口队列,其中,待访问接口队列包含所有等待访问目标接口的访问请求;第二判断模块,用于在接口访问频率小于限流频率的情况下,判断待执行数量是否大于等于最大线程数;第二添加模块,用于在待执行数量大于等于最大线程数的情况下,将访问请求添加至待处理队列,其中,待处理队列包含所有已访问目标接口并等待处理的访问请求;处理模块,用于在待执行数量小于最大线程数的情况下,处理访问请求。
可选地,在本申请实施例提供的服务限流装置中,该装置还包括:第三确定单元,用于确定每个客户端IP对目标接口同一批次的历史访问量;添加单元,用于在同一批次的历史访问量大于等于目标接口的访问量阈值的情况下,将客户端IP添加至限流名单;该装置还包括:第三提示单元,用于在目标接口的限流名单中包含客户端IP的情况下,向客户端返回第二提示信息,其中,第二提示信息用于表征目标应用程序拒绝客户端的访问。
可选地,在本申请实施例提供的服务限流装置中,该装置还包括:第四确定单元,用于确定目标应用程序的所有接口的访问请求的总访问数量;第三判断单元,用于判断总访问数量是否大于等于总访问数量阈值;第四提示单元,用于在总访问数量大于等于总访问数量阈值的情况下,向客户端返回第一提示信息;第三执行单元,用于在总访问数量小于总访问数量阈值的情况下,执行解析访问请求的步骤。
服务限流装置包括处理器和存储器,上述接收单元401、第一判断单元402、获取单元403和第一执行单元404等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来避免单个接口访问量过大导致服务异常。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现服务限流方法。
本发明实施例提供了一种处理器,处理器用于运行程序,其中,程序运行时执行服务限流方法。
图5是根据本申请实施例提供的电子设备的示意图。如图5所示,电子设备501包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:接收客户端对目标应用程序的访问请求,解析访问请求,得到客户端的客户端IP、客户端访问目标应用程序的目标接口,其中,目标应用程序包含多个接口;判断目标接口的限流名单中是否包含客户端IP;在目标接口的限流名单中不包含客户端IP的情况下,获取目标接口的预设限流策略,其中,预设限流策略至少包括以下之一:限流频率和最大线程数,限流频率是预设时间段内限制访问目标接口的次数,最大线程数是目标接口同时处理访问请求的最大数量;基于预设限流策略执行对访问请求的限流操作。本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:接收客户端对目标应用程序的访问请求,解析访问请求,得到客户端的客户端IP、客户端访问目标应用程序的目标接口,其中,目标应用程序包含多个接口;判断目标接口的限流名单中是否包含客户端IP;在目标接口的限流名单中不包含客户端IP的情况下,获取目标接口的预设限流策略,其中,预设限流策略至少包括以下之一:限流频率和最大线程数,限流频率是预设时间段内限制访问目标接口的次数,最大线程数是目标接口同时处理访问请求的最大数量;基于预设限流策略执行对访问请求的限流操作。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
- 服务模块化的抽奖方法、装置、电子设备及存储介质
- 服务自动化部署方法、装置、电子设备及存储介质
- 电子设备的显示控制方法、装置、电子设备和存储介质
- 电子设备控制方法及装置、电子设备及存储介质
- 数据分布存储方法、装置、存储介质及电子设备
- 服务器限流方法、装置、电子设备及可读存储介质
- 服务限流响应方法、装置、电子设备及可读存储介质