CN110417671B - 数据传输的限流方法和服务器 - Google Patents
数据传输的限流方法和服务器 Download PDFInfo
- Publication number
- CN110417671B CN110417671B CN201910706896.8A CN201910706896A CN110417671B CN 110417671 B CN110417671 B CN 110417671B CN 201910706896 A CN201910706896 A CN 201910706896A CN 110417671 B CN110417671 B CN 110417671B
- Authority
- CN
- China
- Prior art keywords
- access request
- server
- distributed cache
- cache system
- current limiting
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2416—Real-time traffic
-
- 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
-
- 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/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种数据传输的限流方法,应用于服务器,方法包括:响应于获取用于访问服务器的访问请求,确定服务器针对访问请求的限流阈值;基于访问请求,生成用于将访问请求存储于分布式缓存系统的存储数据;向分布式缓存系统发送存储数据,以便分布式缓存系统存储存储数据并返回针对存储数据的计数结果;接收计数结果;以及将计数结果与限流阈值进行比较,并根据比较结果确定是否对访问请求进行限流。本公开还提供了一种服务器。
Description
技术领域
本公开涉及互联网技术领域,更具体地,涉及一种数据传输的限流方法和一种服务器。
背景技术
随着互联网技术的发展,业务系统面临着大流量的冲击。特别是在促销活动时,业务系统的流量更会达到前所未有的峰值。为了保证系统在面对大流量冲击的时候仍然能正常运行对外提供服务,可以将业务系统拆分成分布式系统,在一定程度上缓解这个问题。然而,例如对于高并发交易的场景,流量的峰值可能会是平时流量峰值的几十倍。为了保证系统此时的正常运行,需要对系统的流量进行限制。
但传统的单节点限流无法对全局流量进行精准地控制,或基于数据库的全局限流无法应用于高并发场景。
发明内容
有鉴于此,本公开提供了一种数据传输的限流方法和服务器。
本公开的一个方面提供了一种数据传输的限流方法,应用于服务器,所述方法包括:响应于获取用于访问所述服务器的访问请求,确定所述服务器针对所述访问请求的限流阈值;基于所述访问请求,生成用于将所述访问请求存储于分布式缓存系统的存储数据;向所述分布式缓存系统发送所述存储数据,以便所述分布式缓存系统存储所述存储数据并返回针对所述存储数据的计数结果;接收所述计数结果;以及将所述计数结果与所述限流阈值进行比较,并根据比较结果确定是否对所述访问请求进行限流。
根据本公开的实施例,响应于获取到访问所述服务器的访问请求,确定所述服务器针对所述访问请求的限流阈值包括:响应于获取用于访问所述服务器的访问请求,确定所述访问请求所属的访问场景;获取限流配置信息,所述限流配置信息包括多个场景和限流阈值的对应关系;以及基于所述访问场景和所述限流配置信息,确定所述服务器针对所述访问请求的限流阈值。
根据本公开的实施例,所述方法还包括从所述分布式缓存系统中获取达到限流阈值的场景;以及向监控系统发送所述场景的场景信息,以通知所述监控系统所述场景已达到限流阈值。
根据本公开的实施例,至少一个场景包括多个维度,所述基于所述访问场景和所述限流配置信息,确定所述服务器针对所述访问请求的限流阈值包括:基于所述访问请求,确定所述访问请求所属的维度;以及基于所述维度和所述限流配置信息,确定所述服务器针对所述访问请求的限流阈值。
根据本公开的实施例,所述响应于获取用于访问所述服务器的访问请求,确定所述服务器针对所述访问请求的限流阈值包括:获取分配信息,所述分配信息包括所述服务器对不同地理区域的访问请求的限流分配;基于所述限流分配和所述访问请求所属的地理区域,确定所述服务器针对所述访问请求的限流阈值。
根据本公开的实施例,所述方法还包括:确定用于对所述访问请求进行计数的键值对的组数;以及基于所述限流阈值和所述组数,确定每个键值对组记录访问请求的数量,其中,向所述分布式缓存系统发送所述存储数据,以便所述分布式缓存系统存储所述存储数据并返回针对所述存储数据的计数结果包括:向所述分布式缓存系统发送所述存储数据,以便所述分布式缓存系统存储所述存储数据,并通过多个键值对组中的一个键值对组计数,以及返回针对所述存储数据的计数结果,所述将所述计数结果与所述限流阈值进行比较,并根据比较结果确定是否对所述访问请求进行限流包括:将所述计数结果与所述数量进行比较,并根据比较结果确定是否对所述访问请求进行限流。
根据本公开的实施例,所述基于所述访问请求,生成用于将所述访问请求存储于分布式缓存系统的存储数据包括:为所述访问请求分配随机数;以及基于所述随机数和所述访问请求,生成用于将所述访问请求存储于分布式缓存系统的关键字;其中,所述向所述分布式缓存系统发送所述存储数据,以便所述分布式缓存系统存储所述存储数据并返回针对所述存储数据的计数结果包括:向所述分布式缓存系统发送所述关键字,以便所述分布式缓存系统根据所述关键字中的随机数从所述多个键值对组中确定出一个键值对组存储所述存储数据并返回针对所述存储数据的计数结果。
根据本公开的实施例,所述方法还包括向所述分布式缓存系统发送第一验证信息,以向所述分布式缓存系统写入所述第一验证信息;以及向所述分布式缓存系统发送请求获取所述第一验证信息的获取请求;响应于接收到来自所述分布式缓存系统的第二验证信息,确定所述第二验证信息是否与所述第一验证信息一致;以及在确定所述第二验证信息与所述第一验证信息不一致的情况下,输出所述分布式缓存系统工作异常的消息。
根据本公开的实施例,所述方法还包括响应于接收到控制指令,获取所述分布式缓存系统中的计数数据;以及将所述计数数据写入到本地文件。
本公开的另一个方面提供了一种服务器,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行上述的方法。
本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
根据本公开的实施例,可以至少部分地解决无法对访问服务器的流量进行精准地控制,无法应对高并发场景的问题,并因此可以实现对访问服务器的流量进行精准地控制并且能够应用高并发场景的技术效果。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的可以应用数据传输的限流方法的示例性系统架构;
图2示意性示出了根据本公开的实施例的数据传输的限流方法的流程图;
图3示意性示出了根据本公开实施例的确定服务器针对访问请求的限流阈值的流程图;
图4示意性示出了根据本公开另一实施例的限流方法的流程图;
图5示意性示出了根据本公开实施例的限流系统的整体结构框图;
图6示意性示出了根据本公开实施例的配置信息控制台中存储的限流配置信息的一种示例;
图7示意性示出了根据本公开实施例的第一限流单元执行的限流方法流程图;
图8示意性示出了根据本公开实施例的触发限流事件监控单元登记在第三预设时间段内达到限流阈值的场景的流程图;
图9示意性示出了根据本公开实施例的指定服务器向监控系统发送报文的流程图;
图10示意性示出了根据本公开的实施例的限流系统的框图;以及
图11示意性示出了根据本公开实施例的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释 (例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有 B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C 等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C 的系统等)。
本公开的实施例提供了一种应用于服务器的数据传输的限流方法。该方法包括服务器在接收到访问请求的情况下,确定针对访问请求的限流阈值,并将根据访问请求生成的存储数据存储于分布式缓存系统中,由分布式缓存系统返回对存储数据计数的计数结果。并且服务器接收来自分布式缓存系统的计数结果以及将计数结果与限流阈值进行比较,并根据比较结果确定是否对访问请求进行限流。
图1示意性示出了根据本公开实施例的可以应用数据传输的限流方法的示例性系统架构100。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的系统架构100可以包括终端设备101、 102、103,网络104,分布式服务器集群105和分布式缓存系统106。其中,分布式服务器集群105可以包括多个服务器,例如可以是服务器 1~服务器n(n为大于1的整数)。网络104用以在终端设备101、102、 103和分布式服务器集群105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与分布式服务器集群105中的任意一个服务器交互,以接收或发送消息等。终端设备 101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
分布式服务器集群105中的任意一个服务器可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
根据本公开的实施例,分布式服务器集群105中的任意一个服务器在接收到访问请求的情况下,确定针对访问请求的限流阈值,并将根据访问请求生成的存储数据存储于分布式缓存系统中106,由分布式缓存系统106返回对存储数据计数的计数结果。并且分布式服务器集群105 中的任意一个服务器可以接收来自分布式缓存系统106的计数结果以及将计数结果与限流阈值进行比较,并根据比较结果确定是否对访问请求进行限流。
根据本公开的实施例,对访问请求进行限流,例如可以包括拒绝访问请求的访问。
需要说明的是,本公开实施例所提供的限流方法一般可以由分布式服务器集群105中的服务器执行。相应地,本公开实施例所提供的限流装置一般可以设置于分布式服务器集群105中的每一个服务器中。本公开实施例所提供的限流方法也可以由不同于分布式服务器集群105且能够与终端设备101、102、103和/或分布式服务器集群105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的限流装置也可以设置于不同于分布式服务器集群105且能够与终端设备101、102、103和 /或分布式服务器集群105通信的服务器或服务器集群中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
图2示意性示出了根据本公开的实施例的数据传输的限流方法的流程图。
如图2所示,该方法包括操作S210~S250。
在操作S210,响应于获取到用于访问服务器的防问请求,确定服务器针对访问请求的限流阈值。
根据本公开的实施例,服务器例如可以从配置文件中获取对访问请求的限流阈值。配置文件例如可以是本领域技术人员根据服务器的并发能力设置的。配置文件例如可以存储于本地或者其他服务器中。
在操作S220,基于访问请求,生成用于将访问请求存储于分布式缓存系统的存储数据。
根据本公开的实施例,分布式缓存系统的存储数据例如可以是按 Key-value型数据存储。基于访问请求生成存储于分布式缓存系统的关键字,即Key。
例如可以根据访问请求的时间戳以及访问请求的标识信息生成存储于分布式缓存系统的Key。访问请求的标识信息例如可以包括访问请求的来源(例如可以是应用程序、POS机,或者IP地址等)、发起该访问请求的设备的地理区域等。
根据本公开的实施例,分布式缓存系统例如可以是根据Redis、Memcached等构建的系统。
在操作S230,向分布式缓存系统发送存储数据,以便分布式缓存系统存储存储数据并返回针对存储数据的计数结果。
根据本公开的实施例,以分布式缓存系统是根据Redis构建的为例, Redis接收来自服务器的Key,并且利用自增命令的原子性(即,在命令完成时自增,而不会在执行命令的中间某个环节自增)实现对Key的精确计数,获得计数结果。根据本公开的实施例,Redis例如可以将计数结果作为该Key对应的value。
在操作S240,接收计数结果。根据本公开的实施例,服务器可以接收来自分布式缓存系统的计数结果。
在操作S250,将计数结果与限流阈值进行比较,并根据比较结果确定是否对访问请求进行限流。
例如可以是当计数结果大于限流阈值的情况下,确定对访问请求进行限流。对访问请求进行限流例如可以是拒绝防问请求的访问,或者需要防问请求排队。
根据本公开的实施例,该方法通过分布式缓存系统对访问服务器的访问请求进行限流,从而能够实现对高并发场景下的精准限流。
图3示意性示出了根据本公开实施例的操作S210响应于获取到访问服务器的访问请求,确定服务器针对访问请求的限流阈值的流程图。
如图3所示,该方法可以包括操作S211~S213。
在操作S211,响应于获取用于访问服务器的访问请求,确定访问请求所属的访问场景。
根据本公开的实施例,访问场景例如可以是用户通过某个应用程序访问服务器、用户通过POS机访问服务器等。或者,访问场景也可以是用户交易进行付款使用的支付手段等。
本领域技术人员可以根据需要设置合适的访问场景,对访问服务器的多个访问请求进行访问场景的分类。
在操作S212,获取限流配置信息,限流配置信息包括多个场景和限流阈值的对应关系。
例如限流配置信息可以包括服务器每分钟或者每秒响应600个针对使用某个应用程序访问服务器的访问请求。
在操作S213,基于访问场景和限流配置信息,确定服务器针对访问请求的限流阈值。
在操作S212的所描述的情景中,基于访问场景和限流配置信息确定服务器针对使用某个应用程序访问服务器的访问请求的限流阈值例如可以是600个/秒。
根据本公开的实施例,该方法可以对不同的场景设置不同的限流阈值,从而实现对不同的场景进行针对性地限流。
根据本公开的实施例,方法还可以包括从分布式缓存系统中获取达到限流阈值的场景,以及向监控系统发送场景的场景信息,以通知监控系统场景已达到限流阈值。
根据本公开的另一实施例,至少一个场景中可以包括多个维度。服务器可以根据访问请求进一步地确定该访问请求所属的维度,以及根据维度和限流配置信息,确定服务器针对访问请求的限流阈值。
根据本公开的实施例,至少一个场景中可以包括多个维度,例如可以是在通过某个应用程序访问服务器的场景下,包括活动维度和商户维度。
根据本公开的实施例,限流配置信息中可以包括针对每一个维度的限流阈值。
具体地,在活动维度上,例如在通过某个应用程序访问服务器的场景下,针对促销活动1的限流阈值可以是200个/秒,针对促销活动2 的限流阈值可以是300个/秒等。
又例如,在商户维度上,商户A参加了促销活动1,限流配置信息可以包括针对参与促销活动1的商户A的限流阈值可以是100个/秒,而参与促销活动1的其他商户的限流阈值可以是200个/秒。
根据本公开的实施例,服务器可以根据访问请求所在的维度来对访问请求进行限流,从而使得服务器可以针对各种情景进行限流,进一步实现了对服务器精准限流的控制。
根据本公开的实施例,在该实施例中,基于访问请求,生成的用于将访问请求存储于分布式缓存系统的存储数据中的Key的格式,例如可以是Key=[限流场景]_[时间戳]_[level1ID]_[level2ID]。其中,[level1ID]、 [level2ID]例如可以分别代表不同的维度,例如可以是活动维度和商户维度。
根据本公开的实施例,响应于获取用于访问所述服务器的访问请求,确定所述服务器针对所述访问请求的限流阈值包括:获取分配信息,分配信息包括服务器对不同地理区域的访问请求的限流分配,以及基于限流分配和访问请求所属的地理区域,确定服务器针对问请求的限流阈值。
例如分配信息可以是服务器允许来自北京的访问请求的流量和允许来自上海的访问请求的流量的比例可以是5∶1。在该例子中,例如服务器针对使用某个应用程序访问服务器的访问请求的限流阈值是 600个/秒,则服务器针对来自北京的使用某个应用程序访问服务器的访问请求的限流阈值可以是500个/秒,而对来自上海的使用某个应用程序访问服务器的访问请求的限流阈值可以是100个/秒。在该实施例中,基于访问请求,生成的用于将访问请求存储于分布式缓存系统的存储数据中的Key的格式,例如可以是Key=[限流场景]_[园区标识]_[时间戳]_[level1TD]_[level2ID]。其中,园区标识可以代表北京或者上海等地理区域。
图4示意性示出了根据本公开另一实施例的限流方法的流程图。
如图4所示,该方法在图2所示的操作S210~S250的基础上还可以包括操作S410~S420。例如可以在操作S210之后并且在操作S220之前执行操作S410和S420。
在操作S410,确定用于对访问请求进行计数的键值对的组数。
以下以确定对访问请求的限流阈值为200个/秒为例说明操作S410。
例如单个键值对组可承担的最大并发数可以是180个/秒,那么本领域技术人员可以设置单个键值对组承担的实际并发数可以是95个/秒,即,使得单个键值对组承担的实际并发数小于单个键值对组承担的最大并发数。在实际并发数是95个/秒的情况下,服务器例如可以计算限流阈值200除以实际并发数95的结果为2.1,并根据该结果2.1确定键值对组的第一数量。在该实施例中,例如可以确定用于对访问请求进行计数的键值对的组数为3,即组数可以大于该结果2.1。
在操作S420,基于限流阈值和组数,确定每个键值对组记录访问请求的数量。例如,限流阈值可以是200,组数是3个,则可以确定每个键值对组记录访问请求的数量是200/3=67个。
其中,在操作S230,向分布式缓存系统发送存储数据,以便分布式缓存系统存储存储数据并返回针对存储数据的计数结果包括:向分布式缓存系统发送存储数据,以便分布式缓存系统存储所述存储数据并通过多个键值对组中的一个键值对组计数,以及返回针对存储数据的计数结果。根据本公开的实施例,例如设置键值对的组数可以是3个,访问请求可以依次记录到每个键值对中。
其中,在操作S250将计数结果与限流阈值进行比较,并根据比较结果确定是否对访问请求进行限流可以是将计数结果与数量进行比较,并根据比较结果确定是否对访问请求进行限流。
例如,当一个键值对组返回的计数结果大于数量67时,确定对该访问请求进行限流。
根据本公开的实施例,在该实施例中,在操作S220,基于访问请求,生成用于将访问请求存储于分布式缓存系统的存储数据可以包括:为访问请求分配随机数;以及基于随机数和访问请求,生成用于将访问请求存储于分布式缓存系统的关键字。在该实施例中,向分布式缓存系统发送存储数据,由分布式缓存系统存储存储数据并返回针对存储数据的计数结果包括:向分布式缓存系统发送关键字,由分布式缓存系统根据关键字中的随机数从多个键值对组中确定出一个键值对组存储存储数据并返回针对所述存储数据的计数结果。
例如可以设置3个键值对组,当获取到访问请求时,可以为该访问请求分配3个随机数中的一个随机数,以确定由哪一个键值对组存储该访问请求。在该实施例中,用于将访问请求存储于分布式缓存系统的Key的格式例如可以是Key=[限流场景]_[园区标识]_[时间戳]_[限流Key 随机编号]_[level1ID]_[level2ID]。其中,限流Key随机编号即为该访问请求分配3个随机数中的一个随机数。
具体地,例如可以是3个键值对组依次编号为0、1、2。当接收到访问请求时,随机为该访问请求分配0、1、2中的一个,例如可以是1,从而将该Key=[限流场景]_[园区标识]_[时间戳]_[1]_[level1ID]_[level2ID]存储到编号为1的键值对组中。
根据本公开的实施例,上述限流方法还可以包括向分布式缓存系统发送第一验证信息,以向分布式缓存系统写入第一验证信息,并向分布式缓存系统发送请求获取第一验证信息的获取请求。接下来响应于接收到来自分布式缓存系统的第二验证信息,确定第二验证信息是否与第一验证信息一致,在确定第二验证信息与第一验证信息不一致的情况下,输出分布式缓存系统工作异常的消息。
根据本公开的实施例,上述限流方法还可以包括响应于接收到控制指令,获取分布式缓存系统中的计数数据,以及将计数数据写入到本地文件。例如用户可以点击控制界面上的控制按钮,从而生成控制指令,服务器响应于接收到控制指令,扫描分布式缓存系统,获得各个场景的计数数据,以及将计数数据写入到本地文件中。
本公开的另一方面提供了一种数据传输的限流系统。
图5示意性示出了根据本公开实施例的限流系统的示例整体结构框图。
如图5所示,限流系统500可以包括限流模块510、配置更新模块520、监控模块530和运维支持模块540。
需要理解的是,图5所示的整体结构可以分布于多个服务器中。例如限流模块510可以设置于分布式应用服务器集群中的每个服务器中。配置更新模块520可以设置于与分布式应用服务器集群通信的服务器上。
限流模块510可以包括第一限流单元511和第二限流单元512。配置更新模块520可以包括实时更新单元521和定时更新单元522。监控模块530可以包括第一限流单元可用性监控单元531、定时更新单元可用性监控单元532、触发限流事件监控单元533和配置更新线程事件监控单元534。运维支持模块540可以包括配置更新结果检查工具541、实时限流数据导出工具542、配置信息控制台543、参数单元和开关单元544。
根据本公开的实施例,例如在服务器接收到访问请求的情况下,服务器可以调用第一限流单元511,以通过第一限流单元511确定是否允许访问请求访问服务器。
第一限流单元511例如可以根据上文参考图2描述的操作 S210~S250确定是否允许访问请求访问服务器。
根据本公开的实施例,第一限流单511元例如可以根据限流配置信息和访问请求,确定是否允许访问请求访问服务器。限流配置信息例如可以从配置信息控制台543和配置更新模块520获取限流配置信息。配置信息控制台543例如可以存储有更新频繁的限流信息,具体地,例如可以是针对不同的场景的限流信息。配置更新模块520例如可以存储有不频繁更新的限流信息,具体地,例如可以是分配信息,分配信息包括服务器对不同地理区域的访问请求的限流分配。
图6示意性示出了根据本公开实施例的配置信息控制台543中存储的限流配置信息的一种示例。
如图6所示,对于场景“eLifePay”,按照二维限流进行控制。例如第一维度可以是活动维度,第二维度可以是商户维度。
对于所有进入第一限流单元的请求,如果level1(字段输入的类别为act001,则第一维度可以按200个/秒进行限流控制。如果level1 字段输入的类别为act002,则第一维度可以按100个/秒进行限流控制。如果level1字段输入的类别为其他类别,则第一维度可以按600个/ 秒进行限流控制。
对于level1为act002的请求,如果level2字段输入的类别为 mer001,则第二维度按100个/秒进行限流判断;如果level2字段输入的类别为mer002,则第二维度按50个/秒进行限流判断;对于level2字段输入的类别为其他类别,则第二维度按600个/秒进行限流判断。
类似地,如图6所示,对于场景“b2cPos”,可以按照二维限流进行控制。对于场景“testAct”,可以按照一维限流进行控制。对于场景“testAll”可以按照全局限流进行控制。全局限流可以是不对该场景进行维度的区别,所有该场景的访问请求使用同一限流阈值。
图7示意性示出了根据本公开实施例的第一限流单元511执行的限流方法流程图。
如图7所示,在服务器接收到访问请求的情况下,服务器可以调用第一限流单元511。第一限流单元511开始执行图7所示的限流方法。如图7所示,该限流方法可以包括操作S710~S790和操作S711~S718。
下面以图6所示出的限流配置信息为例说明操作S710~S790和操作 S711~S718。
在操作S710,第一限流单元511根据访问请求和限流配置信息判断限流模式。
例如,若访问请求是用户使用“eLifePay”应用程序而生成的,则可以按照二维限流进行控制。
又例如,若访问请求是用户使用“testAct”应用程序而生成的,则可以按照一维限流进行控制。
又例如,若访问请求是用户使用“testAll”应用程序而生成的,则可以按照全局限流进行控制。
根据本公开的实施例,若按照二维限流进行控制,则执行操作S720。
在操作S720,确定访问请求中的第二维度对应的字段。若该字段为“mer001”,则确定第二维度按100个/秒进行限流。若该字段为“mer002”,则确定第二维度按50个/秒进行限流。若该字段为其他内容,则确定第二维度按600个/秒进行限流。
根据上述限流阈值和分配信息,计算当前园区第二维度分配的限流阈值。分配信息例如可以从配置更新模块520获取。例如分配信息可以是服务器允许来自北京的访问请求的流量和允许来自上海的访问请求的流量的比例可以是1∶2。在该例子中,例如确定第二维度按600个/ 秒进行限流,则服务器针对来自北京的访问请求的限流阈值可以是200 个/秒,而对来自上海的使用某个应用程序访问服务器的访问请求的限流阈值可以是400个/秒。
根据本公开的实施例,计算第二维度限流需要的kv记录数(即键值对的组数)、计算第二维度每个kv记录(即每个键值对组)分担的并发数,可以按照操作S410和S420所描述的方法,在此不再赘述。
根据本公开的实施例,在操作S720,第一限流单元511还为访问请求分配随机数。
具体地,例如可以是3个kv记录依次编号为0、1、2。当接收到访问请求时,随机为该访问请求分配0、1、2中的一个,例如可以是1。
在操作S730,构建Key=[限流场景]_[园区标识]_[时间戳]_[限流Key 随机编号]_[level1ID]_[level2ID]。
在操作S740,将操作S730生成的Key例如可以存储到编号为1的 kv记录中,并且接收分布式缓存系统发送的计数结果。
分布式缓存系统将Key存储到相应的Key-value存储单元中,并利用自增命令的原子性能实现精确计数。
根据本公开的实施例,如果该kv记录是第一次计数,分布式缓存系统可以设置该Key的存活期,过期后自动删除。存活期例如可以是 30秒、1分钟、2分钟等。
在操作S750,将计数结果与kv记录分担的并发数比较。
根据本公开的实施例,如果计数结果大于kv记录分担的并发数,可以执行操作S760。
在操作S760,例如可以返回标识信息,以提示用户计数结果大于 kv记录分担的并发数。标识信息例如可以是3。
根据本公开的实施例,若按照二维限流,在计数结果不大于kv记录分担的并发数的情况下,则继续对第一维度进行限流,即执行操作 S770。
在操作S770,确定访问请求中的第一维度对应的字段。若该字段为“act001”,则确定第一维度按200个/秒进行限流。若该字段为“act002”,则确定第一维度按100个/秒进行限流。若该字段为其他内容,则确定第一维度按600个/秒进行限流。
根据上述限流阈值,计算当前园区第一个维度分配的限流阈值,计算第一个维度限流需要的kv记录数的数量,以及计算第一个维度每个 kv记录分担的并发数,并计算随机数。计算方法类似于上述操作S720 中描述的方法,在此不再赘述。
在操作S780,构建Key=[限流场景]_[园区标识]_[时间戳]_[限流Key 随机编号]_[level1ID]。
在操作S790和操作S711执行的操作类似于上文描述的操作S740 和S750,在此不再赘述。
根据本公开的实施例,若操作S711的判断结果是计数结果大于kv 记录分担的并发数,可以执行操作S712,即返回2。若操作S711的判断结果是计数结果不大于kv记录分担的并发数,可以执行操作S718,即返回0。
根据本公开的实施例,若在操作S710确定的限流模式是一维限流,则可以直接执行操作S770~S790,以及操作S711和操作S712。
根据本公开的实施例,若在操作S710确定的限流模式是全局限流,则可以直接执行操作S713~S717。
例如,若访问请求是用户使用“testAll”应用程序而生成的,则全局限流的限流阈值可以是100个/秒。
在操作S713执行的操作类似于上文描述的操作S770或者操作S720。
在操作S714,构建Key=[限流场景]_[园区标识]_[时间戳]_[限流Key 随机编号]。
在操作S715和操作S716执行的操作类似于上文描述的操作S790 和操作S711,或者类似于上文描述的操作S740和操作S750。
根据本公开的实施例,若操作S716的判断结果是计数结果大于kv 记录分担的并发数,可以执行操作S717,即返回1。若操作S716的判断结果是计数结果不大于kv记录分担的并发数,可以执行操作S718,即返回0。
根据本公开的实施例,第二限流单元512例如可以是本地限流模式。在分布式缓存系统异常时,自动切换到本地限流模式。本地限流按照限流阈值对单服务器的流量进行限制,例如本地限流模式可以只区分场景,不区分维度。
实时更新单元521,例如可以存储限流配置文件,服务器可以实时拉取限流配置文件,以实时更新限流配置信息。如需修改限流配置信息,服务器也可实时获取到最新的限流配置文件并更新到内存中。
例如,不同园区的分配信息可以存储在实时更新单元521中。
定时更新单元522,是为了防止实时更新单元521机制不稳定而设置的。当定时更新单元启动后,服务器扫描定时更新单元522以获得更新限流配置信息。根据本公开的实施例,定时更新模式与实时更新模式可通过参数进行切换。
第一限流单元可用性监控单元531,用于对分布式缓存的工作状态进行监控。在分布式缓存的工作状态异常时,及时切换到第二限流单元 512,以由第二限流单元512限流。
第一限流单元可用性监控单元531,例如可以是每隔第一预设时间段向分布式缓存系统发送第一验证信息,以向分布式缓存系统写入第一验证信息,向分布式缓存系统发送请求获取第一验证信息的获取请求,响应于接收到来自分布式缓存系统的第二验证信息,确定第二验证信息是否与第一验证信息一致,以及在确定第二验证信息与第一验证信息不一致的情况下,输出分布式缓存系统工作异常的消息。
定时更新单元可用性监控单元532,例如可以用于监控定时更新单元的工作状态。例如在监测到定时更新单元522的工作状态异常时,发出告警信息。
例如可以每隔第二预设时间段请求与定时更新单元522建立连接,当无法与定时更新单元522连接的情况下,确定定时更新单元522异常。
配置更新线程事件监控单元534,例如可以用于在定时更新单元522 启动的情况下,监控定时更新单元522中的新更新的限流配置信息是否正常下发和更新到了所有服务器。例如在服务器无法从定时更新单元522下载更新后的限流配置信息,或者下载的限流配置信息的格式不正确,或者与定时更新单元522连接失败的情况下,配置更新线程事件监控单元534可以发出告警信息。
触发限流事件监控单元533,例如可以用于及时掌握哪些场景触发了限流。根据本公开的实施例,触发限流事件监控单元533例如可以从所述分布式缓存系统中获取达到限流阈值的场景,并将触发了限流的场景的场景信息发送到监控系统,以通知所述监控系统所述场景已达到限流阈值。例如场景信息可以以报文的形式发送到监控系统。
根据本公开的实施例,例如达到限流阈值的同一场景在第三预设时间段内发送一次报文。具体地,例如达到限流阈值的同一场景每天只发送一次报文。
图8示意性示出了根据本公开实施例的触发限流事件监控单元533 登记在第三预设时间段内达到限流阈值的场景的流程图。触发限流事件监控单元登记可以在本地缓存和分布式缓存系统中登记在第三预设时间段内达到限流阈值的场景,以保证同一场景在第三预设时间段内只发送一次报文。
如图8所示该监控方法可以包括操作S810~S870。
下面结合图1所示的架构说明图8所示的监控方法的实施方式。
如图1所示,分布式服务器集群105可以包括多个服务器(服务器 1到服务器n)。例如当服务器1针对某个场景的流量已经达到限流阈值的情况下,该服务器1执行操作S810。
在操作S810,读取本地缓存的该场景的事件监控发送标志。
在操作S820,判断该场景的事件监控发送标志是否为“已发送”。若事件监控发送标志为“已发送”,则可以不向监控系统发送报文,该流程结束。若事件监控发送标志为“待发送”,执行操作S830。
在操作S830,可以从分布式缓存系统中获取针对该场景的事件监控发送标志。其中,分布式缓存系统中存储有分布式服务器集群105中的服务器向分布式缓存系统发送的事件监控发送标志。
在操作S840,将分布式缓存系统中的该场景的事件监控发送标志更新到本地缓存。
在操作S850,判断更新后的本地缓存中存储的该场景的事件监控发送标志是否为“已发送”。
若更新后的本地缓存中该场景的事件监控发送标志为“已发送”,则可以不向监控系统发送报文。若事件监控发送标志为“待发送”,可以等待指定服务器向监控系统发送该场景达到限流阈值的报文。
在确定已经向监控系统发送该场景达到限流阈值的报文之后,可以执行操作S860。
在操作S860,更新本地缓存的该场景的事件监控发送标志。
在操作S870,更新分布式缓存系统中该场景的事件监控发送标志,将事件监控发送标志更新为“已发送”。
根据本公开的实施例,当第三预设时间段之后,可以将事件监控发送标志清空,以记录下一个第三预设时间段的向监控系统发送达到限流阈值的场景的发送状态。
根据本公开的实施例,在第三预设时间段内,在其他服务器中该场景信息达到限流阈值的情况下,从分布式缓存系统中获取到事件监控发送标志为“已发送”,则可以不再向监控系统发送该场景已达到限流阈值的场景信息。
图9示意性示出了根据本公开实施例的指定服务器向监控系统发送报文的流程图。
根据本公开的实施例,指定服务器例如可以是分布式服务器集群中的。
如图9所示,该方法可以包括操作S910~S940。
在操作S910,指定服务器可以从分布式缓存系统中获取全量场景事件监控发送标志。
在操作S920,对事件监控发送标志为“待发送”的场景,向监控系统发送事件监控报文。其中事件监控报文包括已经达到限流阈值的场景信息。
在操作S930,更新分布式缓存系统中该场景的事件监控发送标志,将其由“待发送”更新为“已发送”。
在操作S940,在指定时间间隔之后,指定服务器再次执行操作S910,即从分布式缓存系统中获取全量场景事件监控发送标志。
配置更新结果检查工具541,例如可以用于获取分布式应用系统中的多个服务器的限流配置信息是否正常更新。
根据本公开的实施例,在实时更新单元521或者定时更新单元更新限流配置信息后,服务器可以将限流配置更新数据写入到指定存储位置。在启动配置更新结果检查工具541时,配置更新结果检查工具541会读取该指定存储位置中的配置更新数据,以及可以向控制台输出该配置更新数据,以使得用户可以通过控制台查看配置更新数据。
实时限流数据导出工具542,例如可以用于响应于接收到控制指令,获取分布式缓存系统中的计数数据,以及将计数数据写入到本地文件。
参数单元和开关单元544,例如可以分别用于实现定时更新单元 522和实时更新单元521的切换,以及用于确定是否由第一限流单元 511执行限流方法。参数单元例如可以通过切换参数来实现定时更新单元522和实时更新单元521的切换。例如当开关单元为开启状态时,确定由第一限流单元511执行限流方法。又当开关单元为关闭状态时,确定由第二限流单元512执行限流方法。
配置信息控制台543,例如可以用户获取用户输入的限流配置文件。用户输入的限流配置文件例如可以包括图6所示出的限流配置信息。
图10示意性示出了根据本公开的实施例的限流系统1000的框图。
如图10所示,限流系统1000可以包括第一确定模块1010、生成模块1020、发送模块1030、接收模块1040和第二确定模块1050。
第一确定模块1010,例如执行上文参考图2描述的操作S210,用于响应于获取用于访问服务器的访问请求,确定服务器针对访问请求的限流阈值。
生成模块1020,例如执行上文参考图2描述的操作S220,用于基于访问请求,生成用于将访问请求存储于分布式缓存系统的存储数据。
发送模块1030,例如执行上文参考图2描述的操作S230,用于向分布式缓存系统发送存储数据,以便分布式缓存系统存储存储数据并返回针对存储数据的计数结果。
接收模块1040,例如执行上文参考图2描述的操作S240,用于接收计数结果。
第二确定模块1050,例如执行上文参考图2描述的操作S250,用于将计数结果与限流阈值进行比较,并根据比较结果确定是否对访问请求进行限流。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,第一确定模块1010、生成模块1020、发送模块1030、接收模块1040和第二确定模块1050中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,第一确定模块1010、生成模块1020、发送模块1030、接收模块1040和第二确定模块1050 中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一确定模块1010、生成模块1020、发送模块1030、接收模块1040 和第二确定模块1050中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图11示意性示出了根据本公开实施例的电子设备的方框图。图11 示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图11所示,根据本公开实施例的电子设备1100包括处理器1101,其可以根据存储在只读存储器(ROM)1102中的程序或者从存储部分 1108加载到随机访问存储器(RAM)1103中的程序而执行各种适当的动作和处理。处理器1101例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器1101还可以包括用于缓存用途的板载存储器。处理器1101可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 1103中,存储有电子设备1100操作所需的各种程序和数据。处理器1101、ROM 1102以及RAM 1103通过总线1104彼此相连。处理器1101通过执行ROM 1102和/或RAM1103中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 1102和RAM 1103以外的一个或多个存储器中。处理器1101 也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备1100还可以包括输入/输出(I/O) 接口1105,输入/输出(I/O)接口1105也连接至总线1104。电子设备 1100还可以包括连接至I/O接口1105的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1106;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1107;包括硬盘等的存储部分1108;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1109。通信部分1109经由诸如因特网的网络执行通信处理。驱动器 1110也根据需要连接至I/O接口1105。可拆卸介质1111,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1110上,以便于从其上读出的计算机程序根据需要被安装入存储部分1108。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1109从网络上被下载和安装,和/或从可拆卸介质1111被安装。在该计算机程序被处理器1101执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 1102和 /或RAM 1103和/或ROM 1102和RAM 1103以外的一个或多个存储器。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
Claims (8)
1.一种数据传输的限流方法,应用于服务器,所述方法包括:
响应于获取用于访问所述服务器的访问请求,确定所述服务器针对所述访问请求的限流阈值;
基于所述访问请求,生成用于将所述访问请求存储于分布式缓存系统的存储数据;
向所述分布式缓存系统发送所述存储数据,以便所述分布式缓存系统存储所述存储数据并返回针对所述存储数据的计数结果;
接收所述计数结果;以及
将所述计数结果与所述限流阈值进行比较,并根据比较结果确定是否对所述访问请求进行限流;
所述方法还包括:
确定用于对所述访问请求进行计数的键值对的组数;以及
基于所述限流阈值和所述组数,确定每个键值对组记录访问请求的数量,
其中,向所述分布式缓存系统发送所述存储数据,以便所述分布式缓存系统存储所述存储数据并返回针对所述存储数据的计数结果包括:
向所述分布式缓存系统发送所述存储数据,以便所述分布式缓存系统存储所述存储数据,并通过多个键值对组中的一个键值对组计数,以及返回针对所述存储数据的计数结果,
所述将所述计数结果与所述限流阈值进行比较,并根据比较结果确定是否对所述访问请求进行限流包括:
将所述计数结果与所述数量进行比较,并根据比较结果确定是否对所述访问请求进行限流,
其中,所述基于所述访问请求,生成用于将所述访问请求存储于分布式缓存系统的存储数据包括:
为所述访问请求分配随机数;以及
基于所述随机数和所述访问请求,生成用于将所述访问请求存储于分布式缓存系统的关键字;
其中,所述向所述分布式缓存系统发送所述存储数据,以便所述分布式缓存系统存储所述存储数据并返回针对所述存储数据的计数结果包括:
向所述分布式缓存系统发送所述关键字,以便所述分布式缓存系统根据所述关键字中的随机数从所述多个键值对组中确定出一个键值对组存储所述存储数据并返回针对所述存储数据的计数结果。
2.根据权利要求1所述的限流方法,其中,所述响应于获取用于访问所述服务器的访问请求,确定所述服务器针对所述访问请求的限流阈值包括:
响应于获取用于访问所述服务器的访问请求,确定所述访问请求所属的访问场景;
获取限流配置信息,所述限流配置信息包括多个场景和限流阈值的对应关系;以及
基于所述访问场景和所述限流配置信息,确定所述服务器针对所述访问请求的限流阈值。
3.根据权利要求2所述的限流方法,还包括:
从所述分布式缓存系统中获取达到限流阈值的场景;以及
向监控系统发送所述场景的场景信息,以通知所述监控系统所述场景已达到限流阈值。
4.根据权利要求2所述的限流方法,其中,至少一个场景包括多个维度,所述基于所述访问场景和所述限流配置信息,确定所述服务器针对所述访问请求的限流阈值包括:
基于所述访问请求,确定所述访问请求所属的维度;以及
基于所述维度和所述限流配置信息,确定所述服务器针对所述访问请求的限流阈值。
5.根据权利要求1所述的限流方法,其中,所述响应于获取用于访问所述服务器的访问请求,确定所述服务器针对所述访问请求的限流阈值包括:
获取分配信息,所述分配信息包括所述服务器对不同地理区域的访问请求的限流分配;
基于所述限流分配和所述访问请求所属的地理区域,确定所述服务器针对所述访问请求的限流阈值。
6.根据权利要求1所述的限流方法,其中,还包括:
向所述分布式缓存系统发送第一验证信息,以向所述分布式缓存系统写入所述第一验证信息;
向所述分布式缓存系统发送请求获取所述第一验证信息的获取请求;
响应于接收到来自所述分布式缓存系统的第二验证信息,确定所述第二验证信息是否与所述第一验证信息一致;以及
在确定所述第二验证信息与所述第一验证信息不一致的情况下,输出所述分布式缓存系统工作异常的消息。
7.根据权利要求1所述的限流方法,其中,还包括:
响应于接收到控制指令,获取所述分布式缓存系统中的计数数据;以及
将所述计数数据写入到本地文件。
8.一种服务器,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1~7任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910706896.8A CN110417671B (zh) | 2019-07-31 | 2019-07-31 | 数据传输的限流方法和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910706896.8A CN110417671B (zh) | 2019-07-31 | 2019-07-31 | 数据传输的限流方法和服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110417671A CN110417671A (zh) | 2019-11-05 |
CN110417671B true CN110417671B (zh) | 2023-01-06 |
Family
ID=68365190
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910706896.8A Active CN110417671B (zh) | 2019-07-31 | 2019-07-31 | 数据传输的限流方法和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110417671B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112825045B (zh) * | 2019-11-20 | 2022-12-30 | 上海哔哩哔哩科技有限公司 | 支付请求处理方法、系统和存储介质 |
CN111212031A (zh) * | 2019-12-12 | 2020-05-29 | 北京淇瑀信息科技有限公司 | 一种接口访问频率的控制方法、装置、电子设备和存储介质 |
CN111352746B (zh) * | 2020-02-10 | 2023-07-07 | 福建天泉教育科技有限公司 | 消息限流方法、存储介质 |
CN111381988A (zh) * | 2020-03-24 | 2020-07-07 | 北京奇艺世纪科技有限公司 | 一种请求限速方法、装置、电子设备及存储介质 |
CN111988355A (zh) * | 2020-06-29 | 2020-11-24 | 汉海信息技术(上海)有限公司 | 限流方法、装置、服务器及服务器集群 |
CN112307338A (zh) * | 2020-10-30 | 2021-02-02 | 中国民航信息网络股份有限公司 | 运价搜索系统的流量控制方法、装置、设备和存储介质 |
CN112671658B (zh) * | 2020-12-16 | 2023-01-31 | 中国建设银行股份有限公司 | 数据限流方法、组件及工具包 |
CN112804160B (zh) * | 2021-01-26 | 2023-06-06 | 北京嘀嘀无限科技发展有限公司 | 基于应用程序的限流方法、装置、设备、介质及产品 |
CN112968945B (zh) * | 2021-02-01 | 2023-01-24 | 北京字跳网络技术有限公司 | 限流方法、装置、电子设备及存储介质 |
CN113014506B (zh) * | 2021-02-10 | 2023-04-07 | 中国工商银行股份有限公司 | 一种生产运维方法、装置及系统 |
CN113242184A (zh) * | 2021-06-10 | 2021-08-10 | 京东科技控股股份有限公司 | 分布式架构的流量控制方法及相关设备 |
CN114500381A (zh) * | 2022-01-20 | 2022-05-13 | 北京奇艺世纪科技有限公司 | 网络带宽限制方法、系统、电子设备及可读存储介质 |
CN114900467A (zh) * | 2022-05-11 | 2022-08-12 | 融慧金科金融服务外包(北京)有限公司 | Api流量控制方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445645A (zh) * | 2016-09-06 | 2017-02-22 | 北京百度网讯科技有限公司 | 用于执行分布式计算任务的方法和装置 |
CN106911582A (zh) * | 2017-03-07 | 2017-06-30 | 北京搜狐新媒体信息技术有限公司 | 一种基于Nginx服务器的实时流量控制方法及系统 |
CN107070807A (zh) * | 2017-04-18 | 2017-08-18 | 北京思特奇信息技术股份有限公司 | 一种分布式环境下接口调用的全局流量控制方法和系统 |
CN107609976A (zh) * | 2017-09-25 | 2018-01-19 | 中国银行股份有限公司 | 一种交易接口的限流方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160306822A1 (en) * | 2015-04-17 | 2016-10-20 | Samsung Electronics Co., Ltd. | Load balancing of queries in replication enabled ssd storage |
-
2019
- 2019-07-31 CN CN201910706896.8A patent/CN110417671B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445645A (zh) * | 2016-09-06 | 2017-02-22 | 北京百度网讯科技有限公司 | 用于执行分布式计算任务的方法和装置 |
CN106911582A (zh) * | 2017-03-07 | 2017-06-30 | 北京搜狐新媒体信息技术有限公司 | 一种基于Nginx服务器的实时流量控制方法及系统 |
CN107070807A (zh) * | 2017-04-18 | 2017-08-18 | 北京思特奇信息技术股份有限公司 | 一种分布式环境下接口调用的全局流量控制方法和系统 |
CN107609976A (zh) * | 2017-09-25 | 2018-01-19 | 中国银行股份有限公司 | 一种交易接口的限流方法及装置 |
Non-Patent Citations (1)
Title |
---|
"分布式限流";crossoverJie;《https://www.cnblogs.com/crossoverJie/p/9357709.html》;20180704;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110417671A (zh) | 2019-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110417671B (zh) | 数据传输的限流方法和服务器 | |
CN110401720B (zh) | 信息处理方法、装置、系统、应用服务器和介质 | |
US9313604B1 (en) | Network service request throttling system | |
CN110109953B (zh) | 一种数据查询方法、装置及设备 | |
US11934541B2 (en) | Securely sharing selected fields in a blockchain with runtime access determination | |
WO2017016113A1 (zh) | 用于监控网络业务量的方法和装置 | |
CN103312624A (zh) | 一种消息队列服务系统和方法 | |
US11663143B2 (en) | Multi-state midtier dynamic cache replacement | |
US10360057B1 (en) | Network-accessible volume creation and leasing | |
US11921726B2 (en) | Logical partitions via header-based partition filtering | |
US11044588B2 (en) | System and method for collaborative caching | |
CN116472522A (zh) | 具有紧凑的用户对象和离线数据库更新的用于优化的服务访问的代理高速缓存 | |
CN111475309A (zh) | 一种数据处理方法、装置、区块链服务系统及存储介质 | |
CN111586177B (zh) | 集群会话防丢失方法及系统 | |
US10805282B2 (en) | Role-based notification service | |
CN112487454A (zh) | 一种数据管理方法、装置、设备及存储介质 | |
US20230163960A1 (en) | Secure distribution of entropy | |
CN111054079A (zh) | 信息查询方法、装置、电子设备及存储介质 | |
CN116319810A (zh) | 分布式系统的流量控制方法、装置、设备、介质及产品 | |
CN115587860A (zh) | 业务处理方法、装置、存储介质及电子设备 | |
CN115033904A (zh) | 数据处理方法、装置、系统、介质和产品 | |
CN113368494A (zh) | 云设备分配方法、装置、电子设备及存储介质 | |
CN109964456A (zh) | 可扩展实时消息传送系统 | |
CN117041343B (zh) | 请求处理方法、装置、电子设备和计算机可读介质 | |
CN111221858B (zh) | 一种数据处理方法、装置及设备 |
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 |