CN110247857B - 限流方法及装置 - Google Patents

限流方法及装置 Download PDF

Info

Publication number
CN110247857B
CN110247857B CN201910430282.1A CN201910430282A CN110247857B CN 110247857 B CN110247857 B CN 110247857B CN 201910430282 A CN201910430282 A CN 201910430282A CN 110247857 B CN110247857 B CN 110247857B
Authority
CN
China
Prior art keywords
token
bucket
tokens
returning
regression
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
Application number
CN201910430282.1A
Other languages
English (en)
Other versions
CN110247857A (zh
Inventor
唐朝林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Taima Information Network Technology Co ltd
Original Assignee
Taima Information Network Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Taima Information Network Technology Co ltd filed Critical Taima Information Network Technology Co ltd
Priority to CN201910430282.1A priority Critical patent/CN110247857B/zh
Publication of CN110247857A publication Critical patent/CN110247857A/zh
Application granted granted Critical
Publication of CN110247857B publication Critical patent/CN110247857B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/215Flow control; Congestion control using token-bucket
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/22Traffic shaping
    • H04L47/225Determination of shaping rate, e.g. using a moving window

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及网络技术领域,尤其涉及限流方法及装置,包括:获取第三方应用程序的限流特征;基于限流特征向令牌发放桶中放置M个令牌、向令牌归还桶中放置N个令牌、生成针对令牌归还桶中令牌的回归参数以及生成令牌发放桶的令牌总容量;基于令牌发放桶中令牌的数量向第三方应用程序发送A个访问请求,对于每个访问请求而言:从令牌发放桶中选取一个令牌添加至访问请求,并将添加有令牌的访问请求发送给第三方应用程序,以使第三方应用程序根据访问请求生成携带有令牌的反馈信息;接收第三方应用程序发送的反馈信息,从反馈信息中提取出令牌,将提取出的令牌放置于令牌归还桶中;基于回归参数将到达回归时机的令牌从令牌归还桶归还至令牌发放桶中。

Description

限流方法及装置
技术领域
本发明涉及网络技术领域,尤其涉及限流方法及装置。
背景技术
随着现代应用程序的复杂化,互联网服务分工越来越明确,越来越专业化,应用研发不再是封闭的无依赖状态,而是会接入很多第三方应用程序,如地图接口和短信接口等。而在这种情况下,第三方应用程序的服务商为了确保应用程序的安全性会在应用程序的健壮性上做很多工作。其中,限流就是一种安全性措施,通过在第三方应用程序中加入限流策略能够防止不可控地流量对第三方应用程序造成占用,避免不可控地流量导致第三方应用程序无法访问。
然而,在本地应用程序对第三方应用程序进行访问的过程中,由于限流策略的限制,第三方应用程序可能会针对本地应用程序的访问请求返回大量错误,这样不仅降低了本地应用程序对第三方应用程序访问的有效性,而且返回的大量错误还会占用本地应用程序的资源,造成资源的浪费,降低了本地应用程序的处理效率。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的限流方法及装置。
依据本发明的第一个方面,本发明提供一种限流方法,应用于本地应用程序,所述本地应用程序用于与第三方应用程序进行数据交互,所述本地应用程序中设置有令牌发放桶和令牌归还桶,所述令牌发放桶和所述令牌归还桶用于存放令牌,所述方法包括:
获取所述第三方应用程序的限流特征;
基于所述限流特征,向所述令牌发放桶中放置M个令牌、向所述令牌归还桶中放置N个令牌、生成针对所述令牌归还桶中令牌的回归参数,以及生成所述令牌发放桶的令牌总容量,所述回归参数用于表征令牌从所述令牌归还桶回归到所述令牌发放桶的回归时机,M和N均为自然数,所述令牌发放桶的令牌总容量用于表征所述令牌发放桶允许容纳令牌数量的最大值;
基于所述令牌发放桶中令牌的数量向所述第三方应用程序发送A个访问请求,A为小于或等于M的自然数,其中,对于每个访问请求而言,所述本地应用程序向所述第三方应用程序发送所述访问请求包括:从所述令牌发放桶中选取一个令牌添加至所述访问请求,并将添加有令牌的所述访问请求发送给所述第三方应用程序,以使所述第三方应用程序根据所述访问请求生成携带有令牌的反馈信息;
接收所述第三方应用程序发送的所述反馈信息,并从所述反馈信息中提取出令牌,将提取出的令牌放置于所述令牌归还桶中;
基于所述回归参数和所述令牌发放桶的令牌总容量,在所述令牌发放桶的令牌数量未达到所述令牌总容量时,将到达所述回归时机的令牌从所述令牌归还桶归还至所述令牌发放桶中。
优选的,所述限流特征包括单位时间内允许访问次数和同时允许访问次数中的至少一种。
优选的,所述令牌添加于所述访问请求的头文件中。
优选的,所述回归参数包括回归时间和归置速率中的至少一种。
优选的,若所述限流特征为P秒内允许Q1次访问,P和Q1均为自然数,所述基于所述限流特征,向所述令牌发放桶中放置M个令牌、向所述令牌归还桶中放置N个令牌、生成针对所述令牌归还桶中令牌的回归参数,以及生成所述令牌发放桶的令牌总容量,包括:
向所述令牌发放桶中放置Q1个令牌;
向所述令牌归还桶中放置0个令牌;
生成的所述回归参数为回归时间,所述归回时间为P秒;
生成所述令牌发放桶的令牌总容量为Q1
优选的,若所述限流特征为同时允许Q2次访问,Q2为自然数,所述基于所述限流特征,向所述令牌发放桶中放置M个令牌、向所述令牌归还桶中放置N个令牌、生成针对所述令牌归还桶中令牌的回归参数,以及生成所述令牌发放桶的令牌总容量,包括:
向所述令牌发放桶中放置Q2个令牌;
向所述令牌归还桶中放置0个令牌;
生成的所述回归参数为回归时间,所述归回时间为0秒;
生成所述令牌发放桶的令牌总容量为Q2
优选的,若所述限流特征为P秒内允许Q1次访问且同时允许Q2次访问,P、Q1和Q2均为自然数,Q1大于Q2,所述基于所述限流特征,向所述令牌发放桶中放置M个令牌、向所述令牌归还桶中放置N个令牌、生成针对所述令牌归还桶中令牌的回归参数,以及生成所述令牌发放桶的令牌总容量,包括:
向所述令牌发放桶中放置Q2个令牌;
向所述令牌归还桶中放置Q1-Q2个令牌;
生成的所述回归参数为归置速率,所述归置速率为Q1/P秒;
生成所述令牌发放桶的令牌总容量为Q2
依据本发明的第二个方面,本发明提供一种限流装置,应用于本地应用程序,所述本地应用程序用于与第三方应用程序进行数据交互,所述本地应用程序中设置有令牌发放桶和令牌归还桶,所述令牌发放桶和所述令牌归还桶用于存放令牌,所述装置包括:
获取模块,用于获取所述第三方应用程序的限流特征;
配置模块,用于基于所述限流特征,向所述令牌发放桶中放置M个令牌、向所述令牌归还桶中放置N个令牌、生成针对所述令牌归还桶中令牌的回归参数,以及生成所述令牌发放桶的令牌总容量,所述回归参数用于表征令牌从所述令牌归还桶回归到所述令牌发放桶的回归时机,M和N均为自然数,所述令牌发放桶的令牌总容量用于表征所述令牌发放桶允许容纳令牌数量的最大值;
请求发送模块,用于基于所述令牌发放桶中令牌的数量向所述第三方应用程序发送A个访问请求,A为小于或等于M的自然数,其中,对于每个访问请求而言,所述本地应用程序向所述第三方应用程序发送所述访问请求包括:从所述令牌发放桶中选取一个令牌添加至所述访问请求,并将添加有令牌的所述访问请求发送给所述第三方应用程序,以使所述第三方应用程序根据所述访问请求生成携带有令牌的反馈信息;
提取模块,用于接收所述第三方应用程序发送的所述反馈信息,并从所述反馈信息中提取出令牌,将提取出的令牌放置于所述令牌归还桶中;
回归模块,用于基于所述回归参数和所述令牌发放桶的令牌总容量,在所述令牌发放桶的令牌数量未达到所述令牌总容量时,将到达所述回归时机的令牌从所述令牌归还桶归还至所述令牌发放桶中。
依据本发明的第三个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如前述第一个方面中的方法步骤。
依据本发明的第四个方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如前述第一个方面中的方法步骤。
根据本发明的限流方法及装置,应用于本地应用程序,本地应用程序用于与第三方应用程序进行数据交互,本地应用程序中设置有令牌发放桶和令牌归还桶,令牌发放桶和令牌归还桶用于存放令牌。首先获取第三方应用程序的限流特征。接着,基于限流特征,向令牌发放桶中放置M个令牌、向令牌归还桶中放置N个令牌、生成针对令牌归还桶中令牌的回归参数,以及生成令牌发放桶的令牌总容量,回归参数用于表征令牌从令牌归还桶回归到令牌发放桶的回归时机,M和N均为自然数,令牌发放桶的令牌总容量用于表征令牌发放桶允许容纳令牌数量的最大值。再,基于令牌发放桶中令牌的数量向第三方应用程序发送A个访问请求,A为小于或等于M的自然数,其中,对于每个访问请求而言,本地应用程序向第三方应用程序发送访问请求包括:从令牌发放桶中选取一个令牌添加至访问请求,并将添加有令牌的访问请求发送给第三方应用程序,以使第三方应用程序根据访问请求生成携带有令牌的反馈信息。然后,接收第三方应用程序发送的反馈信息,并从反馈信息中提取出令牌,将提取出的令牌放置于令牌归还桶中。最后,基于回归参数和令牌发放桶的令牌总容量,在令牌发放桶的令牌数量未达到令牌总容量时,将到达回归时机的令牌从令牌归还桶归还至令牌发放桶中。本发明借助令牌发放桶和令牌归还桶,通过执行上述令牌流转处理过程,能够使本地应用程序向第三方应用程序发送的访问请求不超出第三方应用程序的限流策略,不仅从客户端实现了对第三方应用程序的限流保护,还能够避免本地应用程序向第三方应用程序发送过多的访问请求,避免出现反馈大量错误的情况,提高了本地应用程序对第三方应用程序访问的有效性以及本地应用程序的处理效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考图形表示相同的部件。在附图中:
图1示出了本发明实施例中限流方法的流程图;
图2示出了本发明实施例中令牌的数据结构示意图;
图3示出了本发明实施例中令牌在本地应用程序和第三方应用程序之间流转的示意图;
图4示出了本发明实施例中限流装置的结构图;
图5示出了本发明实施例中计算机设备的结构图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例提供一种限流方法,该限流方法应用在本地应用程序中,本地应用程序位于客户端中。本地应用程序用于与第三方应用程序进行数据交互,具体地,本地应用程序用于与第三方应用程序的服务器进行数据交互。
参见图1,本发明实施例的限流方法包括:
步骤101:获取第三方应用程序的限流特征。
具体来讲,第三方应用程序的服务器中设置有限流策略,限流策略用于对本地应用程序的访问请求进行限流。即,如果本地应用程序向第三方应用程序的服务器发送的访问请求超过限流策略所限制的范围,第三方应用程序的服务器将会向本地应用程序返回错误。通常,本地应用程序的访问请求以网络爬虫的方式进行实现,因此,将会产生大量、高频的访问请求。这样,若第三方应用程序的服务器因为限流策略拒绝本地应用程序的访问请求,将会给本地应用程序返回大量错误,不仅降低了本地应用程序对第三方应用程序访问的有效性,而且返回的大量错误还会占用本地应用程序的资源,造成资源的浪费,降低了本地应用程序的处理效率。
进一步来讲,每个限流策略都具有对应的限流特征,根据限流策略能够提取出限流特征。不同的限流策略可以对应相同的限流特征,同时,不同的限流策略也可以对应不同的限流特征。下面将列举四种限流策略以及其对应的限流特征,以对此进行详细说明。
对于不同的限流策略对应不同的限流特征而言:
第一种限流策略为计数限流策略,其对应的限流特征可以为:单位时间内允许访问次数。即,通过设定单位时间内允许访问的最大次数来进行限流。具体地,限流特征可以为:P秒内允许Q1次访问,P和Q1均为自然数。例如,当P为60且Q1为60时,表明第三方应用程序的服务器将接口访问限制为:60秒内仅允许访问60次。
第二种限流策略为并发限流策略,其对应的限流特征可以为:同时允许访问次数。即,通过设定一个时刻下允许访问的最大次数来进行限流。具体地,限流特征可以为:同时允许Q2次访问,Q2为自然数。例如,当Q2为30时,表明第三方应用程序的服务器将接口访问限制为:同一时间仅允许访问30次。
对于不同的限流策略对应相同的限流特征而言:
第三种限流策略为漏桶限流策略,第四种限流策略为令牌桶限流策略,这两种限流策略均是针对双重限流条件的,由此这两种限流策略可以对应相同的限流特征,即对应的限流特征可以为:单位时间内允许访问次数和同时允许访问次数。即,通过设定单位时间内允许访问的最大次数,以及设定一个时刻下允许访问的最大次数,从而根据上述两个条件来共同进行限流。具体地,限流特征可以为:P秒内允许Q1次访问,且同时允许Q2次访问。例如,当P为60、 Q1为60且Q2为30时,表明第三方应用程序的服务器将接口访问限制为:60秒内仅允许访问60次且同一时间仅允许访问30次。
步骤102:基于限流特征,向令牌发放桶中放置M个令牌、向令牌归还桶中放置N个令牌、生成针对令牌归还桶中令牌的回归参数,以及生成令牌发放桶的令牌总容量,回归参数用于表征令牌从令牌归还桶回归到令牌发放桶的回归时机,M和N均为自然数,令牌发放桶的令牌总容量用于表征令牌发放桶允许容纳令牌数量的最大值。
具体来讲,在本发明实施例中,存在令牌发放桶和令牌归还桶,令牌发放桶和令牌归还桶均设置在本地应用程序的内部程序中。令牌发放桶和令牌归还桶均用于存放令牌(Token),且,令牌发放桶和令牌归还桶均以队列的形式进行实现。其中,令牌的数据结构如图2所示。
在获取到限流特征之后,根据限流特征生成本地应用程序的限流配置文件。限流配置文件中包含限流配置参数,限流配置参数包含令牌发放桶的初始令牌数、令牌归还桶的初始令牌数量、回归参数和令牌发放桶的令牌总容量。回归参数针对的是令牌归还桶中的令牌。回归参数用于表征令牌从令牌归还桶回归到令牌发放桶的回归时机。令牌发放桶的令牌总容量用于表征令牌发放桶允许容纳令牌数量的最大值。在本发明实施例中,根据限流配置文件向令牌发放桶中放置M个令牌以及向令牌归还桶中放置N个令牌。需要说明的是,步骤102中的M为令牌发放桶的初始令牌数量,步骤102中的N为令牌归还桶的初始令牌数量。
进一步来讲,初始令牌数量与限流特征相关。对于不同的限流特征,初始令牌数量可能相同也可能不同。另外,M可以为0,N也可以为0,若M和N均为0,则表明第三方应用程序的服务器拒绝任何访问请求,本地应用程序将停止向第三方应用程序的服务器发送访问请求。针对不同的限流特征对应相同的初始令牌数量而言,若第一限流特征为:60秒仅允许60次访问,则令牌发放桶的初始令牌数量为60个,即,在步骤102中,向令牌发放桶中放置60个令牌;若第二限流特征为:同时允许访问 60次,则令牌发放桶的初始令牌数量同样为60个,即,在步骤102中,向令牌发放桶中放置60个令牌。针对不同限流特征对应相同的初始令牌数量而言,若第一限流特征为:60秒仅允许60次访问,则令牌发放桶的初始令牌数量为60个,即,在步骤102中,向令牌发放桶中放置60个令牌;若第二限流特征为:同时允许访问 30次,则令牌发放桶的初始令牌数量为30个,即,在步骤102中,向令牌发放桶中放置30个令牌。
进一步来讲,在本发明实施例中,回归参数同样由限流特征确定。需要注意的是,令牌发放桶的初始令牌数量、令牌归还桶的初始令牌数量、回归参数和令牌发放桶的令牌总容量,这四个参数之间存在关联。利用这四个参数之间的配合能够使得本地应用程序对第三方应用程序的服务器发送的访问请求满足限流特征,反之,也就是说,根据限流特征能够得到具有关联性的令牌发放桶的初始令牌数量、令牌归还桶的初始令牌数量、回归参数和令牌发放桶的令牌总容量。回归参数包括回归时间和归置速率中的至少一种。下面将结合三种情况对步骤102进一步说明。
第一种情况针对的是计数限流策略,其对应的限流特征为:P秒内允许Q1次访问,P和Q1均为自然数。那么,步骤102具体为:向令牌发放桶中放置Q1个令牌,向令牌归还桶中放置0个令牌,生成的回归参数为回归时间,归回时间为P秒,生成令牌发放桶的令牌总容量为Q1。例如,限流特征为:60秒内仅允许访问60次,那么:生成60个令牌,并将这60个令牌都放入令牌发放桶中,令牌归还桶初始令牌数量为0,令牌发放桶的令牌总容量为60,同时,将令牌归还桶中的令牌的回归时间设置为60秒。
第二种情况针对的是并发限流策略,其对应的限流特征为:同时允许Q2次访问,Q2为自然数。那么,步骤102具体为:向令牌发放桶中放置Q2个令牌,向令牌归还桶中放置0个令牌,生成的回归参数为回归时间,回归时间为0秒,生成令牌发放桶的令牌总容量为Q2。例如,限流特征为:同时仅允许30次访问,那么:生成30个令牌,并将这30个令牌都放入令牌发放桶中,令牌归还桶初始令牌数量为0,生成所述令牌发放桶的令牌总容量为30同时,将令牌归还桶中的令牌的回归时间设置为30秒。
第三种情况针对的是漏桶限流策略或令牌桶限流策略,其对应的限流特征为:P秒内允许Q1次访问且同时允许Q2次访问,P、Q1和Q2均为自然数,Q1大于Q2。那么,步骤102具体为:向令牌发放桶中放置Q2个令牌,向令牌归还桶中放置Q1-Q2个令牌,生成的回归参数为归置速率,归置速率为Q1/P秒,生成令牌发放桶的令牌总容量为Q2。例如,限流特征为:60秒内仅允许访问60次且同一时间仅允许访问30次,那么:生成60个令牌,将这60个令牌中的30个令牌放入令牌发放桶中,同时将剩余的30个令牌放入令牌归还桶中,生成令牌发放桶的令牌总容量为30同时,将令牌归还桶中的令牌的归置速率设置为1秒/个。
步骤103:基于令牌发放桶中令牌的数量向第三方应用程序发送A个访问请求,A为小于或等于M的自然数,其中,对于每个访问请求而言,本地应用程序向第三方应用程序发送访问请求包括:从令牌发放桶中选取一个令牌添加至访问请求,并将添加有令牌的访问请求发送给第三方应用程序,以使第三方应用程序根据访问请求生成携带有令牌的反馈信息。
具体来讲,本地应用程序与第三方应用程序的服务器之间采用的数据传输协议可以为TCP/IP协议或HTTP协议。本地应用程序在向第三方应用程序的服务器发送访问请求的过程中,基于令牌发放桶中令牌的数量发放访问请求。例如,若令牌发放桶中仅有60个令牌,则本地应用程序仅可以向第三方应用程序的服务器发送60次访问请求。进一步,对于本地应用程序每次发送访问请求的过程而言,本地应用程序先判断令牌发放桶中是否存在令牌。若不存在令牌,则不会将访问请求发送给第三方应用程序的服务器。若存在令牌,则从令牌发放桶中选取一个令牌添加至访问请求中。在添加时,可以将令牌添加至访问请求的头文件(Header文件)中,从而数据传输协议能够自动处理该头文件,从而可以在第三方应用程序的服务器无感知情况下执行本地限流,使得本地应用程序所执行的限流过程不会对第三方应用程序造成任何影响。
接着,第三方应用程序的服务器在接收到访问请求之后,将会生成反馈信息。反馈信息携带有访问请求的头文件中包含的令牌。反馈信息中的令牌同样位于头文件中。在第三方应用程序的服务器将反馈信息发送给本地应用程序之后,执行步骤104:接收第三方应用程序发送的反馈信息,并从反馈信息中提取出令牌,将提取出的令牌放置于令牌归还桶中。
步骤105:基于回归参数和令牌发放桶的令牌总容量,在令牌发放桶的令牌数量未达到令牌总容量时,将到达回归时机的令牌从所述令牌归还桶归还至令牌发放桶中。
具体来讲,归还至令牌发放桶的令牌将可以重新被添加至访问请求中。令牌在本地应用程序和第三方应用程序的服务器之间的流转示意图如图3所示。
下面将结合前述三种情况对步骤103-步骤105进行详细说明。
针对第一种情况,若初始投放令牌后,令牌发放桶中的令牌分别为令牌1-令牌60。进一步,本地应用程序在向第三方应用程序的服务器发送访问请求时:从令牌发放桶中抽取一个令牌,如抽取到令牌1,则将令牌1添加到访问请求的头文件中。接着将添加有令牌1的访问请求发送给第三方应用程序的服务器。第三方应用程序的服务器根据访问请求生成携带有令牌1的反馈信息,并将反馈信息发送给本地应用程序。本地应用程序在接收到反馈信息之后,从反馈信息中提取出令牌1,并将令牌1放置到令牌归还桶中。由于令牌归还桶中令牌的归还时间为60秒,因此,在令牌1放置到令牌归还桶之后开始计时,当计时时间到达60秒之后,若令牌发放桶中的令牌数量未达到60,令牌1从令牌归还桶回归到令牌发放桶中。重新回归到令牌发放桶的令牌1可以再次被访问请求添加。通过上述过程能够保证本地应用程序在60秒内仅能够向第三方应用程序的服务器发送60次访问请求。
针对第二种情况,若初始投放令牌后,令牌发放桶中的令牌分别为令牌1-令牌30。进一步,本地应用程序在向第三方应用程序的服务器发送访问请求时:从令牌发放桶中抽取一个令牌,如抽取到令牌1,则将令牌1添加到访问请求的头文件中。接着将添加有令牌1的访问请求发送给第三方应用程序的服务器。第三方应用程序的服务器根据访问请求生成携带有令牌1的反馈信息,并将反馈信息发送给本地应用程序。本地应用程序在接收到反馈信息之后,从反馈信息中提取出令牌1,并将令牌1放置到令牌归还桶中。由于令牌归还桶中令牌的归还时间为0秒,因此,在令牌1放置到令牌归还桶之后,若令牌发放桶中的令牌数量未达到30,令牌1立刻从令牌归还桶回归到令牌发放桶中。重新回归到令牌发放桶的令牌1可以再次被访问请求添加。通过上述过程能够保证本地应用程序可以同时向第三方应用程序的服务器发送30次访问请求。
针对第三种情况,若初始投放令牌后,令牌发放桶中的令牌分别为令牌1-令牌30,令牌归还桶中的令牌分别为令牌31-令牌60。进一步,本地应用程序在向第三方应用程序的服务器发送访问请求时:在令牌发放桶侧,从令牌发放桶中抽取一个令牌,如抽取到令牌1,则将令牌1添加到访问请求的头文件中。接着将添加有令牌1的访问请求发送给第三方应用程序的服务器。第三方应用程序的服务器根据访问请求生成携带有令牌1的反馈信息,并将反馈信息发送给本地应用程序。本地应用程序在接收到反馈信息之后,从反馈信息中提取出令牌1,并将令牌1放置到令牌归还桶中。在令牌归还桶侧,令牌归还桶中令牌的归置速率为1秒/个,也就是说,每一秒将会有一个令牌从令牌归还桶回归到令牌发放桶中。同时,还需要保证令牌发放桶中的令牌数量不超过30个。若令牌发放桶中的令牌数量超过30个,将阻止到达回归时机的令牌回归。进一步,当令牌发放桶中的令牌数量小于令牌总容量时,将到达回归时机的令牌从令牌归还桶归还至令牌发放桶中,同样,此时还需要保证令牌发放桶中的令牌数量不超过令牌总容量。通过上述过程能够保证本地应用程序在60秒内仅能够向第三方应用程序的服务器发送60次访问请求,同时,可以同时向第三方应用程序的服务器发送30次访问请求。
需要说明的是,针对第一种情况和第二种情况而言,由于这两种方案中令牌归还桶与时间先后顺序相关,因此,令牌归还桶可以采用优先级队列实现(Priority Queue)。采用优先级队列实现令牌归还桶能够提高令牌归还桶的处理效率,从而进一步提高本地应用程序的处理效率。
基于同一发明构思,本发明实施例还提供一种限流装置,应用于本地应用程序,所述本地应用程序用于与第三方应用程序进行数据交互,所述本地应用程序中设置有令牌发放桶和令牌归还桶,所述令牌发放桶和所述令牌归还桶用于存放令牌,如图4所示,所述装置包括:
获取模块201,用于获取所述第三方应用程序的限流特征;
配置模块202,用于基于所述限流特征,向所述令牌发放桶中放置M个令牌、向所述令牌归还桶中放置N个令牌、生成针对所述令牌归还桶中令牌的回归参数,以及生成所述令牌发放桶的令牌总容量,所述回归参数用于表征令牌从所述令牌归还桶回归到所述令牌发放桶的回归时机,M和N均为自然数,所述令牌发放桶的令牌总容量用于表征所述令牌发放桶允许容纳令牌数量的最大值;
请求发送模块203,用于基于所述令牌发放桶中令牌的数量向所述第三方应用程序发送A个访问请求,A为小于或等于M的自然数,其中,对于每个访问请求而言,所述本地应用程序向所述第三方应用程序发送所述访问请求包括:从所述令牌发放桶中选取一个令牌添加至所述访问请求,并将添加有令牌的所述访问请求发送给所述第三方应用程序,以使所述第三方应用程序根据所述访问请求生成携带有令牌的反馈信息;
提取模块204,用于接收所述第三方应用程序发送的所述反馈信息,并从所述反馈信息中提取出令牌,将提取出的令牌放置于所述令牌归还桶中;
回归模块205,用于基于所述回归参数和所述令牌发放桶的令牌总容量,在所述令牌发放桶的令牌数量未达到所述令牌总容量时,将到达所述回归时机的令牌从所述令牌归还桶归还至所述令牌发放桶中。
优选的,所述限流特征包括单位时间内允许访问次数和同时允许访问次数中的至少一种。
优选的,所述令牌添加于所述访问请求的头文件中。
优选的,所述回归参数包括回归时间和归置速率中的至少一种。
优选的,若所述限流特征为P秒内允许Q1次访问,P和Q1均为自然数,配置模块202,包括:
第一配置单元,用于向所述令牌发放桶中放置Q1个令牌;
向所述令牌归还桶中放置0个令牌;
生成的所述回归参数为回归时间,所述归回时间为P秒;
生成所述令牌发放桶的令牌总容量为Q1
优选的,若所述限流特征为同时允许Q2次访问,Q2为自然数,配置模块202,包括:
第二配置单元,用于向所述令牌发放桶中放置Q2个令牌;
向所述令牌归还桶中放置0个令牌;
生成的所述回归参数为回归时间,所述归回时间为0秒;
生成所述令牌发放桶的令牌总容量为Q2
优选的,若所述限流特征为P秒内允许Q1次访问且同时允许Q2次访问,P、Q1和Q2均为自然数,Q1大于Q2,配置模块202,包括:
第三配置单元,用于向所述令牌发放桶中放置Q2个令牌;
向所述令牌归还桶中放置Q1-Q2个令牌;
生成的所述回归参数为归置速率,所述归置速率为Q1/P秒;
生成所述令牌发放桶的令牌总容量为Q2
基于同一发明构思,本发明第三实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述第一实施例所述的方法步骤。
基于同一发明构思,本发明第四实施例还提供了一种计算机设备,如图5所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该计算机设备可以为包括手机、平板电脑、PDA(Personal DigitalAssistant,个人数字助理)、POS(Point of Sales,销售终端)、车载电脑等任意终端设备,以计算机设备为手机为例:
图5示出的是与本发明实施例提供的计算机设备相关的部分结构的框图。参考图5,该计算机设备包括:存储器301和处理器302。本领域技术人员可以理解,图5中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图5对计算机设备的各个构成部件进行具体的介绍:
存储器301可用于存储软件程序以及模块,处理器302通过运行存储在存储器301的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器301可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储数据(比如音频数据、电话本等)等。此外,存储器301可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器302是计算机设备的控制中心,通过运行或执行存储在存储器301内的软件程序和/或模块,以及调用存储在存储器301内的数据,执行各种功能和处理数据。可选的,处理器302可包括一个或多个处理单元;优选的,处理器302可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。
在本发明实施例中,该计算机设备所包括的处理器302可以具有前述实施例中任一方法步骤所对应的功能。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (8)

1.一种限流方法,其特征在于,应用于本地应用程序,所述本地应用程序用于与第三方应用程序进行数据交互,所述本地应用程序中设置有令牌发放桶和令牌归还桶,所述令牌发放桶和所述令牌归还桶用于存放令牌,所述方法包括:
获取所述第三方应用程序的限流特征;所述限流特征包括单位时间内允许访问次数和同时允许访问次数中的至少一种;
基于所述限流特征,向所述令牌发放桶中放置M个令牌、向所述令牌归还桶中放置N个令牌、生成针对所述令牌归还桶中令牌的回归参数,以及生成所述令牌发放桶的令牌总容量,所述回归参数用于表征令牌从所述令牌归还桶回归到所述令牌发放桶的回归时机,M和N均为自然数,所述令牌发放桶的令牌总容量用于表征所述令牌发放桶允许容纳令牌数量的最大值;
基于所述令牌发放桶中令牌的数量向所述第三方应用程序发送A个访问请求,A为小于或等于M的自然数,其中,对于每个访问请求而言,所述本地应用程序向所述第三方应用程序发送所述访问请求包括:从所述令牌发放桶中选取一个令牌添加至所述访问请求,并将添加有令牌的所述访问请求发送给所述第三方应用程序,以使所述第三方应用程序根据所述访问请求生成携带有令牌的反馈信息;
接收所述第三方应用程序发送的所述反馈信息,并从所述反馈信息中提取出令牌,将提取出的令牌放置于所述令牌归还桶中;
基于所述回归参数和所述令牌发放桶的令牌总容量,在所述令牌发放桶的令牌数量未达到所述令牌总容量时,将到达所述回归时机的令牌从所述令牌归还桶归还至所述令牌发放桶中;
所述回归参数包括回归时间和归置速率中的至少一种。
2.如权利要求1所述的方法,其特征在于,所述令牌添加于所述访问请求的头文件中。
3.如权利要求1所述的方法,其特征在于,若所述限流特征为P秒内允许Q1次访问,P和Q1均为自然数,所述基于所述限流特征,向所述令牌发放桶中放置M个令牌、向所述令牌归还桶中放置N个令牌、生成针对所述令牌归还桶中令牌的回归参数,以及生成所述令牌发放桶的令牌总容量,包括:
向所述令牌发放桶中放置Q1个令牌;
向所述令牌归还桶中放置0个令牌;
生成的所述回归参数为回归时间,所述回归时间为P秒;
生成所述令牌发放桶的令牌总容量为Q1
4.如权利要求1所述的方法,其特征在于,若所述限流特征为同时允许Q2次访问,Q2为自然数,所述基于所述限流特征,向所述令牌发放桶中放置M个令牌、向所述令牌归还桶中放置N个令牌、生成针对所述令牌归还桶中令牌的回归参数,以及生成所述令牌发放桶的令牌总容量,包括:
向所述令牌发放桶中放置Q2个令牌;
向所述令牌归还桶中放置0个令牌;
生成的所述回归参数为回归时间,所述回归时间为0秒;
生成所述令牌发放桶的令牌总容量为Q2
5.如权利要求1所述的方法,其特征在于,若所述限流特征为P秒内允许Q1次访问且同时允许Q2次访问,P、Q1和Q2均为自然数,Q1大于Q2,所述基于所述限流特征,向所述令牌发放桶中放置M个令牌、向所述令牌归还桶中放置N个令牌、生成针对所述令牌归还桶中令牌的回归参数,以及生成所述令牌发放桶的令牌总容量,包括:
向所述令牌发放桶中放置Q2个令牌;
向所述令牌归还桶中放置Q1-Q2个令牌;
生成的所述回归参数为归置速率,所述归置速率为Q1/P秒;
生成所述令牌发放桶的令牌总容量为Q2
6.一种限流装置,其特征在于,应用于本地应用程序,所述本地应用程序用于与第三方应用程序进行数据交互,所述本地应用程序中设置有令牌发放桶和令牌归还桶,所述令牌发放桶和所述令牌归还桶用于存放令牌,所述装置包括:
获取模块,用于获取所述第三方应用程序的限流特征;所述限流特征包括单位时间内允许访问次数和同时允许访问次数中的至少一种;
配置模块,用于基于所述限流特征,向所述令牌发放桶中放置M个令牌、向所述令牌归还桶中放置N个令牌、生成针对所述令牌归还桶中令牌的回归参数,以及生成所述令牌发放桶的令牌总容量,所述回归参数用于表征令牌从所述令牌归还桶回归到所述令牌发放桶的回归时机,M和N均为自然数,所述令牌发放桶的令牌总容量用于表征所述令牌发放桶允许容纳令牌数量的最大值;
请求发送模块,用于基于所述令牌发放桶中令牌的数量向所述第三方应用程序发送A个访问请求,A为小于或等于M的自然数,其中,对于每个访问请求而言,所述本地应用程序向所述第三方应用程序发送所述访问请求包括:从所述令牌发放桶中选取一个令牌添加至所述访问请求,并将添加有令牌的所述访问请求发送给所述第三方应用程序,以使所述第三方应用程序根据所述访问请求生成携带有令牌的反馈信息;
提取模块,用于接收所述第三方应用程序发送的所述反馈信息,并从所述反馈信息中提取出令牌,将提取出的令牌放置于所述令牌归还桶中;
回归模块,用于基于所述回归参数和所述令牌发放桶的令牌总容量,在所述令牌发放桶的令牌数量未达到所述令牌总容量时,将到达所述回归时机的令牌从所述令牌归还桶归还至所述令牌发放桶中;
所述回归参数包括回归时间和归置速率中的至少一种。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一权利要求所述的方法的步骤。
8.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-5中任一权利要求所述的方法的步骤。
CN201910430282.1A 2019-05-22 2019-05-22 限流方法及装置 Active CN110247857B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910430282.1A CN110247857B (zh) 2019-05-22 2019-05-22 限流方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910430282.1A CN110247857B (zh) 2019-05-22 2019-05-22 限流方法及装置

Publications (2)

Publication Number Publication Date
CN110247857A CN110247857A (zh) 2019-09-17
CN110247857B true CN110247857B (zh) 2023-03-07

Family

ID=67884791

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910430282.1A Active CN110247857B (zh) 2019-05-22 2019-05-22 限流方法及装置

Country Status (1)

Country Link
CN (1) CN110247857B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111314238B (zh) * 2020-02-03 2023-12-05 网银在线(北京)科技有限公司 令牌的管理方法和装置、存储介质、电子装置
CN113742114A (zh) * 2020-09-28 2021-12-03 北京沃东天骏信息技术有限公司 一种系统限流的方法和装置
CN112311597B (zh) * 2020-10-28 2023-01-31 南京尚网网络科技有限公司 消息推送方法和装置
CN115665045A (zh) * 2022-09-06 2023-01-31 浙江大华技术股份有限公司 一种高并发限流方法、装置以及计算机存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103716326A (zh) * 2013-12-31 2014-04-09 华为技术有限公司 一种资源访问方法及用户资源网关
CN108494759A (zh) * 2018-03-14 2018-09-04 北京思特奇信息技术股份有限公司 一种访问请求处理方法、系统、设备和存储介质
CN109194765A (zh) * 2018-09-26 2019-01-11 中国平安人寿保险股份有限公司 请求控制方法、装置、计算机设备和存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103716326A (zh) * 2013-12-31 2014-04-09 华为技术有限公司 一种资源访问方法及用户资源网关
CN108494759A (zh) * 2018-03-14 2018-09-04 北京思特奇信息技术股份有限公司 一种访问请求处理方法、系统、设备和存储介质
CN109194765A (zh) * 2018-09-26 2019-01-11 中国平安人寿保险股份有限公司 请求控制方法、装置、计算机设备和存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Nginx限制访问速率和最大并发连接数模块--limit (防止DDOS攻击);网友;《术之多论坛》;20161203;第1-2页 *

Also Published As

Publication number Publication date
CN110247857A (zh) 2019-09-17

Similar Documents

Publication Publication Date Title
CN110247857B (zh) 限流方法及装置
CN109802941A (zh) 一种登录验证方法、装置、存储介质和服务器
CN109818937A (zh) 针对安卓权限的控制方法、装置、及存储介质、电子装置
CN106933871A (zh) 短链接处理方法、装置及短链接服务器
WO2014146527A1 (zh) 拦截应用程序中的植入信息的方法及装置
CN109635550B (zh) 集群数据的权限校验方法、网关及系统
CN108989263A (zh) 短信验证码攻击防护方法、服务器和计算机可读存储介质
CN109802919B (zh) 一种web网页访问拦截方法及装置
CN110224943B (zh) 基于url的流量服务限流方法、电子设备及计算机存储介质
CN107241344A (zh) 拦截客户端对恶意网络服务器的访问的方法、设备和系统
CN109743294A (zh) 接口访问控制方法、装置、计算机设备及存储介质
JP6368046B2 (ja) 検証方法及び装置
CN107666473A (zh) 一种攻击检测的方法及控制器
CN110138767B (zh) 事务请求的处理方法、装置、设备和存储介质
CN109086317A (zh) 风险控制方法和相关装置
JP6859518B2 (ja) サーバへの攻撃を防ぐ方法及びデバイス
CN114257551A (zh) 一种分布式限流的方法及系统、存储介质
CN113497807A (zh) 检测用户登录风险的方法、装置及计算机可读存储介质
CN113672757B (zh) 一种音频播放方法及装置
CN109327468A (zh) 一种下线提示方法、装置、设备及存储介质
CN103927191B (zh) 函数调用的资源配置方法和装置
WO2017050178A1 (zh) 一种数据鉴权方法和装置
CN107770162A (zh) 一种直播平台中防止刷礼物的方法及装置
CN110336840A (zh) 用于语音对话平台的第三方账号注册方法及系统
CN111970194B (zh) 一种api网关的配置及请求处理方法

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
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Current limiting methods and devices

Granted publication date: 20230307

Pledgee: Agricultural Bank of China Limited Shanghai Huangpu Sub branch

Pledgor: TAIMA INFORMATION NETWORK TECHNOLOGY Co.,Ltd.

Registration number: Y2024310000112

PE01 Entry into force of the registration of the contract for pledge of patent right