
1.本技术涉及信息处理技术领域,更具体地说,涉及一种限流方法、装置、设备及可读存储介质。
背景技术:2.限流一般是指社交软件或网络平台中某些内容的阅读量和推送量在一定时间内被限制,以使其热度降低。而多出来的流量一般会给平台方想要更多人看到的内容,示例如重大新闻事件、时政热点。
3.常用的限流技术是本地限流和中央限流,然而,现有的限流技术还存在一些问题。本地限流性能损耗小,虽然整体流量均衡,但某个接口可能会出现流量不均的情况,从而会导致误限操作。为了提高限流准确率通常会选择中央限流,但中央限流网络调用损耗较多,同时还需要额外的维护一套系统,增加了资源开销和运维成本。
4.因此,如何解决本地限流的误限以提高本地限流准确率是人们一直研究的问题。
技术实现要素:5.有鉴于此,本技术提供了一种限流方案,用于解决本地限流的误限以提高本地限流准确率。
6.为了实现上述目的,现提出的方案如下:
7.一种限流方法,包括:
8.计算本地限流额度;
9.接收流量请求,所述流量请求包括请求放行的流量额度;
10.判断所述本地限流额度是否足够用于扣减所述请求放行的流量额度;
11.若否,向预先建立互借连接的限流服务器发起流量借入请求;
12.接收所述限流服务器发出的流量借入请求结果,所述流量借入请求结果包括是否同意借出流量以及借出的流量额度;
13.若所述流量借入请求结果为同意借出流量,则接收所述限流服务器借出的流量并放行与所述借出的流量额度同等额度的流量。
14.优选地,所述限流方法,还包括:
15.若所述本地限流额度足够用于扣减所述请求放行的流量额度,则放行请求放行的流量。
16.优选地,若所述流量借入请求结果为不同意借出流量,还包括:
17.将所述限流服务器移入借入失败黑名单,处于所述借入失败黑名单中的限流服务器在设定时间内不作为流量借入的请求对象;
18.向建立互借连接的其它限流服务器发起流量借入请求,直至收到流量借入请求结果为同意借出流量或收到流量借入请求结果均为不同意借出流量。
19.优选地,所述互借连接的建立过程包括:
20.获取用户配置的借入数量;
21.获取当前处于在线状态的限流服务器的名单列表并对所述名单列表进行排序;
22.根据所述排序结果选取与所述借入数量同等数量的限流服务器,并与选取的限流服务器建立连接。
23.优选地,还包括:
24.定期对所述建立互借连接的限流服务器进行检测;
25.若检测到限流服务器运作异常,则将运作异常的限流服务器移入连接失败黑名单,处于所述连接失败黑名单中的限流服务器不作为流量额度互借对象;
26.定期检测所述连接失败黑名单中的限流服务器,若限流服务器运作正常则移出所述连接失败黑名单。
27.优选地,还包括:
28.若存在已经建立互借连接的限流服务器下线,则在设定时间后获取实时的在线限流服务器的名单列表,并重新进行排序;
29.若重新排序后的名单列表与重新排序前的名单列表不一致,则根据所述重新排序后的名单列表重新发起互借连接。
30.优选地,与限流服务器间建立的互借连接为长连接。
31.一种限流装置,包括:
32.额度计算单元,用于计算本地限流额度;
33.请求接收单元,用于接收流量请求,所述流量请求包括请求放行的流量额度;
34.额度判断单元,用于判断所述本地限流额度是否足够用于扣减所述请求放行的流量额度;
35.流量借入单元,用于在所述本地限流额度不足够用于扣减所述请求放行的流量额度的情况下,向预先建立互借连接的限流服务器发起流量借入请求;
36.流量接收单元,用于接收所述限流服务器发出的流量借入请求结果,所述流量借入请求结果包括是否同意借出流量以及借出的流量额度;
37.流量放行单元,用于若所述流量借入请求结果为同意借出流量,则接收所述限流服务器借出的流量并放行与所述借出的流量额度同等额度的流量。
38.一种限流设备,包括存储器和处理器;
39.所述存储器,用于存储程序;
40.所述处理器,用于执行所述程序,实现上述限流方法的各个步骤。
41.一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现上述限流方法的各个步骤。
42.从上述方案可以看出,本技术提供的限流方案包括:计算本地限流额度;接收流量请求,所述流量请求包括请求放行的流量额度;判断所述本地限流额度是否足够用于扣减所述请求放行的流量额度;若否,向预先建立互借连接的限流服务器发起流量借入请求;接收所述限流服务器发出的流量借入请求结果,所述流量借入请求结果包括是否同意借出流量以及借出的流量额度;若所述流量借入请求结果为同意借出流量,则接收所述限流服务器借出的流量并放行与所述借出的流量额度同等额度的流量。显然,本技术方案在放行流量时若本地限流额度不足,则根据本地限流额度向建立互借连接的限流服务器请求流量借
入,为限流节点提供了流量保障,避免了误限,从而可以提高本地限流的准确率。
43.进一步,提高本地限流准确率可以避免引入第三方系统,也无需做额外的额度存储,进而可以减少资源开销和运维成本。
附图说明
44.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
45.图1为本技术实施例提供的一种限流方法流程示意图;
46.图2为本技术实施例提供的一种互借列表维护时序图;
47.图3为本技术实施例提供的另一种限流方法流程示意图;
48.图4为本技术实施例公开的一种限流装置结构示意图;
49.图5为本技术实施例公开的一种限流设备的硬件结构框图。
具体实施方式
50.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
51.接下来对本技术的限流方法进行详细的介绍,请参照图1,图1为本技术实施例中提供的一种限流方法的流程示意图,该方法包括:
52.步骤s100:计算本地限流额度。
53.具体的,本地限流额度可以是由外部业务请求放行的流量总额度除以限流服务器的数量得到的平均额度。上述仅仅示例了一种可选的实施方式,本领域技术人员还可以通过其它方式实现上述过程。
54.步骤s110:接收流量请求,所述流量请求包括请求放行的流量额度。
55.具体的,所述流量请求包括所要访问的网页地址,以及访问该网页地址的流量额度,即请求放行的流量额度。
56.步骤s120:判断所述本地限流额度是否足够用于扣减所述请求放行的流量额度,若否,执行步骤s130。
57.具体的,可以比较本地限流额度与请求放行的流量额度的大小,进而可以比较结果判断本地限流额度是否足够用于扣减请求放行的流量额度。
58.步骤s130:向预先建立互借连接的限流服务器发起流量借入请求。
59.具体的,可以包括本地限流额度比请求放行的流量额度小,因此可以判断为本地限流额度不足够用于扣减请求放行的流量额度。
60.因此,可以向预先建立互借连接的限流服务器发起流量借入请求,上述限流服务器可以是同样接收前述步骤中的外部业务流量请求的、区别于本地限流服务器的限流服务器。
61.另外,限流服务器建立互借连接的过程可以参照后续相关叙述。
62.步骤s140:接收所述限流服务器发出的流量借入请求结果,所述流量借入请求结果包括是否同意借出流量以及借出的流量额度,判断所述流量借入请求结果是否为同意借出流量,若所述流量借入请求结果为同意借出流量,执行步骤s150。
63.具体的,所述流量借入请求结果可以包括以下情况:同意借出流量以及借出的流量额度,或不同意借出流量。
64.步骤s150:接收所述限流服务器借出的流量并放行与所述借出的流量额度同等额度的流量。
65.具体的,在接收到的流量借入请求结果为同意借出流量之后,可以接收限流服务器借出的流量,进而可以在本地放行与所述借出的流量额度同等额度的流量。
66.从上述方案可以看出,在放行流量时若本地限流额度不足,本技术可以根据本地限流额度向建立互借连接的限流服务器请求流量借入,为限流节点提供了流量保障,避免了误限,从而可以提高本地限流的准确率。
67.进一步,提高本地限流准确率可以避免引入第三方系统,也无需做额外的额度存储,进而可以减少资源开销和运维成本。
68.在本技术的一些实施例中,上述步骤s120,判断所述本地限流额度是否足够用于扣减所述请求放行的流量额度的结果还包括:本地限流额度比请求放行的流量额度大,也即说明本地限流额度足够用于扣减请求放行的流量额度,在此基础上,本技术可以直接放行请求放行的流量。
69.在本技术的一些实施例中,上述步骤s140,接收所述限流服务器发出的流量借入请求结果,该流量借入请求结果还可以为不同意借出流量,在收到此结果之后可以执行以下步骤:
70.s1、将所述限流服务器移入借入失败黑名单,处于所述借入失败黑名单中的限流服务器在设定时间内不作为流量借入的请求对象。
71.可以理解的是,为了避免重复向不同意借出流量的限流服务器发起流量借入请求,提高借入流量的效率,可以将不同意借出流量的限流服务器添加到借入失败黑名单,处于借入失败黑名单中的限流服务器在设定时间内不作为流量借入的请求对象。
72.s2、向建立互借连接的其它限流服务器发起流量借入请求,直至收到流量借入请求结果为同意借出流量或收到流量借入请求结果均为不同意借出流量。
73.具体的,向建立互借连接且区别于上述限流服务器的其它限流服务器发起流量借入请求,当接收到的流量借入请求结果为同意借出流量时,停止发起流量借入请求。此外,还可以包括当接收到的流量借入请求结果均为不同意借出流量时,停止发起流量借入请求。
74.从上述方案可以看出,考虑到第一次发起流量借入请求不一定收到同意借出流量的请求结果,因此,可以向未发起过流量借入请求的其它限流服务器发起流量借入请求,直至收到同意借出流量的请求结果或所有请求结果均为不同意借出流量,尽可能地保障了流量借入的成功率。
75.在本技术的一些实施例中,介绍了建立互借连接的限流服务器,接下来,将对建立互借连接的过程作介绍。
76.具体的,该过程可以包括以下步骤:
77.s1、获取用户配置的借入数量。
78.具体的,可以获取用户根据本地限流服务器配置的借入数量。其中,用户配置的借入数量由用户自定义得到,本技术不作严格限定。
79.s2、获取当前处于在线状态的限流服务器的名单列表并对所述名单列表进行排序。
80.具体的,可以将当前处于在线状态的限流服务器添加到名单列表,进而可以获取该名单列表然后进行排序。
81.一种可选的情况的下,可以根据ip地址(internet protocol address),即互联网协议地址,对该名单列表进行排序。上述仅仅示例了一种排序的可选实施方式,本领域技术人员还可以通过其它方式对所述名单列表进行排序。
82.s3、根据所述排序结果选取与所述借入数量同等数量的限流服务器,并与选取的限流服务器建立连接。
83.具体的,可以在排序后的名单列表里,从前往后选取与借入数量同等数量的限流服务器,进而与选取的限流服务器建立连接。
84.考虑到,为了避免频繁创建连接导致性能损耗,因此,一种可选的方式下,与限流服务器间的建立的互借连接方式可以是长连接方式。
85.从上述方案可以看出,当本地有流量借入请求时,可以向预先建立互借连接的限流服务器发起流量借入请求,进而可以有足够流量额度放行请求放行的流量,可以避免误限,提高限流效率。
86.为了确保建立互借连接的限流服务器均能正常运作,可以对其进行定期检测,详细可以参照以下过程。
87.具体的,本过程可以包括以下步骤:
88.s1、定期对所述建立互借连接的限流服务器进行检测。
89.具体的,在设定的检测周期可以对建立互借连接的限流服务器进行检测,检测是否均能正常运作。
90.s2、若检测到限流服务器运作异常,则将运作异常的限流服务器移入连接失败黑名单,处于所述连接失败黑名单中的限流服务器不作为流量额度互借对象。
91.具体的,在检测到某一个限流服务器运作异常之后,可以将其移入连接失败黑名单。其中,处于所述连接失败黑名单中的限流服务器不作为流量额度互借对象。
92.s3、定期检测所述连接失败黑名单中的限流服务器,若限流服务器运作正常则移出所述连接失败黑名单。
93.具体的,在设定的检测周期可以对连接失败黑名单中的限流服务器进行检测,若检测某一限流服务器到可以正常运作,可以将其移除连接失败黑名单。
94.此外,检测结果仍为运作异常的限流服务器可以不用移出连接失败黑名单。
95.从上述方案可以看出,对建立互借连接的限流服务器定期检测可以排除运作异常的限流服务器,从而保障发起流量借入请求时限流服务器均是运作正常的。
96.考虑到,某些业务需要限流服务器频繁上下线,接下来将对该情况下限流服务器的连接过程作介绍。
97.具体的,本过程可以包括以下步骤:
98.s1、若存在已经建立互借连接的限流服务器下线,则在设定时间后获取实时的在线限流服务器的名单列表,并重新进行排序。
99.具体的,限流服务器下线之后,可以不用立即建立新的互借连接,而是经过设定时间后,获取实时的在线限流服务器名单列表,进而可以重新排序。
100.s2、若重新排序后的名单列表与重新排序前的名单列表不一致,则根据所述重新排序后的名单列表重新发起互借连接。
101.具体的,可以判断重新排序后的名单列表与重新排序前的名单列表是否一致,若不一致,则可以根据重新排序的结果发起互借连接。其中,可以在排序后的名单列表里从前往后选取与所述借入数量同等数量的限流服务器,在选取的限流服务器中,已经建立连接的保持现状,未建立连接的发起互借连接。
102.接下来,将结合具体示例对上述过程进行介绍,详细请参照图2。
103.首先,本地限流服务器启动注册,注册过程可以包括配置的借入数量等。
104.然后,本地限流服务器可以向服务注册中心请求名单列表,进而本地限流服务器可以接收服务注册中心返回的名单列表,再根据名单列表选取借入列表,根据该借入列表选取所要建立连接的限流服务器,并建立互借长连接。
105.当有限流服务器上下线时,即有节点发生变动时,此时本地限流服务器可以向服务注册中心发送节点变动通知并请求更新名单列表,进而本地限流服务器可以接收服务注册中心返回的更新名单列表,再根据更新名单列表选取新借入列表,根据该新借入列表选取所要建立连接的限流服务器,并建立互借长连接。
106.为了对本技术作更详细的说明,接下来将参照图3,对本技术的具体示例作介绍。
107.具体的,可以包括以下步骤:
108.步骤s200、本地限流服务器接收外部业务的流量请求。
109.步骤s210、判断本地限流额度是否足够用于扣减请求放行的流量。若本地限流额度足够扣减,执行步骤s221,执行之后结束本流程;若本地限流额度不足够扣减,执行步骤s222及其后续步骤。
110.步骤s221、放行流量。
111.步骤s222、向建立互借连接的其它限流服务器发起流量借入请求。
112.步骤s230、接收其它限流服务器返回的流量借入请求结果,根据该流量请求结果判断其它限流服务器是否同意借出流量,若流量借入请求结果为同意借出流量,执行步骤s221;若流量借入请求结果为不同意借出流量,执行步骤s240及其后续步骤。
113.步骤s240、将不同意借出流量的限流服务器移入借入失败黑名单,处于借入失败黑名单的限流服务器在设定时间内不作为请求借入流量的对象。
114.步骤s250、判断所有流量借入请求结果是否均为不同意借出流量,若是,执行步骤s260,执行之后结束本流程;若否,执行步骤s222及其后续步骤。
115.步骤s260:停止发起流量借入请求。
116.下面对本技术实施例提供的限流装置进行描述,下文描述的限流装置与上文描述的限流装置可相互对应参照。
117.首先,结合图4对限流装置进行介绍,如图4所示,该限流装置可以包括:
118.额度计算单元100,用于计算本地限流额度;
119.请求接收单元110,用于接收流量请求,所述流量请求包括请求放行的流量额度;
120.额度判断单元120,用于判断所述本地限流额度是否足够用于扣减所述请求放行的流量额度;
121.流量借入单元130,用于在所述本地限流额度不足够用于扣减所述请求放行的流量额度的情况下,向预先建立互借连接的限流服务器发起流量借入请求;
122.流量接收单元140,用于接收所述限流服务器发出的流量借入请求结果,所述流量借入请求结果包括是否同意借出流量以及借出的流量额度;
123.流量放行单元150,用于若所述流量借入请求结果为同意借出流量,则接收所述限流服务器借出的流量并放行与所述借出的流量额度同等额度的流量。
124.可选的,所述限流装置,还可以包括:
125.流量直接放行单元,用于在所述本地限流额度足够用于扣减所述请求放行的流量额度的情况下,放行请求放行的流量。
126.可选的,所述限流装置还可以包括流量借入失败单元,所述流量借入失败单元可以包括:
127.第一黑名单移入单元,用于在所述流量借入请求结果为不同意借出流量的情况下,将所述限流服务器移入借入失败黑名单,处于所述借入失败黑名单中的限流服务器在设定时间内不作为流量借入的请求对象;
128.流量请求单元,用于向建立互借连接的其它限流服务器发起流量借入请求,直至收到流量借入请求结果为同意借出流量或收到流量借入请求结果均为不同意借出流量。
129.可选的,所述限流装置还可以包括互借连接建立单元,所述互借连接建立单元可以包括:
130.数量获取单元,用于获取用户配置的借入数量;
131.名单确定单元,用于获取当前处于在线状态的限流服务器的名单列表并对所述名单列表进行排序;
132.连接建立单元,用于根据所述排序结果选取与所述借入数量同等数量的限流服务器,并与选取的限流服务器建立连接。
133.可选的,上述连接建立单元与选取的限流服务器间建立的是长连接。
134.可选的,所述互借连接单元还可以包括检测单元,所述检测单元可以包括:
135.定期检测单元,用于定期对所述建立互借连接的限流服务器进行检测;
136.第二黑名单移入单元,用于若检测到限流服务器运作异常,则将运作异常的限流服务器移入连接失败黑名单,处于所述连接失败黑名单中的限流服务器不作为流量额度互借对象;
137.黑名单移出单元,用于定期检测所述连接失败黑名单中的限流服务器,若限流服务器运作正常则移出所述连接失败黑名单。
138.可选的,所述互借连接建立单元还可以包括名单变化确定单元,所述名单变化确定单元可以包括:
139.重新排序单元,用于若存在已经建立互借连接的限流服务器下线,则在设定时间后获取实时的在线限流服务器的名单列表,并重新进行排序;
140.重新连接单元,用于若重新排序后的名单列表与重新排序前的名单列表不一致,则根据所述重新排序后的名单列表重新发起互借连接。
141.本技术实施例提供的限流装置可应用于限流设备。图5示出了限流设备的硬件结构框图,参照图5,限流设备的硬件结构可以包括:至少一个处理器1,至少一个通信接口2,至少一个存储器3和至少一个通信总线4;
142.在本技术实施例中,处理器1、通信接口2、存储器3、通信总线4的数量为至少一个,且处理器1、通信接口2、存储器3通过通信总线4完成相互间的通信;
143.处理器1可能是一个中央处理器cpu,或者是特定集成电路asic(application specific integrated circuit),或者是被配置成实施本发明实施例的一个或多个集成电路等;
144.存储器3可能包含高速ram存储器,也可能还包括非易失性存储器(non
‑
volatile memory)等,例如至少一个磁盘存储器;
145.其中,存储器存储有程序,处理器可调用存储器存储的程序,所述程序用于:
146.计算本地限流额度;
147.接收流量请求,所述流量请求包括请求放行的流量额度;
148.判断所述本地限流额度是否足够用于扣减所述请求放行的流量额度;
149.若否,向预先建立互借连接的限流服务器发起流量借入请求;
150.接收所述限流服务器发出的流量借入请求结果,所述流量借入请求结果包括是否同意借出流量以及借出的流量额度;
151.若所述流量借入请求结果为同意借出流量,则接收所述限流服务器借出的流量并放行与所述借出的流量额度同等额度的流量。
152.可选的,所述程序的细化功能和扩展功能可参照上文描述。
153.本技术实施例还提供一种存储介质,该存储介质可存储有适于处理器执行的程序,所述程序用于:
154.计算本地限流额度;
155.接收流量请求,所述流量请求包括请求放行的流量额度;
156.判断所述本地限流额度是否足够用于扣减所述请求放行的流量额度;
157.若否,向预先建立互借连接的限流服务器发起流量借入请求;
158.接收所述限流服务器发出的流量借入请求结果,所述流量借入请求结果包括是否同意借出流量以及借出的流量额度;
159.若所述流量借入请求结果为同意借出流量,则接收所述限流服务器借出的流量并放行与所述借出的流量额度同等额度的流量。
160.可选的,所述程序的细化功能和扩展功能可参照上文描述。
161.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排
除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
162.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
163.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。