CN113645310A - 一种数据限流方法、装置、电子设备及可读存储介质 - Google Patents
一种数据限流方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN113645310A CN113645310A CN202110962815.8A CN202110962815A CN113645310A CN 113645310 A CN113645310 A CN 113645310A CN 202110962815 A CN202110962815 A CN 202110962815A CN 113645310 A CN113645310 A CN 113645310A
- Authority
- CN
- China
- Prior art keywords
- target
- access
- user identity
- record
- 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.)
- Pending
Links
Images
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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
-
- 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/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请提供了一种数据限流方法、装置、电子设备及可读存储介质,包括:根据目标流量访问请求,所述目标流量访问请求携带目标用户身份标识;根据所述目标用户身份标识获取所述目标用户身份标识的目标历史访问记录,所述目标历史访问记录为所述目标用户身份标识在设定时间窗口内的访问数据;若根据所述目标历史访问记录确定所述目标用户身份标识在设定时间窗口的访问次数超出设定阈值时,拒绝所述目标流量访问请求。本申请通过判断目标身份标识目标流量访问请求在设定时间窗口的访问次数,确定是否允许本次访问,实现用户独享个人数据,不同时间级别对个人分别限流。
Description
技术领域
本申请涉及互联网技术领域,具体而言,涉及一种数据限流方法、装置、电子设备及可读存储介质。
背景技术
随着互联网技术的快速发展,线上学习越来越受到人们的追捧,有时当有很多用户访问同一课程时,由于服务器的承载能力有限,很有可能超出预期的最大访问限度,进而导致服务器崩溃,用户上课体验不好。因而,需要对服务器进行限流。现目前,市面上常用的限流方案有固定时间窗口、滑动时间窗口、漏桶算法以及令牌桶算法等多种限流方案。但上述的各种限流方案都是针对的整个服务器及所有参与访问的用户进行限流处理的。
发明内容
有鉴于此,本申请实施例的目的在于提供一种数据限流方法。能够达到有针对性的效果。
第一方面,本申请实施例提供了一种数据限流方法包括:获取目标流量访问请求,所述目标流量访问请求携带目标用户身份标识;根据所述目标用户身份标识获取所述目标用户身份标识的目标历史访问记录,所述目标历史访问记录为所述目标用户身份标识在设定时间窗口内的访问数据;若根据所述目标历史访问记录确定所述目标用户身份标识在设定时间窗口的访问次数超出设定阈值时,拒绝所述目标流量访问请求。
本申请实施例通过对单个身份标识流量在设定的时间窗口的访问次数和设定的访问次数进行对比,判断该单个身份标识目标流量访问请求是否被允许,以实现对单个身份标识目标流量访问请求进行限流。
结合第一方面,本申请实施例提供了第一方面的第一种可能的实施方式,其中:所述目标历史访问记录为所述目标用户身份标识在设定时间窗口内对各个服务资源的访问数据;所述若根据所述目标历史访问记录确定所述目标用户身份标识在设定时间窗口的访问次数超出设定阈值时,拒绝所述目标流量访问请求,包括:根据所述目标流量访问请求确定出所述目标用户身份标识所需访问的目标服务资源;若根据所述目标历史访问记录确定所述目标用户身份标识在设定时间窗口内对所述目标服务资源的访问次数超出所述设定阈值时,拒绝所述目标流量访问请求。
本申请实施例通过判断一个用户,在设定的时间窗口对其访问的资源的访问次数,确定其是否能够进行访问,能够实现对单个用户在设定时间窗口针对目标资源进行限流,使得服务器可以针对单个对象、单个资源或某一时间窗口进行限流。
结合第一方面的第一种可能的实施方式,本申请实施例提供了第一方面的第二种可能的实施方式,其中:所述目标历史访问记录为所述目标用户身份标识在设定时间窗口内对各个服务资源的访问数据;所述若根据所述目标历史访问记录确定所述目标用户身份标识在设定时间窗口的访问次数超出设定阈值时,拒绝所述目标流量访问请求,包括:根据所述目标流量访问请求确定出所述目标用户身份标识所需访问的目标服务资源;从所述目标服务资源确定出与所述目标流量访问请求相对应的目标服务子资源,所述目标服资源中包括一个或多个服务子资源;若根据所述目标历史访问记录确定所述目标用户身份标识在设定时间窗口内对所述目标服务子资源的访问次数超出所述设定阈值时,拒绝所述目标流量访问请求。
本申请实施例通过判断一个用户,在设定的时间窗口对其访问的目标服务子资源的访问次数,确定其是否能够进行访问,能够实现对单个用户在设定时间窗口针对目标服务子资源进行限流,使得服务器可以针对单个对象、单个服务子资源或某一时间窗口进行限流。
结合第一方面的第二种可能的实施方式,本申请实施例提供了第一方面的第三种可能的实施方式,其中,所述目标流量访问请求包括多个子请求,所述若根据所述目标历史访问记录确定所述目标用户身份标识在设定时间窗口的访问次数超出设定阈值时,拒绝所述目标流量访问请求,包括:根据所述目标流量访问请求中的多个子请求,确定与所述多个子请求分别对应的多个目标服务资源;根据所述目标历史访问记录确定所述目标用户身份标识在设定时间窗口内对所述多个目标服务资源中的每一个目标服务资源的访问次数;从所述多个目标服务资源中确定访问次数超出所述设定阈值的至少一个目标服务资源,拒绝针对所述至少一个目标服务资源的至少一个子请求。
本申请实施例通过将目标历史访问记录的多个子请求在设定时间窗口分别与其相对应的目标服务资源中的访问次数进行判断,保证了多个子请求的独立性,实现了多个访问数据之间相互独立,互不影响的目的。
结合第一方面的第三种可能的实施方式,本申请实施例提供了第一方面的第四种可能的实施方式,其中,若所述目标用户身份标识在当前的设定时间窗口的访问次数未超出所述设定阈值,则允许所述目标流量访问请求,并更新所述目标用户身份标识对应的访问记录。
本申请实施例通过判定目标用户身份标识访问请求在阈值范围内后,目标访问资源就允许该目标流量进行访问,并在访问时更新其访问记录,以实现设定时间窗口内的访问记录实时更新,保证信息的准确性。
结合第一方面的第四种可能的实施方式,本申请实施例提供了第一方面的第五种可能的实施方式,其中,所述更新所述用户身份标识对应的访问记录,包括:确定所述目标服务资源所属的目标访问记录链表;其中,每一个访问记录链表对应至少一个服务资源,任意两个访问记录链表中的服务资源互不重叠;将所述当前访问记录更新在所述目标访问记录链表中。
本申请实施例通过目标服务资源确定出目标访问记录链表,并将当前访问记录更新在该目标访问记录链,以实现记录链的访问记录的实时更新,同时两个访问记录链之间的服务资源相互独立,能够保证多个目标服务资源对多个目标访问记录链的访问彼此独立,互不影响。
结合第一方面的第五种可能的实施方式,本申请实施例提供了第一方面的第六种可能的实施方式,其中,所述将所述当前访问记录更新在所述目标访问记录链表中,包括:将所述当前访问记录作为头记录更新在所述目标访问记录链表中。
本申请实施例通过将当前访问记录更新为目标访问记录链中的头记录,以实现数据记录以最近时间窗口的数据作为头记录形成记录链表,进而通过访问头记录逐条访问整个链表。
第二方面,本申请实施例还提供一种数据限流装置,包括:获取模块:用于获取目标流量访问请求,所述目标流量访问请求携带目标用户身份标识;请求模块:用于根据所述目标用户身份标识获取所述目标用户身份标识的目标历史访问记录,所述目标历史访问记录为所述目标用户身份标识在设定时间窗口内的访问数据;输出模块:若根据所述目标历史访问记录确定所述目标用户身份标识在设定时间窗口的访问次数超出设定阈值时,用于拒绝所述目标流量访问请求。
第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面的任一种可能的实施方式中的方法的步骤。
第四方面,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面的任一种可能的实施方式中的步骤。
本申请实施例提供的一种数据限流方法、装置、电子设备及可读存储介质通过将数据划分为不同的命名空间以及对用户的身份标识进行识别,将同一用户或不同用户的不同访问数据进行分别限流,且被划分为不同命名空间的数据对同一服务资源或不同服务资源的访问是彼此独立,互不影响的,以实现有针对性地进行限流,对某一数据限流时不会影响已经进行访问的数据,保证了服务器工作的稳定性。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的数据限流方法的运行环境示意图。
图2为本申请实施例提供的数据限流方法的信息交互示意图。
图3为本申请实施例提供的数据限流方法的流程图。
图4为本申请实施例提供的数据限流方法的模型示意图。
图5为本申请实施例提供的头记录单链示意图。
图6为本申请实施例提供的数据限流装置的功能模块示意图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在服务器被访问时,常常会因为访问量过大而导致系统卡顿、崩溃等问题,需要利用相应的算法对服务器及时、准确的进行流量限制。
目前的限流算法都是基于对服务器整体的流量访问总量进行设置,一旦达到最高访问量则拒绝其他任何访问者进行流量访问,所以通常使得限流的针对性不强,一旦达到较高访问量容易导致系统崩溃,稳定性较差。基于此,本申请提供一种数据限流方法、装置、电子设备及可读存储介质。下面对本申请实施例中的一种数据限流方法、装置、电子设备及可读存储介质进行描述。
实施例一
为便于对本实施例进行理解,首先对执行本申请实施例所公开的一种数据限流方法的电子设备进行详细介绍。
如图1所示,是本申请实施例提供的数据限流方法的运行环境示意图。其中,该运行环境中包括:控制台集群110、客户端集群120、服务端集群130、分布式协调服务器140以及持久化数据集群150。
该控制台集群110可以包括一个或多个控制台服务器,用于与服务端集群130进行通讯,以实现对服务端集群130的监听。该控制台服务器可以是网络服务器、数据库服务器,也可以是个人电脑(personal computer,PC)、平板电脑、智能手机、个人数字助理(personal digital assistant,PDA)等。该控制台集群110可以是控制器、远程监控器、个人电脑等。
可选地,控制台集群110启动后与分布式协调服务器140以及服务端集群130进行连接。
可选地,控制台集群110通过与分布式协调服务器140连接以获取服务节点信息;其中,该服务节点信息可以为目标流量访问请求需要访问的目标服务节点,如图1所示,目标服务节点可以为服务节点131、服务节点132、服务节点133以及备用节点134中的一个或多个。
可选地,每个服务节点可以有多个服务子节点,该服务节点信息还可以为目标流量访问请求需要访问的目标服务子节点;如图1所示,服务节点131可以有服务子节点1311、服务子节点1312、服务子节点1313等;备用节点134可以有备用子节点1341、备用子节点1342、备用子节点1343等。
可选地,控制台集群110通过与服务端集群130连接以对该服务端集群130进行监听。
该客户端集群120可以包括多个电子终端。该电子终端可以是个人电脑(personalcomputer,PC)、平板电脑、智能手机、个人数字助理(personal digital assistant,PDA)等。该电子终端可以通过用户账号登入服务端集群130,以获取服务端集群130提供的服务资源。
可选地,如图2所示,图2是本申请实施例提供的数据限流方法的信息交互示意图。客户端集群120启动后与分布式协调服务器140以及服务端集群130进行连接。客户端集群120通过与分布式协调服务器140连接以获取服务节点信息,该服务节点信息可以是目标流量访问请求需要访问的目标服务节点,该服务节点信息还可以是目标流量访问请求需要访问的目标服务子节点。客户端集群120通过获取到的服务节点信息逐一和服务节点或服务子节点建立远程过程调用连接,并创建对服务端集群130的监听。
可选地,客户端集群120发起请求时,根据用户身份标识选择对应的服务节点或服务子节点,并对该服务节点或服务子节点发消息,服务端集群130对该信息进行处理并返回处理结果。
可选地,客户端集群120分片可横向扩展,能够支持亿级用户分别限流。
可选地,客户端集群120设置有一定数量的备用节点,工作节点宕机后,服务迁移至备用节点。
该服务端集群130可以包括一个或多个服务器节点,图中示出了四个,分别为:服务节点131、服务节点132、服务节点133以及备用节点134,该服务器节点可以是网络服务器、数据库服务器等。该服务器节点可以基于客户端的请求,提供相关服务资源。
可选地,该服务端集群130启动后和持久化数据集群150建立连接,获取历史访问记录,并将访问记录储存到持久化数据集群150。该服务端集群130启动后还和分布式协调服务器140建立连接,并把自身信息注册到分布式协调服务器140。
可选地,服务端集群130自身信息包括但不限于服务器节点身份标识、服务器子节点身份标识、服务器节点端口、服务器子节点端口、服务器节点的用户身份识别区间、服务器子节点的用户身份识别区间等。
可选地,控制台集群110、客户端集群120与服务端集群130之间使用远程过程调用通信。
可选地,如图1所示运行环境中还可以包括分布式协调服务器140,该分布式协调服务器140用于接收服务端集群130的信息并为客户端集群120提供对应的服务节点信息。
可选地,如图1所示运行环境中还可以包括持久化数据集群150,该持久化数据集群150用于存储服务端集群130的访问记录。本实施例中的电子设备100可以用于执行本申请实施例提供的各个方法中的各个步骤。下面通过几个实施例详细描述一种数据限流方法的实现过程。
实施例二
请参阅图3,是本申请实施例提供的一种数据限流方法的流程图。下面将对图3所示的具体流程进行详细阐述。
步骤201,获取目标流量访问请求。
可选地,该目标流量访问请求携带目标用户身份标识。
可选地,该目标用户身份标识包括但不限于目标用户的身份信息、目标用户的访问数据、目标用户的空间命名(如访问记录链表)等。
步骤202,根据目标用户身份标识获取目标用户身份标识的目标历史访问记录。
可选地,该目标历史访问记录为目标用户身份标识在设定时间窗口内的访问数据。
可选地,一个时间段内形成一个记录,每次访问会对相应时间段内记录的访问数据进行更新。
可选地,该目标历史访问记录包括但不限于命名空间、用户身份标识、访问资源、时间窗口的起止时间、被允许访问的次数、被拒绝的访问次数等。
可选地,目标流量访问请求由客户端发送。
可选地,接收到目标流量访问请求后根据该请求中的身份信息、访问数据、空间命名等信息获取其对应访问记录,该访问记录为目标历史访问记录。
可选地,可以根据目标历史访问记录判断目标用户身份标识在设定时间窗口的访问次数是否超出设定阈值。
根据目标历史访问记录判断目标用户身份标识在设定时间窗口的访问次数是否超出设定阈值可以通过以下几种方式。
可选地,可以根据目标流量访问请求确定出目标用户身份标识所需访问的目标服务资源,根据目标历史访问记录判断目标用户身份标识在设定时间窗口内对目标服务资源的访问次数是否超出设定阈值。
可选地,可以根据目标流量访问请求确定出目标用户身份标识所需访问的目标服务资源,从该目标服务资源确定出与该目标流量访问请求相对应的目标服务子资源,根据目标历史访问记录判断目标用户身份标识在设定时间窗口内对该目标服务子资源的访问次数是否超出设定阈值。
可选地,上述的目标服务资源中包括一个或多个服务子资源。
可选地,上述目标流量访问请求包括多个子请求。
可选地,根据目标流量访问请求中的多个子请求,确定与该多个子请求分别对应的多个目标服务资源。
可选地,根据目标历史访问记录确定目标用户身份标识在设定时间窗口内对多个目标服务资源中的每一个目标服务资源的访问次数;根据该目标历史访问记录的多个子请求判断该目标用户身份标识在设定时间窗口内任意一个子请求对其对应的任意一个目标服务资源的访问次数是否超出设定阈值。
可选地,该目标服务资源可以是多个服务资源,该目标服务资源可以是多个子资源。
可选地,对同一用户的目标流量访问请求串行处理,即同一个用户身份标识的请求线性处理。
若根据目标历史访问记录确定目标用户身份标识在设定时间窗口的访问次数超出设定阈值时,则执行步骤203,若根据目标历史访问记录确定目标用户身份标识在设定时间窗口的访问次数未超出设定阈值时,则执行步骤204。
步骤203,拒绝所述目标流量访问请求。
本实施例中的数据限流方法还可以包括:步骤204,允许所述目标流量访问,并更新该目标用户身份标识对应的访问记录。
可选地,步骤204可以包括:确定该目标流量访问请求生成的当前访问记录以及该目标流量访问请求所对应的目标服务资源。确定该目标服务资源所属的目标访问记录链表(前述命名空间);将当前访问记录更新在目标访问记录链表中。
可选地,每一个访问记录链表可以对应至少一个服务资源,任意两个访问记录链表中的服务资源互不重叠。
可选地,每一个访问记录链表还可以对应至少一个服务子资源,任意两个访问记录链表中的服务子资源互不重叠。
可选地,将当前访问记录更新在目标访问记录链表中,包括:将当前访问记录作为头记录更新在目标访问记录链表中。
可选地,一个目标流量访问请求对一个资源进行访问,会形成一个记录,并更新记录数据,具体如下:
确定该目标流量访问请求对应的当前访问记录,对应的第一服务资源;根据该第一服务资源,确定当前访问记录所属的目标命名空间。对该目标用户身份标识在该目标命名空间中的访问记录进行更新。
根据命名空间、用户、资源获取当前记录的头记录。
若不存在头记录,则创建一个当前时间窗口的记录,并设置为新的头记录。此时,该记录被允许的访问次数和被拒绝的访问次数均初始化为0。
若存在头记录,且当前时刻不处于头记录的起止时间,则创建当前时间窗口的记录,并设置为新的头记录。此时,该记录被允许的访问次数和被拒绝的访问次数均初始化为0。
可选地,若访问被允许,把头记录的被允许的访问次数加一,或者把头记录的被拒绝的访问次数减一。
可选地,当前访问记录可以划分为不同命名空间。
可选地,该不同命名空间之间的数据相互独立,不同命名空间之间的访问记录互不影响。
示例性地,如图4所示,若两个不同命名空间的数据访问同一个服务资源或者同一个服务子资源,该两个不同命名空间的访问数据不会相互影响。若两个数据为相同的命名空间,则这两个数据访问同一个服务资源或者同一个服务子资源,其访问数据之间会相互影响。
可选地,每个命名空间包含有多项服务资源,其中每个服务资源可以包含多个服务子资源。
示例性地,如图4所示,服务资源可以包括:服务资源1、服务资源2、服务资源3以及服务资源4;服务资源1可以包括:服务子资源11、服务子资源12、服务子资源13以及服务子资源14;服务资源2可以包括:服务子资源21、服务子资源22、服务子资源23以及服务子资源24;服务资源3可以包括:服务子资源31、服务子资源32、服务子资源33以及服务子资源34。
可选地,用户可以独立访问命名空间中的服务资源,不同用户之前的访问记录互不影响。用户还可以独立访问命名空间中的服务子资源,不同用户之前的访问记录互不影响。
示例性地,如图4所示,用户1可以访问服务资源1、服务资源2、服务资源3中的一个或多个。用户2可以访问服务资源1、服务资源2、服务资源3中的一个或多个。用户3可以访问服务资源1、服务资源2、服务资源3中的一个或多个。
除此之外,用户1对服务资源1的访问,不会影响用户2、用户3对服务资源1的访问。用户3对服务资源1的访问,不会影响用户1对服务资源2、服务资源3的访问。
示例性地,如图4所示,用户1可以访问服务子资源11、服务子资源12、服务子资源13中的一个或多个。用户2可以访问服务子资源21、服务子资源22、服务子资源23中的一个或多个。用户3可以访问服务子资源31、服务子资源32、服务子资源33中的一个或多个。
除此之外,用户1对服务子资源11的访问,不会影响用户2、用户3对服务子资源11的访问。用户3对服务子资源11的访问,不会影响用户1对服务子资源12、服务子资源13的访问。
可选地,更新该用户身份标识对应的访问记录,还包括:确定目标流量访问请求对应的当前访问记录,对应的第二服务资源;确定当前访问记录所属的目标时间窗口;对该目标用户身份标识在该目标时间窗口的访问记录进行更新。
可选地,该时间窗口可以以秒、分钟、小时、周、天时间周期进行划分。在图4所示的实例中,该时间窗口设定为1h。
示例性地,若时间窗口以小时为窗口,且一台服务器向多个命名空间提供服务,在不考虑时区问题的情况下这些命名空间在同一时刻所处的自然小时是同一个,多台服务器也是如此。
可选地,如图5所示,是本申请实施例提供的头记录单链示意图。访问记录以最近时间窗口的数据为头记录形成记录链表,可通过链表头记录访问整个链表。
可选地,每个记录都可以通过下一个记录的指针找到下一个记录。从头记录开始,通过逐个遍历链表,实现整个链表的访问,直到记录的指针不存在。
不同规则的时间窗口的长度可以不同,具体可以按照需求设定,本申请实施例并不以时间窗口的长度为限。
可选地,可设置同一用户一个时间窗口内可以访问指定次数。示例性地,该指定次数可以是2、5、7、9、12、15等次数。
可选地,可设置同一用户两个时间窗口内可以访问指定次数。示例性地,该指定次数可以是2、5、7、9、12、15等次数。
可选地,可设置同一用户三个时间窗口内可以访问指定次数。示例性地,该指定次数可以是2、5、7、9、12、15等次数。
示例性地,如图4所示,若用户最近四个小时的访问记录如图所示,头记录为当前时刻的记录,另外,三个分别为当前时刻减1小时、当前时刻减2小时、当前时刻减3小时的记录。
可选地,若访问设置为同一用户一个时间窗口里只能访问第一指定服务资源2次。则验证时,只需要获取头记录的数据,通过头数据的访问次数数据,就可以完成验证。
可选地,若访问设置为同一用户三个自然小时里只能访问第二指定服务资源4次。则验证时,从头数据开始,通过记录的指针共获取三条记录,通过三个数据中的被允许的访问次数数据相加,即可完成验证。
可选地,更新该用户身份标识对应的访问记录后,将更新后的访问记录放入一个缓冲区,根据设定条件,当满足设定条件后对该访问记录进行存储操作。
示例性地,设定条可设置为:到达设定的存储数据时间周期执行一次数据存储操作。如,时间周期可设置为1秒、5秒、10秒等。
示例性地,设定条还可设置为:缓冲区内待存储的记录达到设定的阈值后执行数据存储操作。如,阈值可设置为记录数为50、记录数为100、记录数为200等。
可选地,可基于用户身份标识对服务器分片,每个服务器支持特定区间的用户身份标识。
示例性地,若使用分布式协调服务管理的户身份标识分片规则,控制台、客户端通过分布式协调服务获取分片规则后,直接与服务器通信。
具体地,服务器启动时,将自身的信息注册到分布式协调服务,该自身信息包括但不限于服务器身份标识、端口、服务的用户身份标识区间等。分布式协调服务接收到服务器的信息后,向服务器返回注册结果。
客户端启动时,从分布式协调服务可用的服务节点,通过获取的可用的服务节点与服务器建立连接,服务器向客户端返回相应的连接信息。
客户端发送请求数据时,通过用户身份标识找到服务该用户身份标识的服务节点并发送请求数据至服务器,服务器根据请求数据从持久化数据集群获取该数据的历史记录,持久化数据集群返回历史记录,服务器根据该历史记录返回限流结果。
服务器接收请求后,根据请求的用户身份标识通过哈希运算,将该请求提交给一个特定的单线程线程池,使同一个用户身份标识的请求线性处理。并根据命名空间找到处理器中的命名空间对象,交给命名空间对象处理。
本申请实施例提供的数据限流方法使用自然小时时间窗口统计访问数据,且历史统计访问数据可追溯,不仅可以实现秒、分钟级别的限流,还可实现小时、天、周级别的限流。
本申请实施例提供的数据限流方法是基于用户维度和资源维度统计,用户独享个人数据,能够实现面向用户分别限流。且,同一用户的请求串行处理,可支持多个资源组合的限流规则。
本申请实施例提供的数据限流方法中数据持久化存储于持久化数据集群中,服务端关闭重启后可恢复历史数据。
实施例三
基于同一申请构思,本申请实施例中还提供了与一种数据限流方法对应的一种数据限流装置,由于本申请实施例中的装置解决问题的原理与前述的一种数据限流方法实施例相似,因此本实施例中的装置的实施可以参见上述方法的实施例中的描述,重复之处不再赘述。
请参阅图6,是本申请实施例提供的一种数据限流装置的功能模块示意图。本实施例中的一种数据限流装置中的各个模块用于执行上述方法实施例中的各个步骤。一种数据限流装置包括获取模块301、请求模块302、输出模块303;其中,
获取模块301:用于获取目标流量访问请求,该目标流量访问请求携带目标用户身份标识。
请求模块302:用于根据目标用户身份标识获取目标用户身份标识的目标历史访问记录,该目标历史访问记录为该目标用户身份标识在设定时间窗口内的访问数据。
可选地,该目标历史访问记录为该目标用户身份标识在设定时间窗口内的访问数据。
输出模块303:若根据该目标历史访问记录确定该目标用户身份标识在设定时间窗口的访问次数超出设定阈值时,用于拒绝所述目标流量访问请求。
一种可能的实施方式中,该装置还包括:判断模块304用于根据目标流量访问请求确定出目标用户身份标识所需访问的目标服务资源;若根据该目标历史访问记录确定该目标用户身份标识在设定时间窗口内对该目标服务资源的访问次数超出所述设定阈值时,拒绝该目标流量访问请求。
一种可能的实施方式中,判断模块304还用于根据目标流量访问请求确定出目标用户身份标识所需访问的目标服务资源;从该目标服务资源确定出与该目标流量访问请求相对应的目标服务子资源,该目标服务资源中包括一个或多个服务子资源;若根据该目标历史访问记录确定该目标用户身份标识在设定时间窗口内对该目标服务子资源的访问次数超出设定阈值时,拒绝该目标流量访问请求。
一种可能的实施方式中,所述目标流量访问请求包括多个子请求。判断模块304还用于根据目标流量访问请求中的多个子请求,确定与该多个子请求分别对应的多个目标服务资源;根据目标历史访问记录确定目标用户身份标识在设定时间窗口内对多个目标服务资源中的每一个目标服务资源的访问次数;从该多个目标服务资源中确定访问次数超出所述设定阈值的至少一个目标服务资源,拒绝针对该至少一个目标服务资源的至少一个子请求。
一种可能的实施方式中,输出模块303还用于若该目标用户身份标识在当前的设定时间窗口的访问次数未超出设定阈值,则允许该目标流量访问请求,并更新该目标用户身份标识对应的访问记录。
一种可能的实施方式中,输出模块303还用于确定目标流量访问请求生成的当前访问记录以及目标流量访问请求所对应的目标服务资源;确定该目标服务资源所属的目标访问记录链表;其中,每一个访问记录链表对应至少一个服务资源,任意两个访问记录链表中的服务资源互不重叠;将当前访问记录更新在该目标访问记录链表中。
一种可能的实施方式中,输出模块303还用于将将当前访问记录作为头记录更新在目标访问记录链表中。
此外,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的一种数据限流方法的步骤。
本申请实施例所提供的一种数据限流方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的一种数据限流方法的步骤,具体可参见上述方法实施例,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种数据限流方法,其特征在于,包括:
获取目标流量访问请求,所述目标流量访问请求携带目标用户身份标识;
根据所述目标用户身份标识获取所述目标用户身份标识的目标历史访问记录,所述目标历史访问记录为所述目标用户身份标识在设定时间窗口内的访问数据;
若根据所述目标历史访问记录确定所述目标用户身份标识在设定时间窗口的访问次数超出设定阈值时,拒绝所述目标流量访问请求。
2.根据权利要求1所述的方法,其特征在于,所述目标历史访问记录为所述目标用户身份标识在设定时间窗口内对各个服务资源的访问数据;所述若根据所述目标历史访问记录确定所述目标用户身份标识在设定时间窗口的访问次数超出设定阈值时,拒绝所述目标流量访问请求,包括:
根据所述目标流量访问请求确定出所述目标用户身份标识所需访问的目标服务资源;
若根据所述目标历史访问记录确定所述目标用户身份标识在设定时间窗口内对所述目标服务资源的访问次数超出所述设定阈值时,拒绝所述目标流量访问请求。
3.根据权利要求1所述的方法,其特征在于,所述目标历史访问记录为所述目标用户身份标识在设定时间窗口内对各个服务资源的访问数据;所述若根据所述目标历史访问记录确定所述目标用户身份标识在设定时间窗口的访问次数超出设定阈值时,拒绝所述目标流量访问请求,包括:
根据所述目标流量访问请求确定出所述目标用户身份标识所需访问的目标服务资源;
从所述目标服务资源确定出与所述目标流量访问请求相对应的目标服务子资源,所述目标服务资源中包括一个或多个服务子资源;
若根据所述目标历史访问记录确定所述目标用户身份标识在设定时间窗口内对所述目标服务子资源的访问次数超出所述设定阈值时,拒绝所述目标流量访问请求。
4.根据权利要求1所述的方法,其特征在于,所述目标流量访问请求包括多个子请求,所述若根据所述目标历史访问记录确定所述目标用户身份标识在设定时间窗口的访问次数超出设定阈值时,拒绝所述目标流量访问请求,包括:
根据所述目标流量访问请求中的多个子请求,确定与所述多个子请求分别对应的多个目标服务资源;
根据所述目标历史访问记录确定所述目标用户身份标识在设定时间窗口内对所述多个目标服务资源中的每一个目标服务资源的访问次数;
从所述多个目标服务资源中确定访问次数超出所述设定阈值的至少一个目标服务资源,拒绝针对所述至少一个目标服务资源的至少一个子请求。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述目标用户身份标识在当前的设定时间窗口的访问次数未超出所述设定阈值,则允许所述目标流量访问请求,并更新所述目标用户身份标识对应的访问记录。
6.根据权利要求5所述的方法,其特征在于,所述更新所述用户身份标识对应的访问记录,包括:
确定所述目标流量访问请求生成的当前访问记录以及所述目标流量访问请求所对应的目标服务资源;
确定所述目标服务资源所属的目标访问记录链表;其中,每一个访问记录链表对应至少一个服务资源,任意两个访问记录链表中的服务资源互不重叠;
将所述当前访问记录更新在所述目标访问记录链表中。
7.根据权利要求5所述的方法,其特征在于,所述将所述当前访问记录更新在所述目标访问记录链表中,包括:
将所述当前访问记录作为头记录更新在所述目标访问记录链表中。
8.一种数据限流装置,其特征在于,包括:
获取模块:用于获取目标流量访问请求,所述目标流量访问请求携带目标用户身份标识;
请求模块:用于根据所述目标用户身份标识获取所述目标用户身份标识的目标历史访问记录,所述目标历史访问记录为所述目标用户身份标识在设定时间窗口内的访问数据;
输出模块:若根据所述目标历史访问记录确定所述目标用户身份标识在设定时间窗口的访问次数超出设定阈值时,用于拒绝所述目标流量访问请求。
9.一种电子设备,其特征在于,包括:处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述机器可读指令被所述处理器执行时执行如权利要求1至7任一所述的方法的步骤。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至7任一所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110962815.8A CN113645310A (zh) | 2021-08-20 | 2021-08-20 | 一种数据限流方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110962815.8A CN113645310A (zh) | 2021-08-20 | 2021-08-20 | 一种数据限流方法、装置、电子设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113645310A true CN113645310A (zh) | 2021-11-12 |
Family
ID=78423225
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110962815.8A Pending CN113645310A (zh) | 2021-08-20 | 2021-08-20 | 一种数据限流方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113645310A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113973087A (zh) * | 2021-11-24 | 2022-01-25 | 中国银联股份有限公司 | 一种网页访问限流方法、装置及计算机可读存储介质 |
CN114430395A (zh) * | 2022-03-02 | 2022-05-03 | 阿波罗智联(北京)科技有限公司 | 流量控制方法、装置、设备以及智能交通管理设备 |
CN114745328A (zh) * | 2022-02-16 | 2022-07-12 | 多点生活(成都)科技有限公司 | 一种网关动态限流方法及其构成的实时限流方法 |
CN114979273A (zh) * | 2022-04-11 | 2022-08-30 | 中国人民财产保险股份有限公司 | 请求的限流方法、装置、存储介质及电子设备 |
CN115086234A (zh) * | 2022-05-09 | 2022-09-20 | 阿里巴巴(中国)有限公司 | 消息处理方法及系统、设备及存储介质 |
CN115174483A (zh) * | 2022-04-25 | 2022-10-11 | 平安付科技服务有限公司 | 基于时间窗口的限流方法、装置、服务器和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040103324A1 (en) * | 2002-11-27 | 2004-05-27 | Band Jamie Angus | Automated security token administrative services |
CN1838118A (zh) * | 2005-03-24 | 2006-09-27 | 深圳市朗科科技有限公司 | 一种文件管理方法 |
CN108306874A (zh) * | 2018-01-29 | 2018-07-20 | 口碑(上海)信息技术有限公司 | 服务接口访问限流方法及装置 |
CN109274679A (zh) * | 2018-10-16 | 2019-01-25 | 郑州云海信息技术有限公司 | 一种访问请求记录方法、装置、设备及可读存储介质 |
CN110716794A (zh) * | 2019-10-14 | 2020-01-21 | 网银在线(北京)科技有限公司 | 信息处理方法、装置、系统和可读存储介质 |
WO2020199487A1 (zh) * | 2019-04-03 | 2020-10-08 | 平安科技(深圳)有限公司 | 访问请求的响应方法、装置、设备及存储介质 |
-
2021
- 2021-08-20 CN CN202110962815.8A patent/CN113645310A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040103324A1 (en) * | 2002-11-27 | 2004-05-27 | Band Jamie Angus | Automated security token administrative services |
CN1838118A (zh) * | 2005-03-24 | 2006-09-27 | 深圳市朗科科技有限公司 | 一种文件管理方法 |
CN108306874A (zh) * | 2018-01-29 | 2018-07-20 | 口碑(上海)信息技术有限公司 | 服务接口访问限流方法及装置 |
CN109274679A (zh) * | 2018-10-16 | 2019-01-25 | 郑州云海信息技术有限公司 | 一种访问请求记录方法、装置、设备及可读存储介质 |
WO2020199487A1 (zh) * | 2019-04-03 | 2020-10-08 | 平安科技(深圳)有限公司 | 访问请求的响应方法、装置、设备及存储介质 |
CN110716794A (zh) * | 2019-10-14 | 2020-01-21 | 网银在线(北京)科技有限公司 | 信息处理方法、装置、系统和可读存储介质 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113973087A (zh) * | 2021-11-24 | 2022-01-25 | 中国银联股份有限公司 | 一种网页访问限流方法、装置及计算机可读存储介质 |
CN113973087B (zh) * | 2021-11-24 | 2024-01-05 | 中国银联股份有限公司 | 一种网页访问限流方法、装置及计算机可读存储介质 |
CN114745328A (zh) * | 2022-02-16 | 2022-07-12 | 多点生活(成都)科技有限公司 | 一种网关动态限流方法及其构成的实时限流方法 |
CN114745328B (zh) * | 2022-02-16 | 2023-12-26 | 多点生活(成都)科技有限公司 | 一种网关动态限流方法及其构成的实时限流方法 |
CN114430395A (zh) * | 2022-03-02 | 2022-05-03 | 阿波罗智联(北京)科技有限公司 | 流量控制方法、装置、设备以及智能交通管理设备 |
CN114979273A (zh) * | 2022-04-11 | 2022-08-30 | 中国人民财产保险股份有限公司 | 请求的限流方法、装置、存储介质及电子设备 |
CN114979273B (zh) * | 2022-04-11 | 2024-03-29 | 中国人民财产保险股份有限公司 | 请求的限流方法、装置、存储介质及电子设备 |
CN115174483A (zh) * | 2022-04-25 | 2022-10-11 | 平安付科技服务有限公司 | 基于时间窗口的限流方法、装置、服务器和存储介质 |
CN115174483B (zh) * | 2022-04-25 | 2023-10-13 | 平安付科技服务有限公司 | 基于时间窗口的限流方法、装置、服务器和存储介质 |
CN115086234A (zh) * | 2022-05-09 | 2022-09-20 | 阿里巴巴(中国)有限公司 | 消息处理方法及系统、设备及存储介质 |
CN115086234B (zh) * | 2022-05-09 | 2024-04-26 | 阿里巴巴(中国)有限公司 | 消息处理方法及系统、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113645310A (zh) | 一种数据限流方法、装置、电子设备及可读存储介质 | |
US8955058B2 (en) | Automatically generating challenge questions inferred from user history data for user authentication | |
CN106534392B (zh) | 一种定位信息采集方法、定位方法及装置 | |
US8804573B2 (en) | Method and system for inferring presence of a principal based on past presence information | |
US8473512B2 (en) | Dynamic profile slice | |
WO2020248658A1 (zh) | 一种异常账户的检测方法及装置 | |
US9621726B2 (en) | Computer-implemented system and method for detecting events for use in an automated call center environment | |
US20120064919A1 (en) | Crowd creation system for an aggregate profiling service | |
CN110033302B (zh) | 恶意账户识别方法及装置 | |
US9565562B1 (en) | Knowledge based authentication using mobile devices | |
CN108390933B (zh) | 消息分发方法、装置、服务器及存储介质 | |
US20180276615A1 (en) | Address extraction from a communication | |
US9459933B1 (en) | Contention and selection of controlling work coordinator in a distributed computing environment | |
WO2019112624A1 (en) | Distributed identification in networked system | |
EP2991280A1 (en) | Content sharing method and social synchronizing apparatus | |
CN111652685A (zh) | 信息处理方法、装置、计算机设备及计算机可读存储介质 | |
WO2014146434A1 (en) | Methods and systems for managing user privileges | |
CN110781153B (zh) | 基于区块链的跨应用信息共享方法及系统 | |
WO2018231472A1 (en) | Identifying relationships from communication content | |
WO2015165230A1 (zh) | 一种社交消息的监测方法及装置 | |
CN108696418B (zh) | 一种社交网络中隐私保护方法及装置 | |
CN112995266A (zh) | 一种信息推送方法及相关设备 | |
CN108009247B (zh) | 信息推送方法及装置 | |
US20160225103A1 (en) | Methods, systems, and computer readable media for determining social compatibility using a selected group | |
EP3971754A1 (en) | Method and apparatus for identifying applets of risky content based on differential privacy preserving |
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 |