一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

访问控制方法、装置、存储介质及处理器与流程

2022-06-11 16:01:52 来源:中国专利 TAG:


1.本发明涉及应用程序接口调用技术领域,具体而言,涉及一种访问控制方法、装置、存储介质及处理器。


背景技术:

2.目前越来越多的平台将其内部的功能通过openapi(也称开放平台的应用程序接口)提供出来,方便企业和isv(independent software vendors,独立软件开发商)使用,从而使企业和isv可以使用第三方平台中的部分功能。例如,云安全访问服务sase作为目前最安全便捷的远程访问服务,同样也面临需要支持企业用户通过第三方平台认证登录的需求。
3.但是,由于使用第三方平台的企业和isv数量较多,会导致企业和isv应用的程序出现错误从而引发平台负载异常,因而,第三方平台会对接口设置一些限制,以防止应用的程序出现错误引发的平台负载异常。具体地,当超过接口的制时,调用对应接口会收到相应错误码并在等待一定时间以后才能再次调用,当面对突然上升的业务压力时,会触发开放平台的限流措施,从而造成一段时间应用的不可用。
4.针对上述在在对平台接口的访问超过限制条件的情况下,触发接口的限流措施,导致无法使用平台功能的问题,目前尚未提出有效的解决方案。


技术实现要素:

5.本发明实施例提供了一种访问控制方法、装置、存储介质及处理器,以至少解决在对平台接口的访问超过限制条件的情况下,触发接口的限流措施,导致无法使用平台功能的技术问题。
6.根据本发明实施例的一个方面,提供了一种访问控制方法,包括:服务器接收针对访问请求;判断服务器中的令牌桶中当前是否存储有令牌;在令牌桶中存储有令牌的情况下,将令牌分配给访问请求,并判断服务器中的熔断模块当前是否处于熔断状态;在熔断模块处于熔断状态的情况下,停止执行访问请求对应的访问行为;在熔断模块未处于熔断状态的情况下,执行访问请求对应的访问行为,并接收针对访问请求的响应信息,其中,熔断状态用于指示访问请求处于被限流状态;在响应信息指示访问成功的情况下,返回访问结果,在响应信息指示访问失败的情况下,停止执行访问请求对应的访问行为。
7.根据本发明实施例的一个方面,提供了一种访问控制装置,包括:第一接收单元,用于服务器接收针对访问请求;第一判断单元,用于判断服务器中的令牌桶中当前是否存储有令牌;第一分配单元,用于在令牌桶中存储有令牌的情况下,将令牌分配给访问请求,并判断服务器中的熔断模块当前是否处于熔断状态;第一停止单元,用于在熔断模块处于熔断状态的情况下,停止执行访问请求对应的访问行为;第一执行单元,用于在熔断模块未处于熔断状态的情况下,执行访问请求对应的访问行为,并接收针对访问请求的响应信息,其中,熔断状态用于指示访问请求处于被限流状态;第一返回单元,用于在响应信息指示访
问成功的情况下,返回访问结果,在响应信息指示访问失败的情况下,停止执行访问请求对应的访问行为。
8.根据本发明实施例的另一方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述任意一种访问控制方法。
9.根据本发明实施例的另一方面,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述任意一项所述的访问控制方法。
10.在本发明实施例中,采用服务器接收针对访问请求;判断服务器中的令牌桶中当前是否存储有令牌;在令牌桶中存储有令牌的情况下,将令牌分配给访问请求,并判断服务器中的熔断模块当前是否处于熔断状态;在熔断模块处于熔断状态的情况下,停止执行访问请求对应的访问行为;在熔断模块未处于熔断状态的情况下,执行访问请求对应的访问行为,并接收针对访问请求的响应信息,其中,熔断状态用于指示访问请求处于被限流状态;在响应信息指示访问成功的情况下,返回访问结果,在响应信息指示访问失败的情况下,停止执行访问请求对应的访问行为。通过设置令牌桶限流并增加熔断与透明重试机制,控制调用方单位时间内对访问次数,达到了避免访问请求超过接口的限制的目的,从而实现了避免业务长时间中断,保证业务的可用性和稳定性的技术效果,进而解决了在对平台接口的访问超过限制条件的情况下,触发接口的限流措施,导致无法使用平台功能的技术问题。
附图说明
11.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
12.图1是根据本发明实施例的计算机终端的硬件结构框图;
13.图2是根据本发明实施例一提供的访问控制方法的流程图;
14.图3为根据本发明实施例一提供的一种缓存模块的示意图;
15.图4为根据本发明实施例一提供的一种缓存模块运行的流程图;
16.图5a为根据本发明实施例一提供的一种令牌桶的示意图;
17.图5b为根据本发明实施例一提供的另一种令牌桶的示意图;
18.图6为根据本发明实施例一提供的一种令牌桶运行的流程图;
19.图7为根据本发明实施例一提供的一种熔断模块运行的流程图;
20.图8为根据本发明实施例二提供的一种访问控制方法的流程图;
21.图9是根据本发明实施例三提供的访问控制装置的示意图;
22.图10是根据本发明实施例的可选的计算机终端的结构框图。
具体实施方式
23.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
24.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
25.为了解决相关技术中在对平台接口的访问超过限制条件的情况下,触发接口的限流措施,导致无法使用平台功能的技术问题,相关技术中出现了以下方法:
26.方法一:调用openapi,当开放平台返回与限流相关的错误后,终止业务访问,返回用户错误提示,以指导用户稍后重试。但是,方法一具有以下缺点:1.终止业务访问,返回用户错误提示会直接导致该次业务访问失败;2.极易触发开放平台限流,导致服务一段时间内整体不可用;3.获取到错误返回的用户再次重试,导致更多api调用被开放平台限制,限流情况进一步恶化。
27.方法二:针对开放平台ip维度的限流,可以通过增加服务出口公网ip来进行缓解,服务调用openapi时轮流使用不同的出口ip访问开放平台,并且可以水平扩展。但是,方法二具有以下缺点:1.只能缓解开放平台统一接入层对ip维度的限流,对企业维度和api维度的限流无法解决。2.多个公网ip会增加服务提供商的成本。
28.为了解决上述问题,本技术实施例提供了一种访问控制方法、装置、存储介质及处理器,下面,对本技术实施例进行介绍:
29.首先,在对本技术实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
30.openapi:开放应用程序接口,也称开放平台应用程序接口。
31.api:application programming interface,应用程序接口。
32.限流:当请求达到一定的并发数或速率,就进行等待、排队、降级、拒绝服务等。
33.熔断:软件系统中,由于某些原因使得服务出现了过载现象,为防止造成整个系统故障,从而采用的一种保护措施。
34.令牌桶:用来控制发送到网络上数据的数目。
35.sase:secure access service edge,安全访问服务边缘。
36.idp:identity provider,身份提供者。
37.实施例一
38.根据本发明实施例,提供了一种访问控制的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
39.本技术实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现访问控制方法的计算机终端(或移动设备)的硬件结构框图。如图1所示,计算机终端10(或移动设备10)可以包括一个或多个(图中采用102a、102b,
……
,102n来示出)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻
辑器件fpga等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置。除此以外,还可以包括:显示器、输入/输出接口(i/o接口)、通用串行总线(usb)端口(可以作为i/o接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
40.应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本技术实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
41.存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的访问控制方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序对应的应用程序的接口的访问控制方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
42.传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(network interface controller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radio frequency,rf)模块,其用于通过无线方式与互联网进行通讯。
43.显示器可以例如触摸屏式的液晶显示器(lcd),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
44.在上述运行环境下,本技术提供了如图2所示的访问控制方法。图2是根据本发明实施例一的访问控制方法的流程图。
45.步骤s202,服务器接收针对访问请求。
46.具体的,服务器可以为云安全访问服务sase,应用程序接口可以为第三方平台上的api,sase可以支持用户调用第三方平台上的接口完成认证登录,从而提供远程访问服务。在用户向第三方平台发送接口访问请求的时候,访问请求会被服务器拦截,并根据第三方平台的设置对访问进行限制,从而保证在不触发第三方平台限制阈值的情况下成功对接口进行调用。
47.步骤s204,判断服务器中的令牌桶中当前是否存储有令牌。
48.具体的,令牌桶中的令牌可以用于对ip维度的访问请求进行限制,例如,ip1对应的访问请求在10分钟内最多可以调用平台上的api共1000次,所以在10分钟内令牌桶最多生产并发放1000个令牌。因而,在访问请求被服务器拦截之后,需要先判断令牌桶中是否还有令牌,在有令牌的情况则可以进行后续操作。
49.步骤s206,在令牌桶中存储有令牌的情况下,将令牌分配给访问请求,并判断服务
器中的熔断模块当前是否处于熔断状态。
50.具体的,在令牌桶中存储有令牌的情况下,访问请求获取令牌并执行下一步操作,由于不同企业、isv(independent software vendors,独立软件开发商)与api的限流阈值与重试时间间隔各不相同,所以每个企业和isv对应的每个api的限流阈值不同,当某企业或isv发送的访问请求超过对应的限流阈值的情况下,服务器会对该api进行熔断,所以,在访问请求获取令牌后,服务器需要判断该访问对应的api是否处于熔断状态,并根据熔断状态进行相应操作。
51.需要说明的是,为了应对突发的访问请求,可以根据桶内令牌的数量进行令牌的产生速率的调整,但是令牌桶在单位时间内不能超过每个api对应的调用阈值,从而导致令牌桶在固定时间内生产的令牌不能超过预设数量。
52.步骤s208,在熔断模块处于熔断状态的情况下,停止执行访问请求对应的访问行为。
53.具体的,在成功获取到令牌并确定熔断模块处于熔断状态的情况下,暂停该访问请求,并根据熔断情况进行调整,例如,在熔断模块指示等待2分钟即可进行访问,则可以等待2分钟以上的任务可以进行等待,不可以等待2分钟以上的任务可以进行访问错误信息的返回。
54.需要说明的是,熔断模块是根据开放平台api的响应信息做出限制。当开放平台api返回限流错误码时,熔断模块判断开放平台api此时不可再接收访问请求,同时根据开放平台api返回的错误码计算冷却时间并修改自身状态为熔断状态。冷却时间内不再允许请求访问开放平台。
55.为了确定是否将访问请求返回,可选地,在本技术实施例提供的访问控制方法中,在熔断模块处于熔断状态的情况下,停止执行访问请求对应的访问行为之后,该方法还包括:在熔断模块处于熔断状态的情况下,获取当前访问等待时间,并判断访问请求的超时时间是否小于当前访问等待时间;在访问请求的超时时间小于当前访问等待时间的情况下,返回访问错误信息;在访问请求的超时时间大于等于当前访问等待时间的情况下,判断访问重试次数是否大于等于预设访问重试次数;在访问重试次数大于等于预设访问重试次数的情况下,返回访问错误信息;在访问重试次数小于预设访问重试次数的情况下,在经过当前访问等待时间之后,执行访问请求对应的访问行为。
56.具体的,在熔断模块处于熔断状态的情况下,获取熔断状态对应的等待时间,并获取访问请求的超时时间,将超时时间与等待时间进行对比,在超时时间小于等待时间的情况下,表明该访问请求可以进行等待,则该访问请求开始等待,并在等待时间结束后重新进行开放平台api的访问,在超时时间大于等于等待时间的情况下,将访问请求对应的访问错误信息进行返回。
57.需要说明的是,在等待时间结束后重新进行开放平台api的访问之前,需要将访问重试次数与预设访问重试次数进行对比,在访问重试次数大于等于预设访问重试次数的情况下,将访问请求对应的访问错误信息进行返回,在访问重试次数小于预设访问重试次数的情况下,进行开放平台api的访问,从而获取访问结果。
58.还需要说明的是,在重新对开放平台api进行访问的时候,如果熔断模块仍然处于熔断状态,并且等待时间发生变更,此时访问请求仍然无法成功访问,此时,需要重新进行
超时时间和等待时间的比较,并将访问重试次数加1。
59.例如,访问请求的超时时间可以为5分钟,重试次数为0,等待时间可以为2分钟,预设访问重试次数为1,则该访问请求开始等待,并在2分钟后完成等待,并且重试次数也小于预设访问重试次数,则重新对开放平台api进行访问,但是,如果熔断模块仍然处于熔断状态,并且等待时间变更为4分钟,则返回访问错误信息。
60.步骤s210,在熔断模块未处于熔断状态的情况下,执行访问请求对应的访问行为,并接收针对访问请求的响应信息,其中,熔断状态用于指示访问请求处于被限流状态;
61.具体的,在熔断模块未处于熔断状态的情况下,可以成功执行访问请求对应的访问行为,并接收开放平台api返回的响应信息,其中,响应信息用于判断开放平台api是否可以返回访问请求对应的访问结果。
62.步骤s212,在响应信息指示访问成功的情况下,返回访问结果,在响应信息指示访问失败的情况下,停止执行访问请求对应的访问行为。
63.具体的,在接收开放平台api返回的响应信息时,由于在熔断模块从熔断状态变更为未熔断状态的时候,可能会由于短时间内访问请求过多造成的再次限流,此时,返回的响应信息为平台限流,导致访问请求需要再次等待,直至限流状态结束。
64.可选地,在响应信息指示访问失败的情况下,停止执行访问请求对应的访问行为之后,该方法还包括:根据响应信息确定访问等待时间,并判断访问请求的超时时间是否小于访问等待时间;在访问请求的超时时间小于访问等待时间的情况下,返回访问错误信息;在访问请求的超时时间大于等于访问等待时间的情况下,判断访问重试次数是否大于等于预设访问重试次数;在访问重试次数大于等于预设访问重试次数的情况下,返回访问错误信息;在访问重试次数小于预设访问重试次数的情况下,在经过访问等待时间之后,执行访问请求对应的访问行为。
65.具体的,在返回的响应信息为平台限流的情况下,需要判断访问请求的超时时间是否小于访问等待时间,在大于等于等待时间的情况下,进行开放平台api的访问,从而获取访问结果。
66.需要说明的是,在等待时间结束后重新进行响应信息的返回之前,需要将访问重试次数与预设访问重试次数进行对比,在访问重试次数大于等于预设访问重试次数的情况下,将访问请求对应的访问错误信息进行返回,在访问重试次数小于预设访问重试次数的情况下,进行开放平台api的访问,从而获取访问结果。
67.还需要说明的是,在重新对开放平台api进行访问的时候,如果返回的响应信息仍为平台限流的情况下,并且等待时间发生变更,此时访问请求仍然无法成功访问,此时,需要重新进行超时时间和等待时间的比较,并将访问重试次数加1。
68.为了提高获取访问请求对应的访问结果的效率,并减少对应用程序接口的调用次数,可选地,在本技术实施例提供的访问控制方法中,在判断服务器中的令牌桶中当前是否存储有令牌之前,该方法还包括:判断服务器的缓存中是否存在访问请求对应的访问结果,并在缓存中存在访问结果的情况下,返回访问结果;在缓存中不存在访问结果的情况下,执行判断服务器中的令牌桶中当前是否存储有令牌的步骤。
69.具体的,缓存可以为用于存储已经获取的访问结果的存储装置,例如,可以为服务器内存或分布式缓存系统。在判断服务器中的令牌桶中当前是否存储有令牌之前,可以先
在查询缓存中是否已存储该访问请求对应的访问结果,在缓存中已存储该访问请求对应的访问结果的情况下,可以直接调用缓存中的访问结果,无需获取令牌桶中的令牌。在缓存中没有存储该访问请求对应的访问结果的情况下,再进行令牌的获取和访问结果的获取操作。
70.为了从缓存中获取访问结果,可选地,在本技术实施例提供的访问控制方法中,缓存包括一级缓存和二级缓存,一级缓存的缓存时间大于二级缓存的时间,判断服务器的缓存中是否存在访问请求对应的访问结果,并在缓存中存在访问结果的情况下,返回访问结果包括:判断一级缓存中是否存在访问结果;在一级缓存中存在访问结果的情况下,返回访问结果;在一级缓存中不存在访问结果的情况下,判断二级缓存中是否存在访问结果;在二级缓存中存在访问结果的情况下,返回访问结果。
71.具体的,图3为根据本发明实施例一提供的一种缓存模块的示意图,如图3所示,一级缓存可以为服务器内存,二级缓存可以为分布式缓存系统,例如,redis分布式缓存系统。一级缓存的缓存时间的单位可以为秒,例如缓存30秒,在30秒后删除对应的访问结果,二级缓存的缓存时间的单位可以为分钟,例如缓存30分钟,在30分钟后删除对应的访问结果。
72.图4为根据本发明实施例一提供的一种缓存模块运行的流程图,如图4所示,在接收到访问请求的时候,缓存模块首先在一级缓存中查询是否存储该访问请求对应的访问结果,在一级缓存中已经存储该访问请求对应的访问结果的情况下,返回该访问结果,在一级存储中未存储该访问请求对应的访问结果的情况下,在二级缓存中查询是否存储该访问请求对应的访问结果,在二级缓存中已经存储该访问请求对应的访问结果的情况下,返回该访问结果,在二级存储中未存储该访问请求对应的访问结果的情况下,向应用程序的接口进行访问结果的获取请求,并在成功获取后返回访问结果。通过从缓存中获取请求结果,从而减轻接口的访问频率和访问压力。
73.为了将一级缓存和二级缓存中存储的访问结果进行同步更新,可选地,在本技术实施例提供的访问控制方法中,在二级缓存中存在访问结果的情况下,返回访问结果之后,该方法还包括:将访问结果同步至一级缓存中;在响应信息指示访问成功的情况下,返回访问结果之后,该方法还包括:将访问结果同步至一级缓存和二级缓存中。
74.具体的,如图4所示,在二级缓存中存在访问结果的情况下,返回访问结果,并将访问结果同步存储至一级缓存中,从而在接收到之后的访问结果相同的访问请求时,可以在一级缓存中直接获取并返回对应的访问结果。
75.同样的,在通过开放平台api获取到访问结果后,可以将访问结果同步存储至一级缓存和二级缓存中,从而在接收到之后的访问结果相同的访问请求时,可以在一级缓存和二级缓存中直接获取并返回对应的访问结果,从而提高访问结果的返回速度,同时减轻开放平台api的访问压力。
76.为了在不同流量的访问请求下对令牌产生的速率进行调整,可选地,在本技术实施例提供的访问控制方法中,在令牌桶中存储有令牌的情况下,将令牌分配给访问请求之后,该方法还包括:判断令牌桶中存储令牌的数量是否大于等于令牌数量阈值;在令牌桶中存储令牌的数量大于等于令牌数量阈值的情况下,按照预第一速率向令牌桶中发放令牌;在令牌桶中存储令牌的数量小于令牌数量阈值的情况下,按照第二速率向令牌桶中发放令牌,其中,第二速率大于第一速率。
77.具体的,令牌数量阈值可以为令牌桶中的某个令牌数量值,由于不同时段的访问请求量不同,并且领陪同可以为双速令牌桶,所以令牌桶可以根据请求数量对令牌的生产速度进行调整,在访问请求数量大的情况下,令牌桶中的令牌消耗速度快,导致令牌桶中的剩余令牌数量低于令牌数量阈值,则令牌桶需要快速生产令牌,即按照第二速率进行生产;在访问请求数量小的情况下,令牌桶中的令牌消耗速度慢,导致令牌桶中的剩余令牌数量大于等于令牌数量阈值,则令牌桶按照正常速率生产令牌即可,即按照第一速率进行生产
78.例如,图5a为根据本发明实施例一提供的一种令牌桶的示意图,如图5a所示,令牌桶的令牌数量阈值可以为40%,在访问请求数量大的情况下,令牌桶中的令牌消耗速度快,导致令牌桶中的剩余令牌数量低于40%,此时,令牌桶可以按照pr(peak rate:峰值速率)产生令牌,应对访问请求流量突然增大的情况;图5b为根据本发明实施例一提供的另一种令牌桶的示意图,如图5b所示,在访问请求数量小的情况下,令牌桶中的令牌消耗速度慢,导致令牌桶中的剩余令牌数量大于等于40%,此时,令牌桶可以按照cr(committed rate:承诺速率)产生令牌。本实施例通过调整令牌桶生产令牌的速率,达到了在不同访问请求流量下的令牌正常供应的效果。
79.为了避免出现大量未获取到令牌的访问请求重新发送访问请求导致服务器工作负荷增加,可选地,在本技术实施例提供的访问控制方法中,在判断服务器中的令牌桶中当前是否存储有令牌之后,该方法还包括:在令牌桶中未存储令牌的情况下,返回访问错误信息;或者,在令牌桶中未存储令牌的情况下,向访问请求发送预支令牌,并在预支令牌的生效时间到达之后,执行判断服务器中的熔断模块当前是否处于熔断状态的步骤。
80.具体的,由于固定时间段内令牌桶中发放令牌的数量是固定的,则在由于令牌发放完毕或者令牌未生产完成导致访问请求无法获取令牌的情况出现时,可以将无法等待的访问请求直接返回访问错误信息,或者向可以等待的访问请求发放预支令牌,其中,每个预支令牌具有生效时间,访问请求在预支令牌达到生效时间后,即可再次判断服务器中的熔断模块当前是否处于熔断状态,并在未熔断的情况下进行访问结果的获取。
81.图6为根据本发明实施例一提供的一种令牌桶运行的流程图,如图6所示,在令牌桶接收到访问请求的时候,可以判断令牌桶内是否有令牌,在有令牌的情况下,向对应的api发送访问请求,即进行下一步骤判断服务器中的熔断模块当前是否处于熔断状态,在令牌桶中没有令牌的情况下,获取预支令牌,在获取到预支令牌的情况下进行等待,在到达生效时间的时候,向对应的api发送访问请求,即进行下一步骤判断服务器中的熔断模块当前是否处于熔断状态,在未获取预支令牌的请况下,返回访问错误信息。
82.图7为根据本发明实施例一提供的一种熔断模块运行的流程图,如图7所示,在熔断模块接收到访问请求的时候,首先判断熔断模块的状态,在熔断模块处于熔断状态的情况下,获取熔断等待时间并判断能否进行等待,在不能等待的情况下返回访问错误信息,在能等待的情况下进行等待,并在熔断时间到达后判断当前熔断状态,在熔断模块处于未熔断状态的情况下,获取返回结果判断开放平台api是否被限流。
83.在限流的情况下,获取限流等待时间并判断能否进行等待,在不能等待的情况下返回访问错误信息,在能等待的情况下进行等待,并在限流等待时间到达后判断当前开放平台状态,在当前开放平台状态处于未限流状态的情况下,获取访问请求对应的访问结果。
84.实施例2
85.根据本发明实施例,还提供了另一种访问控制方法的流程图,如图8所示,该方法包括:
86.在服务器接收到访问请求的情况下,判断缓存模块中是否存储对应的访问结果,若存储则返回访问结果,若未存储则获取令牌桶中的令牌,令牌桶中没有令牌的情况下,进行等待或返回访问错误信息,在令牌桶中有令牌的情况下,获取令牌并进入熔断模块。
87.在熔断模块接收到访问请求的时候,首先判断熔断模块的状态,在熔断模块处于熔断状态的情况下,获取熔断等待时间并判断能否进行等待,在不能等待的情况下返回访问错误信息,在能等待的情况下进行等待,并在熔断时间到达后重试。
88.在熔断模块处于未熔断状态的情况下,获取返回结果判断开放平台api是否被限流,在限流的情况下,获取限流等待时间并判断能否进行等待,在不能等待的情况下返回访问错误信息,在能等待的情况下进行等待,并在限流等待时间到达后判断当前开放平台状态,在当前开放平台状态处于未限流状态的情况下,获取访问请求对应的访问结果。
89.本实施例通过设置二级缓存机制和令牌桶限流并增加熔断与透明重试机制,控制调用方单位时间内对第三方平台api总调用次数,并在开放平台熔断限流时返回信息自动计算等待时间,并在等待时间到达后自动透明重试,从而避免第三方开放平台接入层对ip维度限流造成的业务长时间中断,同时避免在在第三方平台对企业或者api维度限流时持续发送请求导致业务长时间中断,达到了避免请求频率超过平台接口的频率限制的目的,从而实现了避免业务长时间中断,保证业务的可用性和稳定性的技术效果,进而解决了在对平台接口的访问超过限制条件的情况下,触发接口的限流措施,导致无法使用平台功能的技术问题。
90.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
91.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
92.实施例3
93.根据本发明实施例,还提供了一种用于实施上述访问控制方法的访问控制装置,如图9所示,该装置包括:
94.第一接收单元91,用于服务器接收针对访问请求;
95.第一判断单元92,用于判断服务器中的令牌桶中当前是否存储有令牌;
96.第一分配单元93,用于在令牌桶中存储有令牌的情况下,将令牌分配给访问请求,并判断服务器中的熔断模块当前是否处于熔断状态;
97.第一停止单元94,用于在熔断模块处于熔断状态的情况下,停止执行访问请求对
应的访问行为;
98.第一执行单元95,用于在熔断模块未处于熔断状态的情况下,执行访问请求对应的访问行为,并接收针对访问请求的响应信息,其中,熔断状态用于指示访问请求处于被限流状态;
99.第一返回单元96,用于在响应信息指示访问成功的情况下,返回访问结果,在响应信息指示访问失败的情况下,停止执行访问请求对应的访问行为。
100.可选地,在本技术实施例提供的访问控制装置中,该装置还包括:第二判断单元,用于判断服务器的缓存中是否存在访问请求对应的访问结果,并在缓存中存在访问结果的情况下,返回访问结果;第二执行单元,用于在缓存中不存在访问结果的情况下,执行判断服务器中的令牌桶中当前是否存储有令牌的步骤。
101.可选地,在本技术实施例提供的访问控制装置中,缓存包括一级缓存和二级缓存,一级缓存的缓存时间大于二级缓存的时间,第二判断单元包括:第一判断模块,用于判断一级缓存中是否存在访问结果;第一返回模块,用于在一级缓存中存在访问结果的情况下,返回访问结果;第二判断模块,用于在一级缓存中不存在访问结果的情况下,判断二级缓存中是否存在访问结果;第二返回模块,用于在二级缓存中存在访问结果的情况下,返回访问结果。
102.可选地,在本技术实施例提供的访问控制装置中,在二级缓存中存在访问结果的情况下,返回访问结果之后,该方法还包括:将访问结果同步至一级缓存中;在响应信息指示访问成功的情况下,返回访问结果之后,该方法还包括:将访问结果同步至一级缓存和二级缓存中。
103.可选地,在本技术实施例提供的访问控制装置中,该装置还包括:第三判断单元,用于判断令牌桶中存储令牌的数量是否大于等于令牌数量阈值;第一发放单元,用于在令牌桶中存储令牌的数量大于等于令牌数量阈值的情况下,按照预第一速率向令牌桶中发放令牌;第二发放单元,用于在令牌桶中存储令牌的数量小于令牌数量阈值的情况下,按照第二速率向令牌桶中发放令牌,其中,第二速率大于第一速率。
104.可选地,在本技术实施例提供的访问控制装置中,该装置还包括:第二返回单元,用于在令牌桶中未存储令牌的情况下,返回访问错误信息;或者,在令牌桶中未存储令牌的情况下,向访问请求发送预支令牌,并在预支令牌的生效时间到达之后,执行判断服务器中的熔断模块当前是否处于熔断状态的步骤。
105.可选地,在本技术实施例提供的访问控制装置中,该装置还包括:第一获取单元,用于在熔断模块处于熔断状态的情况下,获取当前访问等待时间,并判断访问请求的超时时间是否小于当前访问等待时间;第三返回单元,用于在访问请求的超时时间小于当前访问等待时间的情况下,返回访问错误信息;第四判断单元,用于在访问请求的超时时间大于等于当前访问等待时间的情况下,判断访问重试次数是否大于等于预设访问重试次数;第四返回单元,用于在访问重试次数大于等于预设访问重试次数的情况下,返回访问错误信息;第三执行单元,用于在访问重试次数小于预设访问重试次数的情况下,在经过当前访问等待时间之后,执行访问请求对应的访问行为。
106.可选地,在本技术实施例提供的访问控制装置中,该装置还包括:第二获取单元,用于根据响应信息确定访问等待时间,并判断访问请求的超时时间是否小于访问等待时
间;第五返回单元,用于在访问请求的超时时间小于访问等待时间的情况下,返回访问错误信息;第五判断单元,用于在访问请求的超时时间大于等于访问等待时间的情况下,判断访问重试次数是否大于等于预设访问重试次数;第六返回单元,用于在访问重试次数大于等于预设访问重试次数的情况下,返回访问错误信息;第四执行单元,用于在访问重试次数小于预设访问重试次数的情况下,在经过访问等待时间之后,执行访问请求对应的访问行为。
107.此处需要说明的是,上述第一接收单元91,第一判断单元92,第一分配单元93,第一停止单元94,第一执行单元95,第一返回单元96,对应于实施例一中的步骤s202至步骤s212,六个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端10中。
108.实施例4
109.本发明的实施例可以提供一种计算机终端,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。
110.可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。
111.在本实施例中,上述计算机终端可以执行应用程序的访问控制方法中以下步骤的程序代码:服务器接收针对访问请求;判断服务器中的令牌桶中当前是否存储有令牌;在令牌桶中存储有令牌的情况下,将令牌分配给访问请求,并判断服务器中的熔断模块当前是否处于熔断状态;在熔断模块处于熔断状态的情况下,停止执行访问请求对应的访问行为;在熔断模块未处于熔断状态的情况下,执行访问请求对应的访问行为,并接收针对访问请求的响应信息,其中,熔断状态用于指示访问请求处于被限流状态;在响应信息指示访问成功的情况下,返回访问结果,在响应信息指示访问失败的情况下,停止执行访问请求对应的访问行为。
112.可选地,图10是根据本发明实施例的一种计算机终端的结构框图。如图10所示,该计算机终端a可以包括:一个或多个(图中仅示出一个)处理器、存储器、以及传输装置。
113.其中,存储器可用于存储软件程序以及模块,如本发明实施例中的访问控制方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的访问控制方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至终端a。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
114.处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:
115.服务器接收针对访问请求;判断服务器中的令牌桶中当前是否存储有令牌;在令牌桶中存储有令牌的情况下,将令牌分配给访问请求,并判断服务器中的熔断模块当前是否处于熔断状态;在熔断模块处于熔断状态的情况下,停止执行访问请求对应的访问行为;在熔断模块未处于熔断状态的情况下,执行访问请求对应的访问行为,并接收针对访问请求的响应信息,其中,熔断状态用于指示访问请求处于被限流状态;在响应信息指示访问成
功的情况下,返回访问结果,在响应信息指示访问失败的情况下,停止执行访问请求对应的访问行为。
116.采用本发明实施例,提供了一种访问控制的方案。采用服务器接收针对访问请求;判断服务器中的令牌桶中当前是否存储有令牌;在令牌桶中存储有令牌的情况下,将令牌分配给访问请求,并判断服务器中的熔断模块当前是否处于熔断状态;在熔断模块处于熔断状态的情况下,停止执行访问请求对应的访问行为;在熔断模块未处于熔断状态的情况下,执行访问请求对应的访问行为,并接收针对访问请求的响应信息,其中,熔断状态用于指示访问请求处于被限流状态;在响应信息指示访问成功的情况下,返回访问结果,在响应信息指示访问失败的情况下,停止执行访问请求对应的访问行为,通过设置令牌桶限流并增加熔断与透明重试机制,控制调用方单位时间内对访问次数,达到了避免访问请求超过接口的限制的目的,进而解决了在对平台接口的访问超过限制条件的情况下,触发接口的限流措施,导致无法使用平台功能的技术问题。
117.本领域普通技术人员可以理解,图10所示的结构仅为示意,计算机终端也可以是智能手机(如android手机、ios手机等)、平板电脑、掌声电脑以及移动互联网设备(mobile internet devices,mid)、pad等终端设备。图10其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图10中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图10所示不同的配置。
118.本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-only memory,rom)、随机存取器(random access memory,ram)、磁盘或光盘等。
119.实施例5
120.本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例一所提供的访问控制方法所执行的程序代码。
121.可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
122.可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:服务器接收针对访问请求;判断服务器中的令牌桶中当前是否存储有令牌;在令牌桶中存储有令牌的情况下,将令牌分配给访问请求,并判断服务器中的熔断模块当前是否处于熔断状态;在熔断模块处于熔断状态的情况下,停止执行访问请求对应的访问行为;在熔断模块未处于熔断状态的情况下,执行访问请求对应的访问行为,并接收针对访问请求的响应信息,其中,熔断状态用于指示访问请求处于被限流状态;在响应信息指示访问成功的情况下,返回访问结果,在响应信息指示访问失败的情况下,停止执行访问请求对应的访问行为。
123.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
124.在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
125.在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为
一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
126.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
127.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
128.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
129.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献