CN110325967A - 速率限制器 - Google Patents

速率限制器 Download PDF

Info

Publication number
CN110325967A
CN110325967A CN201880012644.9A CN201880012644A CN110325967A CN 110325967 A CN110325967 A CN 110325967A CN 201880012644 A CN201880012644 A CN 201880012644A CN 110325967 A CN110325967 A CN 110325967A
Authority
CN
China
Prior art keywords
request
execution
decision
limiting device
speed 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.)
Pending
Application number
CN201880012644.9A
Other languages
English (en)
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.)
eBay Inc
Original Assignee
eBay Inc
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 eBay Inc filed Critical eBay Inc
Publication of CN110325967A publication Critical patent/CN110325967A/zh
Pending legal-status Critical Current

Links

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/25Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/53Network services using third party service providers
    • 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/20Traffic policing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/80Actions related to the user profile or the type of traffic
    • H04L47/808User-type aware

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本文公开了速率限制的***和方法。在一些示例实施方式中,速率限制器服务从在线应用接收对在线资源进行访问的请求,并且速率限制器服务将请求的指示传送至后端***,并且从后端***接收对应于在线资源的执行决定,其中执行决定包括允许或者拒绝访问在线资源的指令,并且从后端***接收执行决定与接收请求和传送指示异步地执行。在一些示例实施方式中,存储从后端***接收的执行决定,响应于接收到请求而访问所存储的执行决定,并且使用所访问的执行决定来对请求进行响应。

Description

速率限制器
相关申请
本申请要求于2017年2月27日提交的题为“RATE LIMITER”的美国专利申请序列第15/442,938号的权益,该申请的全部内容通过引用并入本文中。
技术领域
本公开的实施方式总体上涉及电子通信的技术领域,并且更具体地但不限于,涉及对电子资源进行速率限制的***和方法。
背景技术
为消费者提供对在线或其他电子资源的访问可能会影响资源提供者的基础设施。当多个资源被请求并被提供给多个消费者时,与请求相关联的权重或成本增加,并且因此可以导致整体***性能的降低。例如,在诸如发布平台或市场平台的基于网络的应用平台的背景下,资源消费者可以提交需要诸如数据库服务器进行的一些处理的多个资源的查询请求。查询所需的数据库服务器进行的处理可以具有某些相关的成本,这些成本可以例如通过时间(例如,处理时间)、存储器、带宽、存储或其他计算资源的量来测量。当多个查询请求和其他请求(例如,记录创建请求、记录修改请求、记录删除请求、数据库管理请求等)需要来自数据库服务器的处理时,数据库服务器的成本可能接近甚至超过数据库服务器对其能力的限制。此外,对某些请求的响应可能对不同的资源施加不同的负担,并且相比于对其他请求的响应,对基础设施的负担程度不同(例如,对数据库进行查询可以需要比网页请求显著更多的处理)。资源消费者的过度使用或滥用可能最终降低基础设施为其他资源消费者提供服务的能力。
附图说明
在附图中以示例而非限制的方式示出本公开的一些实施方式,并且在附图中相似的附图标记指示相似的元件。
图1是示出根据一些示例实施方式的联网***的框图。
图2是示出根据一些示例实施方式的基于网络的发布***的各种部件的框图。
图3是示出根据一些示例实施方式的可以在数据库内维护的各种表的框图。
图4是示出根据一些示例实施方式的速率限制器***的***架构的框图。
图5是示出根据一些示例实施方式的用于图4中所示的***架构的速率限制操作的事件跟踪图。
图6是示出根据一些示例实施方式的速率限制器***的另一***架构的框图。
图7是示出根据一些示例实施方式的速率限制器***的又一***架构的框图。
图8是示出根据一些示例实施方式的用于图6中所示的***架构的速率限制操作的事件跟踪图。
图9是示出根据一些示例实施方式的用于图7中所示的***架构的速率限制操作的事件跟踪图。
图10示出根据一些示例实施方式的可以在具有可插拔模块的分布式实时计算***中实现的扩展性特征。
图11示出根据一些示例实施方式的速率限制器服务可以实现的扩展性特征。
图12示出根据一些示例实施方式的速率限制器服务可以实现的扩展性特征。
图13示出根据一些示例实施方式的***架构的特征。
图14示出根据一些示例实施方式的***架构的特征。
图15示出根据一些示例实施方式的***架构的特征。
图16是示出根据一些示例实施方式的移动设备的框图。
图17是示出根据一些示例实施方式的代表性软件架构的框图。
图18是根据示例实施方式的计算机***形式的机器的图形表示,在该机器中,可以执行指令集以使机器执行在本文中所讨论的方法中的任何一种或更多种方法。
具体实施方式
以下描述包括体现说明性实施方式的说明性***、方法、技术、指令序列和计算机器程序产品。在以下描述中,出于说明的目的,阐述了许多具体细节以便提供对本发明主题的各种实施方式的理解。然而,对于本领域技术人员而言将明显的是,可以在没有这些具体细节的情况下实践本发明主题的实施方式。通常,公知的指令实例、协议、结构和技术并未详细地示出。
本公开提供了用于电子资源(例如,在线服务)的速率限制的技术解决方案。本文公开的方法或实施方式可以实现为具有一个或更多个模块(例如,硬件模块或软件模块)的计算机***。这样的模块可以由计算机***的一个或更多个处理器执行。本文公开的方法或实施方式可以实现为存储在机器可读介质上的指令,该机器可读介质在由一个或更多个处理器执行的情况下使得一个或更多个处理器执行指令。
在一些示例实施方式中,速率限制器服务从在线应用接收对在线资源进行访问的请求,并且速率限制器服务将请求的指示传送至后端***,并且从后端***接收对应于在线资源的执行决定,其中该执行决定包括允许或拒绝访问在线资源的指令,并且从后端***接收执行决定与接收请求和传送指示异步地执行。在一些示例实施方式中,存储从后端***接收的执行决定,响应于接收到请求而访问所存储的执行决定,并且使用所访问的执行决定来响应该请求。
在一些示例实施方式中,后端***基于在线资源的使用历史和一个或更多个规则来确定执行决定,其中确定该执行决定与通过速率限制器服务传送请求的指示异步地执行。
在一些示例实施方式中,后端***与通过速率限制器服务传送请求的指示异步地将执行决定传送至速率限制器服务,速率限制器服务存储执行决定,速率限制器服务响应于接收到请求而访问所存储的执行决定,并且使用所访问的执行决定来对请求进行响应包括将所访问的执行决定传送至在线应用的执行模块,其中该执行模块被配置成实现执行决定。
在一些示例实施方式中,后端***与通过速率限制器服务传送请求的指示异步地将执行决定传送至在线应用的执行模块,在线应用的执行模块存储执行决定,在线应用的执行模块响应于接收到请求而访问所存储的执行决定,并且使用所访问的执行决定来对请求进行响应包括通过在线应用的执行模块实现执行决定。
在一些示例实施方式中,一个或更多个规则包括以下中的一个或更多个:能够在预定时间段内被服务的请求的最大限制;能够在预定时间段内被服务的请求的类型的最大限制;能够在预定时间段内被服务的与单个互联网协议(IP)地址相关联的请求或请求的类型的最大限制;以及能够在预定的时间段内被服务的与特定移动设备相关联的请求或请求的类型的最大限制。
在一些示例实施方式中,请求的指示对该请求的类型进行指示。
在一些示例实施方式中,在线应用包括web应用。
参照图1,示出了基于客户端-服务器的高级网络架构100的示例实施方式。呈基于网络的市场或支付***的示例形式的联网***102经由网络104(例如因特网或广域网(WAN))向一个或更多个客户端设备110提供服务器端功能。图1示出了例如在客户端设备110上执行的web客户端112(例如,浏览器,如由华盛顿州雷蒙德市的微软公司(Corporation)开发的因特网浏览器(Internet))、应用114以及编程式客户端116。
客户端设备110可以包括但不限于:移动电话、台式计算机、膝上型计算机(laptop)、便携式数字助理(PDA)、智能电话、平板电脑、超级本、上网本、膝上型电脑(laptops)、多处理器***、基于微处理器或可编程消费电子产品、游戏控制台、机顶盒或用户可以利用以访问联网***102的任何其他通信设备。在一些实施方式中,客户端设备110可以包括显示模块(未示出)以显示信息(例如,以用户接口的形式)。在另外的实施方式中,客户端设备110可以包括触摸屏、加速计、陀螺仪、相机、麦克风、全球定位***(GPS)设备等中的一个或更多个。客户端设备110可以是用户的用于执行涉及联网***102内的数字项目的交易的设备。在一个实施方式中,联网***102是基于网络的市场,其对产品列表的请求进行响应,发布包括在基于网络的市场上可获得的产品的项目列表的发布物并且管理这些市场交易的支付。一个或更多个用户106可以是人、机器或与客户端设备110交互的其他装置。在实施方式中,用户106不是网络架构100的一部分,但是可以经由客户端设备110或另外的装置与网络架构100交互。例如,网络104的一个或更多个部分可以是自组织网络、内联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、因特网的一部分、公共交换电话网络(PSTN)的一部分、蜂窝电话网络、无线网络、WiFi网络、WiMax网络、另外的类型的网络或者两个或更多个这样的网络的组合。
客户端设备110中的每一个可以包括一个或更多个应用(也称为“app”),例如但不限于web浏览器、消息传送应用、电子邮件(email)应用、电子商务站点应用(也被称为市场应用)等。在一些实施方式中,如果电子商务站点应用包括在给定的一个客户端设备110中,则该应用被配置成根据需要针对不是本地可用的数据和/或处理能力(例如,访问针对销售可用的项目的数据库以认证用户,验证支付方法等)在本地向用户接口和至少一些功能提供被配置成与联网***102通信的应用。相比之下,如果电子商务站点应用未包括在客户端设备110中,则客户端设备110可以使用其web浏览器来访问在联网***102上托管的电子商务站点(或其变体)。
一个或更多个用户106可以是人、机器或与客户端设备110交互的其他装置。在示例性实施方式中,用户106不是网络架构100的一部分,但可以经由客户端设备110或其他装置与网络架构100交互。例如,用户向客户端设备110提供输入(例如触摸屏输入或字母数字输入),并且该输入经由网络104被传送至联网***102。在这种情况下,联网***102响应于从用户接收到输入,经由网络104将信息传送至客户端设备110以呈现给用户。以这种方式,用户可以使用客户端设备110与联网***102进行交互。
应用程序接口(API)服务器120和web服务器122耦接至一个或更多个应用服务器140,并且分别向一个或更多个应用服务器140提供编程接口和web接口。应用服务器140可以托管一个或更多个发布***142、支付***144和速率限制器***150,其中发布***142、支付***144和速率限制器***150中的每个可以包括一个或更多个模块或应用,并且发布***142、支付***144和速率限制器***150中的每个可以被实施为硬件、软件、固件或其任何组合。应用服务器140继而被示出为耦接至一个或更多个数据库服务器124,数据库服务器124促进对一个或更多个信息存储库或数据库126的访问。在示例性实施方式中,数据库126是存储要公布至发布***142的信息(例如,发布物或列表)的存储设备。根据示例实施方式,数据库126还可以存储数字项目信息。
此外,在一个或更多个第三方服务器130上执行的第三方应用132被示出为可经由API服务器120提供的编程接口对联网***102进行编程式访问。例如,利用从联网***102检索的信息,第三方应用132支持由第三方托管的网站上的一个或更多个特征或功能。例如,第三方网站提供由联网***102的相关应用支持的一个或更多个促销功能、市场功能或支付功能。
发布***142可以向访问联网***102的用户106提供许多发布功能和服务。支付***144同样可以提供许多功能以执行或促进支付和交易。虽然在图1中将发布***142和支付***144示出为这两者均形成联网***102的一部分,但是应当理解,在替选实施方式中,***142和144中的每个可以形成与联网***102分离且不同的支付服务的一部分。在一些实施方式中,支付***144可以形成发布***142的一部分。
速率限制器***150提供可操作以执行各种速率限制操作的功能,如下面将进一步详细讨论的。速率限制器***150可以访问来自数据库126、第三方服务器130、发布***142和其他源的数据。在一些示例实施方式中,速率限制器***150可以分析数据以执行速率限制操作。在一些示例实施方式中,速率限制器***150与发布***142(例如,访问项目列表)和支付***144通信。在替选实施方式中,速率限制器***150是发布***142的一部分。
此外,虽然图1所示的基于客户端-服务器的网络架构100采用了客户端-服务器架构,但是本发明主题当然不限于这样的架构,并且同样可以在例如分布式或对等架构***中找到应用。各种发布***142、支付***和速率限制器***150也可以实现为不必然具有联网能力的独立的软件程序。
web客户端112可以经由web服务器122支持的web接口访问各种发布***142和支付***144。类似地,编程式客户端116经由API服务器120提供的编程接口访问由发布***142和支付***144提供的各种服务和功能。编程式客户端116可以例如是销售者应用(例如,由加利福尼亚州圣何塞市的公司开发的Turbo Lister应用),以使得销售者能够以离线方式在联网***102上创建和管理列表,并且在编程式客户端116与联网***102之间执行批量模式通信(batch-mode communication)。
另外,在一个或更多个第三方服务器130上执行的一个或更多个第三方应用132被示出为可经由API服务器120提供的编程接口对联网***102进行编程式访问。例如,使用从联网***102检索的信息,第三方应用132可以支持由第三方托管的网站上的一个或更多个特征或功能。例如,第三方网站可以提供由联网***102的相关应用支持的一个或更多个促销功能、市场功能或支付功能。
图2是示出根据一些示例实施方式的基于网络的发布***142的各种部件的框图。发布***142可以托管在通信地耦接以实现服务器机器之间的通信的专用服务器机器或共享服务器机器上。部件本身(例如,经由适当的接口)彼此通信地耦接,并且通信地耦接至各种数据源,以使得信息能够在部件之间传递或者使得部件能够共享和访问公共数据。此外,部件可以经由数据库服务器124访问一个或更多个数据库126。
发布***142可以提供多种发布、列表和价格设定机制,由此销售者(也称为第一用户)可以列出销售或易货的商品或服务(或发布关于销售或易货商品或服务的信息),购买者(也被称为第二用户)可以表达对购买或易货这样的商品或服务的兴趣或表明对购买或易货这样的商品或服务的期望,并且可以完成与商品或服务有关的交易(例如贸易)。为此,发布***142可以包括至少一个发布引擎202和一个或更多个销售引擎204。发布引擎202可以在发布***142上发布诸如项目列表或产品描述页面的信息。在一些实施方式中,销售引擎204可以包括支持固定价格列表和价格设定机制的一个或更多个固定价格引擎以及支持拍卖格式列表和价格设定机制的一个或更多个拍卖引擎(例如,英语、荷兰语、中文、双重、反向拍卖等)。各种拍卖引擎还可以提供支持这些拍卖格式列表的多个特征,例如通过其销售者可以指定与列表有关的保留价格的保留价格特征以及通过其投标者可以调用自动代理投标的代理投标特征。销售引擎204还可以包括支持针对产品和服务的商家生成的提议(offer)的一个或更多个交易引擎。
列表引擎206使得卖家能够方便地创建项目的列表或者使得创建者能够创建发布物。在一个实施方式中,列表涉及用户(例如,销售者)希望经由发布***142进行交易的商品或服务。在一些实施方式中,列表可以是商品或服务的提议、交易、优惠券或折扣。每种商品或服务均与特定类别相关联。列表引擎206可以接收列表数据,例如标题、描述和方面名称/值对。此外,可以为商品或服务的每个列表分配项目标识符。在其他实施方式中,用户可以创建作为广告或其他形式的信息发布的列表。然后可以将列表信息存储到耦接至发布***142的一个或更多个存储设备(例如,数据库126)。列表还可以包括显示产品和与产品相关联的信息(例如,产品标题、说明书和评论)的产品描述页面。在一些实施方式中,产品描述页面可以包括与产品描述页面上描述的产品相对应的项目列表的集合。
列表引擎206还可以使得购买者能够方便地创建针对期望购买的项目的列表或请求。在一些实施方式中,列表可以涉及用户(例如,购买者)希望经由发布***142进行交易的商品或服务。每种商品或服务均与特定类别相关联。列表引擎206可以接收购买者想到的关于请求的项目的多的列表数据或者少的列表数据,例如标题、描述和方面名称/值对。在一些实施方式中,列表引擎206可以解析购买者提交的项目信息并且可以完成列表的不完整部分。例如,如果购买者提供所请求项目的简要描述,则列表引擎206可以解析描述、提取关键术语并使用这些术语来确定项目的身份。使用所确定的项目身份,列表引擎206可以检索针对购买者项目请求中的内容的附加项目细节。在一些实施方式中,列表引擎206可以将项目标识符分配给商品或服务的每个列表。
在一些实施方式中,列表引擎206使得卖家能够生成对产品或服务的折扣的提议。列表引擎206可以接收列表数据,例如提供的产品或服务、产品或服务的价格和/或折扣、提议有效的时间段等等。在一些实施方式中,列表引擎206使得卖家能够从卖家的移动设备生成提议。可以将生成的提议上载至发布***142以进行存储和跟踪。
搜索引擎208促进对发布***142的搜索。例如,搜索引擎208使得能够对经由发布***142发布的列表进行关键字查询。在示例实施方式中,搜索引擎208从用户的设备接收关键字查询,并且对存储列表信息的存储设备进行查阅。该查阅将使得能够对可以被分类并返回给用户的客户端设备110的列表的结果集进行汇集。搜索引擎208可以记录查询(例如,关键字)和任何后续用户动作和行为(例如,浏览)。
搜索引擎208还可以基于用户的位置执行搜索。用户可以经由移动设备访问搜索引擎208并生成搜索查询。使用搜索查询和用户的位置,搜索引擎208可以向用户返回产品、服务、提议、拍卖等的相关搜索结果。搜索引擎208既可以以列表形式标识相关搜索结果,还可以在地图上以图形形式标识相关搜索结果。在地图上选择图形指示符可以提供有关所选搜索结果的附加详细信息。在一些实施方式中,用户可以指定距用户的当前位置的距离或半径作为搜索查询的一部分以限制搜索结果。
搜索引擎208还可以基于图像执行搜索。图像可以从客户端设备的成像部件或相机获取,或者可以从存储器访问。
在另一示例中,浏览引擎(navigation engine)210使得用户能够浏览各种类别、目录或库存数据结构,根据类别、目录或库存数据结构,列表可以在发布***142内分类。例如,浏览引擎210使得用户能够连续向下浏览包括类别层级(例如,类别树结构)的类别树,直到到达特定的一组列表。可以提供浏览引擎210内的各种其他浏览应用以补充搜索和浏览应用。浏览引擎210可以记录用户执行的各种用户动作(例如,点击),以便向下浏览类别树。
图3是高层级实体关系图,其示出可以在数据库126内维护并且由***142、***144和***150使用且支持***142、***144和***150的各种表300。用户表302包含联网***102的每个注册用户的记录,并且可以包括与每个这样的注册用户有关的标识符、地址和金融工具信息。用户可以在联网***102内作为销售者、购买者或两者进行操作。在一个示例实施方式中,购买者可以是具有累积值(例如,商业货币或专有货币)的用户,并且因此能够用累积值交换由联网***102提供的用于销售的项目。
表300还包括项目表304,在项目表304中维护可经由联网***102进行交易或者已经经由联网***102进行交易的商品和服务的项目记录。项目表304内的每个项目记录还可以链接至用户表302内的一个或更多个用户记录,以便将销售者和一个或更多个实际或潜在购买者与每个项目记录相关联。
交易表306包含与其记录存在于项目表304中的项目有关的每个交易(例如,购买或销售交易)的记录。
订单表308填充有订单记录,其中每个订单记录与订单相关联。每个订单继而可以与其记录存在于交易表306中的一个或更多个交易相关联。
出价表310内的出价记录均涉及在联网***102处接收的与拍卖应用支持的拍卖格式列表有关的出价。在一个示例实施方式中,反馈表312由一个或更多个信誉应用使用,以构建和维护关于用户的信誉信息。历史表314维护用户已经是其一方的交易的历史。一个或更多个属性表316记录与其记录存在于项目表304中的项目有关的属性信息。仅考虑这样的属性的单个示例,属性表316可以指示与特定项目相关联的货币属性,其中货币属性标识由销售者指定的相关项目的价格的货币。
速率限制器
在提供对资源的访问的在线***中,对这些资源的请求速率或对这些请求的准予可能被限制,以防止请求者过度使用或滥用。在一些示例实施方式中,速率限制涉及限制单个请求者或一组请求者在给定时间段内可以做出的请求的数量,或者限制***在给定时间段内做出的对这种请求的批准的数量。
资源提供者可以向资源消费者提供许多资源。为了获得对一个或更多个资源的访问,资源消费者可以将与一个或更多个资源相关联的请求发送至资源提供者,并且资源提供者可以被配置为通过提供所请求的资源或者通过使得所请求的资源能够在为请求提供服务时被提供给消费者来响应该请求。例如,资源提供者可以提供对设施、服务、文档、信息、制品、原材料或电子资源的访问,该电子资源可以包括电子文档、网页、带宽、电子服务(例如,搜索服务、数据库访问、访问服务器和服务器功能、应用功能、处理等)以及其它内容。
为消费者提供对资源的访问可能会影响资源提供者的基础设施。提供给消费者的每个资源可能具有关于提供者的基础设施的相关联的权重或成本。当多个资源被请求并被提供给多个消费者时,与请求相关联的权重或成本增加,并且因此可以导致整体***性能的降低。例如,在诸如发布平台或市场平台的基于网络的应用平台的背景下,资源消费者可以提交需要诸如数据库服务器进行的一些处理的多个资源的查询请求。查询所需的数据库服务器进行的处理可以具有某些相关的成本,这些成本可以例如通过时间(例如,处理时间)、存储器、带宽、存储或其他计算资源的量来测量。当多个查询请求和其他请求(例如,记录创建请求、记录修改请求、记录删除请求、数据库管理请求等)需要来自数据库服务器的处理时,数据库服务器的成本可能接近或甚至超过数据库服务器对它的能力的限制。此外,对某些请求的响应可能对不同的资源施加不同的负担,并且相比于对其他请求的响应,对基础设施的负担程度不同(例如,查询数据库可能需要比网页请求显著更多的处理)。资源消费者的过度使用或滥用可能最终降低基础设施为其他资源消费者提供服务的能力。
为了防止资源消费者过度使用或滥用,资源提供者可以对资源消费者可以请求资源的速率施加限制。在一些示例实施方式中,资源提供者可以限制来自资源消费者的请求的数量。
如之前上文所描述的,在一些示例实施方式中,速率限制器***150被配置成执行各种速率限制操作,如下面将进一步详细讨论的。在一些示例实施方式中,这些速率限制操作包括
图4是示出根据一些示例实施方式的速率限制器***150的***架构的框图。在一些示例实施方式中,速率限制器***150包括web应用或其他在线服务应用410、数据抽头415、执行模块417、速率限制器服务420、消息总线425、后端***430和前端***440。速率限制器***150的这些部件可以通信地彼此耦接,以便实现它们之间的通信。图5是示出根据一些示例实施方式的图4中所示的***架构的速率限制操作的事件跟踪图500。
在一些示例实施方式中,参照图4和图5,web或服务应用410生成对一个或更多个在线资源的请求(例如,对来自一个或更多个在线资源的信息的请求)并且将请求传送至速率限制器服务420。可以基于来自客户端设备110上的一个或更多个用户106的对应请求,触发或以其他方式引起应用410生成请求并且传送请求,客户端设备110上的一个或更多个用户106例如是客户端设备110上的请求访问应用410的服务的用户106。应用410可以经由数据抽头415将请求传送至速率限制器服务420,数据抽头415可以是速率限制器服务420的API。在一些示例实施方式中,数据抽头415被配置成通过识别请求的主体来表征该请求。例如,数据抽头415可以分析应用510的请求的报头和/或内容以确定应用410的请求正在请求什么信息或什么其他类型的服务。表征可以基于一个或更多个表征模型。在一些示例实施方式中,应用410或数据抽头414包括该表征信息以及在请求最终被传送至速率限制器服务420时的对应请求。
在一些示例实施方式中,传送至速率限制器服务420的请求包括诸如基于请求的表征的指示请求的类型的计量事件(metering event)(或计量信息)以及对请求的决定的查询。查询可以被配置成触发或以其他方式引起对请求的响应,诸如执行决定(例如,是准予对应用410的服务的访问还是拒绝对服务的访问)。
在一些示例实施方式中,速率限制器服务420例如经由消息总线425将计量事件传送至后端***430。后端***430评估所接收的计量事件以及指示计量事件的历史的其他信息,以便基于一个或更多个策略或规则例如通过执行计数和阈值处理操作来做出执行决定。例如,后端***430可以存储规则,该规则将应用410可以在一小时内服务的请求的数量限制在三十个或更少。在该示例中,应用410在最后四十五分钟已经服务了三十个请求,并且进入的计量事件是第三十一个请求。在这样的情况下,后端***430将对进入的计量事件进行计数并确定该新请求超出阈值,因为已经达到一小时内的30个请求的最大限制。结果,后端***430发出拒绝该请求的决定。该决定可以从后端***430传送至前端***440,该决定状态可以存储在前端***440中以用于后续访问。
预期其他类型的执行策略或规则在本公开的范围内。可以在本公开的范围内采用的其他类型的执行策略或规则的示例包括但不限于基于以下的执行规则或策略:可以在预定时间段或其他时间限制内被服务或接收的请求类型的最大限制;可以在预定时间段内或其他时间限制内被服务或接收的与IP地址相关联的请求或请求类型的最大限制(例如,在从单个IP地址对应用进行一百次登录之后,阻止该IP地址二十四小时);可以在预定时间段内或其他时间限制内被服务或接收的与特定移动设备相关联的请求或请求类型的最大限制(例如,在从单个移动设备对应用进行一百次登录之后,阻止该移动设备二十四小时);请求要被服务的IP地址列表;请求要被拒绝的IP地址列表;请求要被服务的移动设备列表和请求要被拒绝的移动设备列表。
在一些示例实施方式中,前端***440存储应用410的多个当前活动的执行决定。例如,基于后端***430确定已达到一小时内服务的请求的最大限制,前端***440可以存储由后端***430做出的执行决定,以在该小时的剩余时间内拒绝所有其他请求。然后,当速率限制器服务420将对请求的查询提交给前端***440时,前端***440访问所存储的对应于该查询的执行决定,并且将该执行决定返回至速率限制器服务420。在一些示例实施方式中,速率限制器服务420和前端***440使用用户数据报协议(UDP)进行通信。速率限制器服务420将执行决定传送至应用410,然后应用410可以例如通过准予或拒绝来自客户端设备110的请求来执行该执行决定。
在一些示例实施方式中,速率限制器服务420将执行决定传送至执行模块417。执行模块417被配置成解译来自速率限制器服务420的执行决定并且实现、实行或以其他方式执行那些执行决定。例如,如果速率限制器服务420返回执行决定以在指定的时间段内阻止主体,则执行模块417可以在该指定时间段内响应于主体提交请求而返回指示主体被阻止的错误。在一个示例实施方式中,执行模块417确保应用410中止当前HTTP请求调用的流,返回HTTP 429状态代码。执行模块417可以与应用410的其他部分交互,以便实现、实行或以其他方式执行执行决定。在一些示例实施方式中,执行决定从速率限制器服务420传送至数据抽头415,数据抽头415然后将执行决定传送至执行模块417。在其他示例实施方式中,执行决定在不经过数据抽头415的情况下从速率限制器服务420传送至执行模块417。
在一些示例实施方式中,后端***430接收计量事件并且对计量事件进行计数,但是可以等待直到满足特定条件才将执行决定传送至前端***440,特定条件例如是达到或超过特定阈值。在一些示例实施方式中,后端***430确定执行决定和从后端***430向前端***440传送执行决定可以与从应用410传送请求异步地执行。在这方面,后端***430确定执行决定和从后端***430向前端***440传送执行决定可以独立于从应用410传送请求而执行。在一些示例实施方式中,后端***430接收来自多个应用410和/或多个其他类型的源(例如,来自不同***)的计量事件并且对其进行计数。可以在不同时间从不同源进行接收和计数,使得后端***430可以对来自不同源的请求进行整体核算并且异步地做出执行决定,该执行决定然后可以被存储在前端***440中以用于速率限制器服务420随后访问。
图6是示出根据一些示例实施方式的速率限制器***150的另外的***架构的框图。图6中的速率限制器***150类似于图4中的速率限制器系150。图8是示出根据一些示例实施方式的图6和图7中所示的***架构的速率限制操作的事件跟踪图800。然而,在图6的示例实施方式中,速率限制器服务420从后端框架600检索执行决定并存储执行决定,而不是速率限制器***150将执行决定存储在前端***440中。后端框架600可以包括后端***430,后端***430被配置成对源自应用410的请求的计量事件执行计数和阈值处理操作。后端框架600可以基于一个或更多个存储的策略或规则的应用来确定执行决定。在一些示例实施方式中,速率限制器服务420与从应用410接收请求异步地或者以其他方式独立于从应用410接收请求而从后端框架访问、检索或以其他方式接收执行决定。响应于从应用410接收到查询,速率限制器服务420访问其存储的执行决定并将该执行决定传送至应用410,而不需要花费时间与后端***430进行通信。作为将执行决定的存储移动成更靠近应用410的结果,图6中所示的速率限制器***150的示例实施方式显着地改善了速率限制器***150的响应性,使得查找/响应时间更快。
另外,图6中所示的示例实施方式还引入了一个或更多个可插拔模块610。虽然后端框架600已经可以具有存储用于确定执行决定的策略的现有策略数据库,但是在图6所示的示例实施方式中,不同的用户可以经由不同的可插拔模块610提供他们自己的策略或规则。例如,一个可插拔模块610-1可以被配置成提供并执行用于防止欺诈(例如,在预定时间段内来自同一IP地址或移动设备的太多请求)的规则,而另一可插拔模块610-2可以被配置成提供并执行用于报告服务请求以用于核算目的的规则,而又一可插拔模块610-3可以被配置成提供并执行用于压制目的以防止过载的规则。此外,同一用户可以针对不同的场景或应用提供不同的策略或规则。例如,第一用户可以将可插拔模块610-1***后端框架600(例如,出于欺诈检测目的而对某些类型的请求进行计数),第二用户可以将可插拔模块610-2***后端框架600(例如,出于核算和报告目的而对某些类型的请求进行计数),并且第三用户可以将可插拔模块610-3***后端框架600(例如,出于压制目的而对某些类型的请求进行计数)。另外,第一用户可以出于不同目的而***可插拔模块610-1、可插拔模块610-2和可插拔模块610-3。后端框架600的可插拔性质改进了速率限制器***150的灵活性,这有助于防止随着时间的推移可以适应某些速率限制策略或规则的欺诈者。
这种灵活性也可以扩展到数据抽头615。图7是示出根据一些示例实施方式的用于速率限制器***150的又一***架构的框图,其中来自图4和图6的数据抽头已经被定制的数据注入器(data injector)715替换。在一些示例实施方式中,数据注入器715被配置成使得用户能够定制和更新请求的表征,从而为主体类型或分类的表征提供更大的灵活性。在这方面,数据注入器715用作可扩展数据抽头。可以使用数据注入器715添加任何新分类。用户可以创建并输入已知分类器和已知主体的模型,然后针对该模型创建并输入规则。在一些示例实施方式中,执行决定从速率限制器服务420传送至数据注入器715,数据注入器715然后将执行决定传送至执行模块417。在其他示例实施方式中,执行决定在不经过数据注入器715的情况下从速率限制器服务420传送至执行模块417。
在一些示例实施方式中,执行决定的存储被移动至应用410本身,从而使响应时间更快。图9是示出根据一些示例实施方式的用于图6和图7中所示的***架构的速率限制操作的事件跟踪图900。在图9中,速率限制器服务420从应用接收计量事件和请求的查询。计量事件被传送至后端框架600以供一个或更多个可插拔模块610处理。后端框架600基于一个或更多个可插拔模块610的处理将执行决定传送至应用410。在一些示例实施方式中,执行决定与来自应用410的任何请求异步地或者以其他方式独立于来自应用410的任何请求而被传送至应用410。由于应用410本身存储执行决定,而不必从速率限制器服务420或前端***440检索执行决定,因此速率限制器***150能够显著减少对来自客户端设备110的请求的响应时间。
另外,在一些示例实施方式中,速率限制器***150还提供开环架构,该开环架构使得不同的用户或***能够***速率限制器服务420和/或后端框架430。例如,其他***或在线服务可以出于其自身目的使用被存储在速率限制器***150中的计量信息和/或执行决定,使得速率限制器服务420经由应用410接收该请求,但是执行决定和用于做出执行决定的信息(例如,计量事件的计数)除了被提供给应用410以外或者替代被提供给应用410(例如,应用410不接收和/或使用执行决定来限制服务),被提供给一个或更多个其他应用。
此外,在一些示例实施方式中,速率限制器***150被配置成使得能够***不同的请求源,以便速率限制服务420和/或后端框架600处理请求,并且随后将计量信息和/或执行决定报告回相应的源。预期同一组织内的不同团队可以(例如,经由可插拔模块610)***他们自己的数据和他们自己的定制策略处理,从而使得不同的团队能够利用速率限制器***150的性能以用于不同的目的和功能。
图10示出根据一些示例实施方式的可以在具有诸如可插拔模块610之类的可插拔模块的分布式实时计算***1000中实现的扩展性特征。在图10中,示出如何扩展包含本文公开的速率限制特征的整个事件传输***。在一些示例实施方式中,***1000基于ApacheStorm实现。然而,其他类型的分布式实时计算***也在本公开的范围内。***1000包括流源1010。在Apache Storm中,这样的流源可以称为“喷口(spout)”。喷口是用作拓扑中的流源(例如,元组的无界序列)的一种事件分发器。通常,喷口将从外部源读取元组并将它们发送至拓扑中。流被广播至处理模块1020。在Apache Storm中,这些处理模块1020可以称为“闩(bolt)”。闩可以被配置成执行任何处理操作,包括但不限于流转换、过滤、函数、聚合、连接以及与数据库的通信。在一些示例实施方式中,喷口和闩被并行化为被调度到可以包括诸如虚拟机的计算实例的节点或处理器(或工作者)1030的集群上的任务。在一些示例实施方式中,喷口1010可通过添加节点进行水平扩展,处理模块1020可通过架构进行水平扩展,并且在处理器1030上运行的各个模块逻辑可通过定制分区进行水平扩展。
图11示出根据一些示例实施方式的速率限制器服务420可以实现的扩展性特征。在一些示例实施方式中,速率限制器服务420被实现为计算集群。在一些示例实施方式中,根据速率限制器服务下的各个节点来实现第一层级的水平扩展性。在一些示例实施方式中,分布式高速缓冲存储器实现单个速率限制器服务实例可以在水平上扩展多少的上限。为了使整个实例集群能够共同保持执行决定的决定存储,可以实现集群的不同参与成员可以共同共享该状态的方案。在一些示例实施方式中,诸如图11中所示的示例实施方式,可以采用可由所有实例访问的读写高速缓冲存储器。
然而,读写高速缓冲存储器可能具有一些大小限制,超过该大小限制,速率限制器服务420就不能以这种方式扩展。图12中所示的示例实施方式解决了这些潜在的扩展性限制。图12示出根据一些示例实施方式的速率限制器服务420可以实现的扩展性特征。在一些示例实施方式中,对面向不同用例的不同速率限制器服务420进行操作。在一些示例实施方式中,逻辑分区的用例可以由在同一消息总线上作用的速率限制器服务的不同实例来服务。不同的速率限制器服务420可以被独立地设定地址、作为单独的可寻址专用服务实例,然后基于每个用例将可寻址专用服务实例配置到客户端应用410中。
图13示出根据一些示例实施方式的速率限制器***150的***架构的特征。该***架构涉及本公开的开环性能特征。在一些示例实施方式中,可以采取未在执行模块417内具体实现的定制动作。图13示出***的这种开环特性,其中,仅基于消息总线,可以由能够与消息总线通信的任何商业软件(例如,Apache Kafka)产生或消耗事件。扩展点可以包括一个或更多个定制处理器1310和一个或更多个定制动作执行器1320。
在一些示例实施方式中,定制处理器1310包括由未在速率限制器架构中如此设计、但是想要消耗数据抽头或数据注入器导出的事件并且执行诸如标记可疑使用之类的事情的其他业务单元操作的规则引擎等。定制处理器1310可以从消息总线425接收诸如计量事件之类的事件信息。定制处理器1310可以基于事件信息生成执行决定,并将执行决定传送至执行模块417。另外地或可替选地,定制处理器1310可以基于事件信息生成其他动作,并将该动作传送至定制动作执行器1320。定制处理器1310可以用作事件的连续消费者,但是它可以是制作者或者可以不是制作者,这取决于其工作是否流回到速率限制器架构中或者其工作是否流向外部部件。
在采用定制动作执行器1320的一些示例实施方式中,执行事件出现在总线上并由动作执行器1320消耗,除了通常在执行模块417中实现的内容以外或替代通常在执行模块417中实现的内容,动作执行器1320采取一些执行动作。定制处理器1310和定制动作执行器1320不需要并且通常可以不与应用410在相同的处理或计算实例(例如,虚拟机)中运行,因为这些扩展点仅在消息总线425上对接并且从而可以在该总线的连接内的任何地方执行。
在一些示例实施方式中,数据注入器715被配置成将来自应用410的任何数据注入到速率限制器服务420中。可以添加一个或更多个定制可插拔模块610以用于处理来自消息总线425的消息。在一些示例实施方式中,一个或更多个定制处理器被实现并驻留在分布式实时计算***之外,并且也可以处理来自消息总线425的消息。在一些示例实施方式中,定制动作执行器1320被配置成通过修改某些外部***来等待执行某些动作消息。
图14示出根据一些示例实施方式的速率限制器***150的***架构的特征。图14示出与图13相关的示例实施方式,其中定制动作执行器执行动作以存储被识别为机器人(Bot)的用户(例如,在数据库表或***实现方式的其他非速率限制器部分中)。该图示出与速率限制器架构内的定制可插拔模块610-3配对的这种执行,使得它是速率限制器后端集群的一部分。在一些示例实施方式中,这种定制逻辑还作为定制处理器更加灵活地操作,使得它与后端分开运行并用作消息总线上的另外的消费者。
在一些示例实施方式中,定制可插拔模块610-3分析请求以识别或以其他方式检测使用一个或更多个用户帐户的自动化机器人(例如,因特网机器人(Internet Bot))访问。当识别出机器人时,经由动作消息向消息总线传送用户帐户。这种动作消息由***的用于存储被检测为机器人的用户的部件拾取。在一些示例实施方式中,速率限制器服务420或应用410拾取该动作消息并存储被检测为机器人的用户。在一些示例实施方式中,应用410或其他应用调用存储被检测为机器人的用户的部件以便识别机器人用户。例如,应用410可以调用该部件以确定特定用户是否已被识别为机器人。
图15示出根据一些示例实施方式的速率限制器***150的***架构的特征。图15示出具有定制处理器—使用分析引擎的实施方式,该使用分析引擎将数据存储到在线***内的数据库或一些其他分析***。此处,没有任何部件进行执行动作或开环动作,执行模块没有进行该执行动作或开环动作,定制动作执行器也没有进行该执行动作或开环动作。在图15中,数据注入器715添加关于用户行为的额外数据。该额外数据被推入消息总线425。该额外数据连同其他用户数据一起被输送到使用分析引擎1500中。使用分析引擎1500可以使用该额外数据执行各种不同的功能。在一些示例实施方式中,使用分析引擎1500例如通过采用对用户行为数据的预测分析,使用该额外数据来执行一个或更多个行为预测功能。
预期本文公开的任何实施方式的任何特征可以与本文公开的任何其他实施方式的任何其他特征组合。因此,这些任何这样的混合实施方式都在本公开的范围内。
图16是示出根据一些示例实施方式的移动设备1600的框图。移动设备1600可以包括处理器1602。处理器1602可以是适用于移动设备1600的各种不同类型的商业上可获得的处理器中的任何处理器(例如,XScale架构微处理器、无内部互锁流水线级的微处理器(MIPS)架构处理器或其他类型的处理器)。诸如随机存取存储器(RAM)、闪存或其他类型的存储器之类的存储器1604通常可由处理器1602访问。存储器1604可以适于存储操作***(OS)1606以及应用程序1608,例如可以向用户提供LBS的支持移动位置的应用。处理器1602可以直接耦接至或经由适当的中间硬件耦接至显示器1610以及一个或更多个输入/输出(I/O)设备1612,例如键盘、触摸板传感器、麦克风等。类似地,在一些示例实施方式中,处理器1602可以耦接至与天线1616对接的收发器1614。收发器1614可以被配置成经由天线1616传送以及接收蜂窝网络信号、无线数据信号或其他类型的信号,这取决于移动设备1600的性质。此外,在一些配置中,GPS接收器1618还可以利用天线1616来接收GPS信号。
在本文中将某些实施方式描述为包括逻辑或多个部件、模块或机构。模块可以构成软件模块(例如,机器可读介质上包含的代码)或硬件模块。“硬件模块”是能够执行某些操作的有形单元,并且可以按某些物理方式来配置或布置。在各种示例实施方式中,一个或更多个计算机***(例如,独立计算机***、客户端计算机***或服务器计算机***)或计算机***的一个或更多个硬件模块(例如,处理器或处理器组)可以通过软件(例如,应用或应用部分)被配置为进行操作以执行如本文所描述的某些操作的硬件模块。
在一些实施方式中,硬件模块可以机械地、电子地或以其任何合适的组合来实现。例如,硬件模块可以包括永久配置成执行某些操作的专用电路***或逻辑。例如,硬件模块可以是专用处理器,例如现场可编程门阵列(FPGA)或专用集成电路(ASIC)。硬件模块还可以包括由软件临时配置成执行某些操作的可编程逻辑或电路***。例如,硬件模块可以包括由通用处理器或其他可编程处理器执行的软件。一旦通过这样的软件进行配置,则硬件模块成为被唯一地定制成执行所配置的功能的特定机器(或机器的特定部件),并且不再是通用处理器。应当理解,可以通过成本和时间考虑来驱动机械地、以专用的永久配置的电路***或以临时配置的电路***(例如,由软件进行配置)实现硬件模块的决定。
因此,短语“硬件模块”应当被理解成包含有形实体,即为被物理地构造、永久配置(例如,硬连线)或临时配置(例如,编程)以按某种方式进行操作或者执行本文所描述的某些操作的实体。如本文所使用的,“硬件实现的模块”指的是硬件模块。考虑其中硬件模块被临时配置(例如,被编程)的实施方式,每个硬件模块不需要在任一时刻处均被配置或实例化。例如,在硬件模块包括通过软件配置而成为专用处理器的通用处理器的情况下,通用处理器可以在不同时间处被配置成分别不同的专用处理器(例如,包括不同的硬件模块)。软件相应地配置一个或更多个特定处理器以例如在一个时刻处构成特定硬件模块并且在不同的时刻处构成不同的硬件模块。
硬件模块可以向其它硬件模块提供信息并且接收来自其它硬件模块的信息。因此,所描述的硬件模块可以被视为通信地耦接。在同时存在多个硬件模块的情况下,可以通过信号传输(例如,通过适当的电路和总线)在两个或更多个硬件模块之间实现通信。在其中多个硬件模块在不同时间处被配置或实例化的实施方式中,可以例如通过将信息存储在多个硬件模块可以访问的存储器结构中并且在该存储器结构中检索信息来实现这样的硬件模块之间的通信。例如,一个硬件模块可以执行操作并将该操作的输出存储在与其通信地耦接的存储器设备中。于是,另外的硬件模块可以稍后访问该存储器设备以检索和处理所存储的输出。硬件模块还可以发起与输入或输出设备的通信,并且可以对资源(例如,信息的集合)进行操作。
在本文中描述的示例方法的各种操作可以至少部分地由被临时地配置(例如,由软件)或永久地配置以执行相关操作的一个或更多个处理器来执行。无论是被临时配置还是永久配置,这样的处理器可以构成进行操作以执行本文描述的一个或更多个操作或功能的处理器实现的模块。如本文所使用的,“处理器实现的模块”指的是使用一个或更多个处理器实现的硬件模块。
类似地,本文描述的方法可以至少部分地由处理器实现,其中,一个或更多个特定处理器是硬件的示例。例如,方法的至少一些操作可以由一个或更多个处理器或者处理器实现的模块来执行。此外,一个或更多个处理器还可以进行操作以支持“云计算”环境中的相关操作的执行或操作为“软件即服务”(SaaS)。例如,至少一些操作可以由一组计算机(作为包括处理器的机器的示例)来执行,其中,这些操作可经由网络(例如,因特网)以及经由一个或更多个合适接口(例如,应用程序接口(API))访问。
某些操作的执行可以分布在多个处理器之间,不仅驻留在单个机器内,而且跨多个机器部署。在一些示例实施方式中,处理器或处理器实现的模块可以位于单个地理位置(例如,在家庭环境、办公室环境或服务器群内)。在其他示例实施方式中,处理器或处理器实现的模块可以跨多个地理位置分布。
在一些实施方式中,在机器和相关软件架构的背景下实现结合图4至图15描述的模块、方法、应用等。以下部分描述适于与所公开的实施方式一起使用的(一个或多个)代表性软件架构和机器(例如,硬件)架构。
软件架构与硬件架构结合使用,以创建针对特定目的而定制的设备和机器。例如,与特定软件架构耦接的特定硬件架构将创建移动设备,例如移动电话、平板电脑设备等。稍有不同的硬件和软件架构可能产生用于“物联网”的智能设备。而另一种组合产生用于在云计算架构中使用的服务器计算机。此处并未呈现这样的软件和硬件架构的所有组合,因为本领域技术人员可以容易地理解如何在与本文包含的公开不同的背景下实现本公开的特征。
图17是示出可以与本文描述的各种硬件架构结合使用的代表性软件架构1702的框图1700。图17仅是软件架构1702的非限制性示例并且应当理解,可以实现许多其他架构以促进本文描述的功能。软件架构1702可以在诸如包括处理器1610、存储器/存储装置1630和I/O部件1650等的图16的机器1600的硬件上执行。图17示出了代表性硬件层1704,并且代表性硬件层1704可以表示例如图16的机器1600。代表性硬件层1704包括具有相关联的可执行指令1708的一个或更多个处理单元1706。可执行指令1708表示包括图4至图15的方法、模块等的实现方式的软件架构1702的可执行指令。硬件层1704还包括也具有可执行指令1708的存储器和/或存储模块1710。硬件层1704还可以包括表示硬件层1704的任何其他硬件的其他硬件1712,例如作为机器1600的部分示出的其他硬件。
在图17的示例架构中,软件架构1702可以被概念化为层的堆栈,其中,每个层提供特定功能。例如,软件架构1702可以包括诸如操作***1714、库1716、框架/中间件1718、应用1720和表示层1744的层。在操作上,应用1720和/或层内的其他部件可以通过软件堆栈来激发应用编程接口(API)调用1724,并且响应于API调用1724而接收示出为消息1726的响应、返回值等。所示出的层本质上是代表性的,并非所有软件架构都具有所有的层。例如,一些移动或专用操作***可能不提供框架/中间件1718,而其他的可以提供这样的层。其他软件架构可以包括附加的层或不同的层。
操作***1714可以管理硬件资源并且提供公共服务。操作***1714可以包括例如内核1728、服务1730和驱动器1732。内核1728可以用作硬件与其他软件层之间的抽象层。例如,内核1728可以负责存储器管理、处理器管理(例如,调度)、部件管理、联网、安全设置等。服务1730可以向其他软件层提供其他公共服务。驱动器1732可以负责控制下层硬件或与下层硬件对接。例如,取决于硬件配置,驱动器1732可以包括显示驱动器、相机驱动器、驱动器、闪存驱动器、串行通信驱动器(例如,通用串行总线(USB)驱动器)、驱动器、音频驱动器、电源管理驱动器等。
库1716可以提供可以被应用1720或其他部件或层利用的公共基础设施。库1716通常提供如下功能,该功能使得其他软件模块能够以相比于与下层操作***1714功能(例如,内核1728、服务1730和/或驱动器1732)直接对接的方式更容易的方式来执行任务。库1716可以包括***库1734(例如,C标准库),该***库1734可以提供诸如存储器分配功能、字符串操作功能、算术功能等的功能。此外,库1716可以包括API库1736,例如媒体库(例如,用于支持诸如MPEG4、H.264、MP3、AAC、AMR、JPG、PNG的各种媒体格式的呈现和操作的库)、图形库(例如,可以用于在显示器上呈现2D和3D图形内容的OpenGL框架)、数据库库(例如,可以提供各种关系数据库功能的SQLite)、web库(例如,可以提供web浏览功能的WebKit)等。库1716还可以包括各种其他库1738,以向应用1720和其他软件部件/模块提供许多其他API。
框架/中间件1718可以提供可以由应用1720或其他软件部件/模块利用的较高层级的公共基础设施。例如,框架/中间件1718可以提供各种图形用户接口(GUI)功能、高层级资源管理、高层级位置服务等。框架/中间件1718可以提供可以由应用1720或其他软件部件/模块利用的广范围的其他API,其中一些API可以特定于特定操作***或平台。
应用1720包括内置应用1740或第三方应用1742。代表性内置应用1740的示例可以包括但不限于联系人应用、浏览器应用、书籍阅读器应用、位置应用、媒体应用、消息传送应用/或游戏应用。第三方应用1742可以包括内置应用1740以及各种其他应用中的任何。在特定示例中,第三方应用1742(例如,由不同于特定平台的供应商的实体使用AndroidTM或iOSTM软件开发工具包(SDK)开发的应用)可以是在诸如iOSTM、AndroidTMPhone或其他移动操作***的移动操作***上运行的移动软件。在该示例中,第三方应用1742可以激发由诸如操作***1714的移动操作***提供的API调用1724,以促进本文描述的功能。
应用1720可以利用内置操作***功能(例如,内核1728、服务1730和/或驱动器1732)、库(例如,***库1734、API库1736和其他库1738)以及框架/中间件1718来创建用户接口以与***的用户交互。替选地或另外地,在一些***中,与用户的交互可以通过诸如表示层1744的表示层来发生。在这些***中,应用/模块“逻辑”可以与和用户交互的应用/模块的方面分开。
一些软件架构利用虚拟机。在图17的示例中,这由虚拟机1748示出。虚拟机创建软件环境,在该软件环境中,应用/模块可以执行,好像它们在硬件机器(例如,图16的机器)上执行一样。虚拟机由主机操作***(例如,操作***1714)托管,并且通常但并非总是具有虚拟机监视器1746,虚拟机监视器1746管理虚拟机1748的操作以及与主机操作***(例如,操作***1714)的对接。诸如操作***1750、库1752、框架1754、应用1756或表示层1758的软件架构在虚拟机1748内执行。在虚拟机1748内执行的这些软件架构的层可以与先前描述的对应层相同或可以不同。
图18是示出根据一些示例性实施方式的能够从机器可读介质(例如,机器可读存储介质)读取指令并执行本文所讨论的方法中的任一种或更多种方法的机器1800的部件的框图。具体地,图18以计算机***的示例形式示出机器1800的示意图,在该机器1800中可以执行指令1816(例如,软件、程序、应用、小程序、app或其他可执行代码),以用于使机器1800执行本文讨论的方法中的任何一种或更多种方法。例如,指令可以使机器执行关于图4至图15所讨论的任何操作等。指令将通用的未编程的机器变换成特定机器,该特定机器被编程以按所描述的方式执行所描述和示出的功能。在替选实施方式中,机器1800作为独立设备操作或者可以耦接(例如,联网)至其他机器。在联网部署中,机器1800可以在服务器-客户端网络环境中以服务器机器或客户端机器的性能来操作,或者在对等(或分布式)网络环境中作为对等机器来操作。机器1800可以包括但不限于服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本、机顶盒(STB)、个人数字助理(PDA)、娱乐媒体***、蜂窝电话、智能电话、移动设备、可穿戴设备(例如,智能手表)、智能家居设备(例如,智能家用电器)、其他智能设备、web装置、网络路由器、网络交换机、网络桥接器或者能够顺序地或以其他方式执行指定机器1800要采取的动作的指令1816的任何机器。此外,虽然仅示出了单个机器1800,但是术语“机器”还应该被理解为包括单独或共同执行指令1816以执行本文中讨论的方法中的任何一种或更多种方法的机器1800的集合。
机器1800可以包括处理器1810、存储器1830和I/O部件1850,处理器1810、存储器1830和I/O部件1850可以被配置成例如经由总线1802相互通信。在示例实施方式中,处理器1810(例如,中央处理单元(CPU)、精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、射频集成电路(RFIC)、其他处理器或其任意合适的组合)可以包括例如可以执行指令1816的处理器1812和处理器1814。术语“处理器”旨在包括多核处理器,该多核处理器可以包括可以同时执行指令的两个或更多个独立处理器(有时称为“核”)。虽然图18示出了多个处理器,但是机器1800可以包括具有单个核的单个处理器、具有多个核的单个处理器(例如,多核处理)、具有单个核的多个处理器、具有多个核的多个处理器或其任意组合。
存储器/存储装置1830可以包括诸如主存储器或其他存储器存储装置的存储器1832以及存储单元1836,处理器1810例如可经由总线1802访问存储器1832和存储单元1836两者。存储单元1836和存储器1832存储用于实现本文中描述的方法或功能中的任何一个或更多个的指令1816。指令1816还可以在其由机器1800执行期间完全地或部分地驻留在存储器1832内、存储单元1836内、至少一个处理器1810内(例如,在处理器的高速缓冲存储器内)或它们的任何合适的组合内。因此,存储器1832、存储单元1836和处理器1810的存储器是机器可读介质的示例。
如本文所使用的,“机器可读介质”是指能够临时或永久地存储指令和数据的设备,并且可以包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、缓冲存储器、闪速存储器、光学介质、磁介质、高速缓冲存储器、其他类型的存储装置(例如,可擦除可编程只读存储器(EEPROM))和/或其任意合适组合。术语“机器可读介质”应该被理解为包括能够存储指令1816的单个介质或多个介质(例如,集中式或分布式数据库或者相关联的高速缓冲存储器和服务器)。术语“机器可读介质”还应当被理解为包括能够存储用于由机器(例如,机器1800)执行的指令(例如,指令1816)使得该指令在由机器1800的一个或更多个处理器(例如,处理器1810)执行时使机器1800执行本文所描述的方法中的一种或更多种方法的任何介质或多个介质的组合。因此,“机器可读介质”是指单个存储装置或设备以及包括多个存储装置或设备的“基于云”的存储***或存储网络。术语“机器可读介质”不包括信号本身。
I/O部件1850可以包括用于接收输入、提供输出、产生输出、传送信息、交换信息、捕获测量等的各种各样的部件。包括在特定机器中的特定I/O部件1850将取决于机器的类型。例如,诸如移动电话的便携式机器可能会包括触摸输入设备或其他这样的输入机构,而无头服务器机器可能不会包括这样的触摸输入设备。要理解的是,I/O部件1850可以包括图18中未示出的许多其他部件。I/O部件1850根据功能被分组仅为了简化以下讨论,并且该分组决不是限制性的。在各种示例实施方式中,I/O部件1850可以包括输出部件1852和输入部件1854。输出部件1852可以包括视觉部件(例如,诸如等离子体显示面板(PDP)、发光二极管(LED)显示器、液晶显示器(LCD)、投影仪或阴极射线管(CRT)的显示器)、声学部件(例如,扬声器)、触觉部件(例如,振动马达、阻力机构)、其他信号发生器等。输入部件1854可以包括字母数字输入部件(例如,键盘、被配置成接收字母数字输入的触摸屏、光电键盘或其他字母数字输入部件)、基于点的输入部件(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器或其他指向仪器)、触觉输入部件(例如,物理按钮、提供触摸或触摸手势的位置和/或力的触摸屏或者其他触觉输入部件)、音频输入部件(例如,麦克风)等。
在其他示例实施方式中,I/O部件1850可以包括生物识别部件1856、运动部件1858、环境部件1860或定位部件1862、或者广泛的其他部件。例如,生物识别部件1856可以包括用于检测表达(例如,手表达、面部表情、声音表达、身体姿势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、出汗或脑波)、识别人(例如,声音识别、视网膜识别、面部识别、指纹识别或基于脑电图的识别)等的部件。运动部件1858可以包括加速度传感器部件(例如,加速度计)、重力传感器部件、旋转传感器部件(例如,陀螺仪)等。环境部件1860可以包括例如照明传感器部件(例如,光度计)、温度传感器部件(例如,检测环境温度的一个或更多个温度计)、湿度传感器部件、压力传感器部件(例如,气压计)、声学传感器部件(例如,检测背景噪声的一个或更多个麦克风)、接近度传感器部件(例如,检测附近对象的红外传感器)、气体传感器(例如,用于出于安全考虑而检测危险气体的浓度或用于测量大气中的污染物的气体检测传感器)或者可以提供与周围物理环境对应的指示、测量或信号的其他部件。定位部件1862可以包括位置传感器部件(例如,全球定位***(GPS)接收器部件)、高度传感器部件(例如,检测气压的高度计或气压计,根据该气压可以得到高度)、取向传感器部件(例如,磁力计)等。
可以使用各种技术来实现通信。I/O部件1850可以包括通信部件1864,通信部件1864可进行操作以分别经由耦接1882和耦接1872将机器1800耦接至网络1880或设备1870。例如,通信部件1864可以包括网络接口部件或其他合适的设备以与网络1880对接。在另外的示例中,通信部件1864可以包括有线通信部件、无线通信部件、蜂窝通信部件、近场通信(NFC)部件、部件(例如,)、部件和经由其他形式提供通信的其他通信部件。设备1870可以是另外的机器或各种***设备中的任何(例如,经由通用串行总线(USB)耦接的***设备)。
此外,通信部件1864可以检测标识符或包括可操作以检测标识符的部件。例如,通信部件1864可以包括射频识别(RFID)标签阅读器部件、NFC智能标签检测部件、光学阅读器部件(例如,用于检测诸如通用产品码(UPC)条形码的一维条形码、诸如快速响应(QR)码的多维条形码、Aztec码、数据矩阵、数据符号(Dataglyph)、最大码(MaxiCode)、PDF417、超码(Ultra Code)、UCC RSS-2D条形码和其他光学码的光学传感器)或声学检测部件(例如,用于识别标记的音频信号的麦克风)。另外,可以经由通信部件1864得到各种信息,例如经由因特网协议(IP)地理位置得到位置、经由信号三角测量得到位置、经由检测可以指示特定位置的NFC信标信号得到位置等。
在各种示例实施方式中,网络1880的一个或更多个部分可以是自组织网络、内联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、因特网、因特网的一部分、公共交换电话网络(PSTN)的一部分、普通老式电话服务(POTS)网络、蜂窝电话网络、无线网络、网络、另外的类型的网络或者两个或更多个这样的网络的组合。例如,网络1880或网络1880的一部分可以包括无线或蜂窝网络,并且耦接1882可以是码分多址(CDMA)连接、全球移动通信***(GSM)连接或其他类型的蜂窝或无线耦接。在该示例中,耦接1882可以实现各种类型的数据传输技术中的任何,例如单载波无线电传输技术(1xRTT)、演进数据优化(EVDO)技术、通用分组无线服务(GPRS)技术、GSM演进的增强数据率(EDGE)技术、包括3G的第三代合作伙伴计划(3GPP)、***无线(4G)网络、通用移动电信***(UMTS)、高速分组接入(HSPA)、全球微波接入互操作性(WiMAX)、长期演进(LTE)标准、由各种标准设置组织定义的其他标准、其他远程协议或其他数据传输技术。
可以经由网络接口设备(例如,包括在通信部件1864中的网络接口部件)使用传输介质并且利用许多公知的传输协议中的任一传输协议(例如,超文本传输协议(HTTP))通过网络1880来传送或接收指令1816。类似地,可以使用传输介质经由至设备1870的耦接1872(例如,对等耦接)来传送或接收指令1816。术语“传输介质”应当被理解为包括能够存储、编码或承载用于由机器1800执行的指令1816的任何无形介质,并且包括数字或模拟通信信号或促进这样的软件的通信的其他无形介质。
在整个说明书中,多个实例可以实现被描述为单个实例的部件、操作或结构。尽管一种或更多种方法的各个操作被示出并描述为单独的操作,但是可以同时执行一个或更多个单独的操作,并且不需要以所示的顺序执行操作。在示例配置中作为单独的部件呈现的结构和功能可以实现为组合结构或部件。类似地,作为单个部件呈现的结构和功能可以实现为多个单独的部件。这些和其他变化、修改、添加和改进都落入本文中的主题的范围内。
尽管已经参照特定示例实施方式描述了本发明主题的概述,但是在不脱离本公开的实施方式的更宽范围的情况下,可以对这些实施方式进行各种修改和改变。本发明主题的这样的实施方式在本文中可以单独地或共同地通过术语“发明”来提及,这仅仅是出于方便,而不意图在实际上公开了一个以上的公开或发明构思的情况下将本申请的范围自主地限制于任何单个公开或发明构思。
足够详细地描述了本文中示出的实施方式,以使得本领域技术人员能够实践所公开的教导。可以从其得到其他实施方式并且使用其他实施方式,使得可以在不脱离本公开的范围的情况下进行结构和逻辑替代和改变。因此,具体实施方式不应以限制性意义理解,并且各种实施方式的范围仅通过所附权利要求连同这样的权利要求所具有的等同方案的完全范围来限定。
如本文中使用的,术语“或”可以被解释为包含性或排他性意义。此外,可以针对在本文中描述为单个实例的资源、操作或结构提供多个实例。另外,各种资源、操作、模块、引擎和数据存储之间的边界在某种程度上是任意的,并且特定操作在特定说明性配置的背景下示出。预期功能的其他分配,并且功能的其他分配可以落入本公开的各种实施方式的范围内。通常,在示例配置中呈现为多个单独资源的结构和功能可以实现为组合的结构或资源。类似地,呈现为单个资源的结构和功能可以实现为多个单独资源。这些和其他变化、修改、添加和改进落入如由所附权利要求表示的本公开的实施方式的范围内。因此,说明书和附图应被视为具有说明性意义而非限制性意义。
尽管已经参考具体示例实施方式描述了实施方式,但是将明显的是,在不脱离本公开的更广泛的范围的情况下,可以对这些实施方式进行各种修改和改变。因此,说明书和附图应被视为具有说明性意义而非限制性意义。形成本文的一部分的附图通过说明而非限制的方式示出了可以实践本主题的具体实施方式。足够详细地描述了所示的实施方式,以使得本领域技术人员能够实践本文中公开的教导。可以从其得到其他实施方式并且使用其他实施方式,使得可以在不脱离本公开的范围的情况下做出结构和逻辑替换和改变。因此,该具体实施方式不应以限制性意义理解,并且各种实施方式的范围仅由所附权利要求连同这样的权利要求所具有的等同方案的完全范围来限定。
本发明主题的这些实施方式在本文中可以单独地和/或共同地通过术语“发明”来提及,这仅仅是出于方便,并且不意图在实际上公开了一个以上的发明或发明构思的情况下将本申请的范围自主地限制于任何单个发明或发明构思。因此,虽然已经在本文中示出和描述了具体实施方式,但是应当意识到的是,可以使用被计划用以实现相同目的的任何布置来替换所示出的具体实施方式。本公开意在涵盖各种实施方式的任何以及全部调整或变型。对于本领域技术人员而言,在查阅上述描述时,上述实施方式的组合以及本文中未具体描述的其他实施方式将是明显的。
本公开的摘要被提供以允许读者快速地确定本技术公开的实质。该摘要是基于以下理解而提交的:其不用于解释或限制权利要求的范围或含义。另外,在前述具体实施方式中,可以看到的是,出于使本公开精简的目的,各种特征在单个实施方式中被组合在一起。本公开的方法不被解释为反映如下意图:所要求保护的实施方式需要比在每个权利要求中明确记载的特征更多的特征。而是,如以下的权利要求反映的,发明主题在于少于单个公开的实施方式中的所有特征。因此,以下权利要求在此并入具体实施方式中,其中,每个权利要求自身作为单独的实施方式而存在。

Claims (20)

1.一种***,包括:
至少一个硬件处理器;以及
计算机可读介质,其存储可执行指令,所述可执行指令在被执行时使得所述至少一个处理器执行包括以下的操作:
通过速率限制器服务从在线应用接收对在线资源进行访问的请求;
通过所述速率限制器服务将所述请求的指示传送至后端***;
从所述后端***接收对应于所述在线资源的执行决定,所述执行决定包括允许或者拒绝访问所述在线资源的指令,从所述后端***接收所述执行决定与接收所述请求和传送所述指示异步地执行;
存储从所述后端***接收的所述执行决定;
响应于接收到所述请求而访问所存储的执行决定;以及
使用所访问的执行决定来对所述请求进行响应。
2.根据权利要求1所述的***,其中,所述操作还包括:
通过所述后端***基于所述在线资源的使用历史和一个或更多个规则来确定所述执行决定,确定所述执行决定与通过所述速率限制器服务传送所述请求的指示异步地执行。
3.根据权利要求2所述的***,其中,所述操作还包括:
通过所述后端***,与通过所述速率限制器服务传送所述请求的指示异步地将所述执行决定传送至所述速率限制器服务,
其中,存储从所述后端***接收的所述执行决定包括通过所述速率限制器服务存储所述执行决定,
其中,响应于接收到所述请求而访问所存储的执行决定包括通过所述速率限制器服务响应于接收到所述请求而访问所存储的执行决定,以及
其中,使用所访问的执行决定来对所述请求进行响应包括将所访问的执行决定传送至所述在线应用的执行模块,所述执行模块被配置成实现所述执行决定。
4.根据权利要求2所述的***,其中,所述操作还包括:
通过所述后端***,与通过所述速率限制器服务传送所述请求的指示异步地将所述执行决定传送至所述在线应用的执行模块,
其中,存储从所述后端***接收的所述执行决定包括通过所述在线应用的执行模块存储所述执行决定,
其中,响应于接收到所述请求而访问所存储的执行决定包括通过所述在线应用的执行模块响应于接收到所述请求而访问所存储的执行决定,以及
其中,使用所访问的执行决定来对所述请求进行响应包括通过所述在线应用的执行模块实现所述执行决定。
5.根据权利要求2所述的***,其中,所述一个或更多个规则包括以下中的一个或更多个:能够在预定时间段内被服务的请求的最大限制;能够在预定时间段内被服务的请求的类型的最大限制;能够在预定时间段内被服务的与单个因特网协议(IP)地址相关联的请求或请求的类型的最大限制;以及能够在预定时间段内被服务的与特定移动设备相关联的请求或请求的类型的最大限制。
6.根据权利要求1所述的***,其中,所述请求的指示对所述请求的类型进行指示。
7.根据权利要求1所述的***,其中,所述在线应用包括web应用。
8.一种计算机实现的方法,包括:
通过速率限制器服务从在线应用接收对在线资源进行访问的请求;
通过所述速率限制器服务将所述请求的指示传送至后端***;
从所述后端***接收对应于所述在线资源的执行决定,所述执行决定包括允许或者拒绝访问所述在线资源的指令,从所述后端***接收所述执行决定与接收所述请求和传送所述指示异步地执行;
存储从所述后端***接收的所述执行决定;
响应于接收到所述请求而访问所存储的执行决定;以及
使用所访问的执行决定来对所述请求进行响应。
9.根据权利要求8所述的计算机实现的方法,还包括:
通过所述后端***基于所述在线资源的使用历史和一个或更多个规则来确定所述执行决定,确定所述执行决定与通过所述速率限制器服务传送所述请求的指示异步地执行。
10.根据权利要求9所述的计算机实现的方法,还包括:
通过所述后端***,与通过所述速率限制器服务传送所述请求的指示异步地将所述执行决定传送至所述速率限制器服务,
其中,存储从所述后端***接收的所述执行决定包括通过所述速率限制器服务存储所述执行决定,
其中,响应于接收到所述请求而访问所存储的执行决定包括通过所述速率限制器服务响应于接收到所述请求而访问所存储的执行决定,以及
其中,使用所访问的执行决定来对所述请求进行响应包括将所访问的执行决定传送至所述在线应用的执行模块,所述执行模块被配置成实现所述执行决定。
11.根据权利要求9所述的计算机实现的方法,还包括:
通过所述后端***,与通过所述速率限制器服务传送所述请求的指示异步地将所述执行决定传送至所述在线应用的执行模块,
其中,存储从所述后端***接收的所述执行决定包括通过所述在线应用的执行模块存储所述执行决定,
其中,响应于接收到所述请求而访问所存储的执行决定包括通过所述在线应用的执行模块响应于接收到所述请求而访问所存储的执行决定,以及
其中,使用所访问的执行决定来对所述请求进行响应包括通过所述在线应用的执行模块实现所述执行决定。
12.根据权利要求9所述的计算机实现的方法,其中,所述一个或更多个规则包括以下中的一个或更多个:能够在预定时间段内被服务的请求的最大限制;能够在预定时间段内被服务的请求的类型的最大限制;能够在预定时间段内被服务的与单个因特网协议(IP)地址相关联的请求或请求的类型的最大限制;以及能够在预定时间段内被服务的与特定移动设备相关联的请求或请求的类型的最大限制。
13.根据权利要求8所述的计算机实现的方法,其中,所述请求的指示对所述请求的类型进行指示。
14.根据权利要求8所述的计算机实现的方法,其中,所述在线应用包括web应用。
15.一种机器可读存储介质,其存储指令集,所述指令集在由至少一个处理器执行时,使得所述至少一个处理器执行包括以下的操作:
通过速率限制器服务从在线应用接收对在线资源进行访问的请求;
通过所述速率限制器服务将所述请求的指示传送至后端***;
从所述后端***接收对应于所述在线资源的执行决定,所述执行决定包括允许或者拒绝访问所述在线资源的指令,从所述后端***接收所述执行决定与接收所述请求和传送所述指示异步地执行;
存储从所述后端***接收的所述执行决定;
响应于接收到所述请求而访问所存储的执行决定;以及
使用所访问的执行决定来对所述请求进行响应。
16.根据权利要求15所述的机器可读存储介质,其中,所述操作还包括:
通过所述后端***基于所述在线资源的使用历史和一个或更多个规则来确定所述执行决定,确定所述执行决定与通过所述速率限制器服务传送所述请求的指示异步地执行。
17.根据权利要求16所述的机器可读存储介质,其中,所述操作还包括:
通过所述后端***,与通过所述速率限制器服务传送所述请求的指示异步地将所述执行决定传送至所述速率限制器服务,
其中,存储从所述后端***接收的所述执行决定包括通过所述速率限制器服务存储所述执行决定,
其中,响应于接收到所述请求而访问所存储的执行决定包括通过所述速率限制器服务响应于接收到所述请求而访问所存储的执行决定,以及
其中,使用所访问的执行决定来对所述请求进行响应包括将所访问的执行决定传送至所述在线应用的执行模块,所述执行模块被配置成实现所述执行决定。
18.根据权利要求16所述的机器可读存储介质,其中,所述操作还包括:
通过所述后端***,与通过所述速率限制器服务传送所述请求的指示异步地将所述执行决定传送至所述在线应用的执行模块,
其中,存储从所述后端***接收的所述执行决定包括通过所述在线应用的执行模块存储所述执行决定,
其中,响应于接收到所述请求而访问所存储的执行决定包括通过所述在线应用的执行模块响应于接收到所述请求而访问所存储的执行决定,以及
其中,使用所访问的执行决定来对所述请求进行响应包括通过所述在线应用的执行模块实现所述执行决定。
19.根据权利要求16所述的机器可读存储介质,其中,所述一个或更多个规则包括以下中的一个或更多个:能够在预定时间段内被服务的请求的最大限制;能够在预定时间段内被服务的请求的类型的最大限制;能够在预定时间段内被服务的与单个因特网协议(IP)地址相关联的请求或请求的类型的最大限制;以及能够在预定时间段内被服务的与特定移动设备相关联的请求或请求的类型的最大限制。
20.根据权利要求15所述的机器可读存储介质,其中,所述请求的指示对所述请求的类型进行指示。
CN201880012644.9A 2017-02-27 2018-02-27 速率限制器 Pending CN110325967A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/442,938 2017-02-27
US15/442,938 US10554564B2 (en) 2017-02-27 2017-02-27 Rate limiter
PCT/US2018/019880 WO2018157109A1 (en) 2017-02-27 2018-02-27 Rate limiter

Publications (1)

Publication Number Publication Date
CN110325967A true CN110325967A (zh) 2019-10-11

Family

ID=63247102

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880012644.9A Pending CN110325967A (zh) 2017-02-27 2018-02-27 速率限制器

Country Status (3)

Country Link
US (3) US10554564B2 (zh)
CN (1) CN110325967A (zh)
WO (1) WO2018157109A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10554564B2 (en) 2017-02-27 2020-02-04 Ebay Inc. Rate limiter
US20190104198A1 (en) * 2017-10-04 2019-04-04 Microsoft Technology Licensing, Llc Accelerated throttling for web servers and services
US10542124B2 (en) * 2018-02-27 2020-01-21 Servicenow, Inc. Systems and methods of rate limiting for a representational state transfer (REST) application programming interface (API)
US10896066B2 (en) 2018-12-13 2021-01-19 Shopify Inc. Rate limiting in query processing based on computation cost
WO2021056069A1 (en) * 2019-09-25 2021-04-01 Commonwealth Scientific And Industrial Research Organisation Cryptographic services for browser applications
CN112838936B (zh) * 2019-11-22 2023-05-26 北京金山云网络技术有限公司 资源的限速方法、装置、用户终端和服务器
US11265250B2 (en) * 2020-06-26 2022-03-01 Adobe Inc. Targeted rate limiting of tenant systems in online services
US11275916B1 (en) * 2020-08-28 2022-03-15 Ncr Corporation Methods and a device for processor optimizations during item scanning and transaction processing
CN113518041B (zh) * 2021-06-15 2023-05-16 新华三大数据技术有限公司 一种报文处理方法及装置
US20230034770A1 (en) * 2021-07-30 2023-02-02 Stripe, Inc. Asynchronous statistic-based rate limiting in distributed system
CN115037799B (zh) * 2022-06-01 2024-01-05 阿里巴巴(中国)有限公司 限流方法、装置、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110238838A1 (en) * 2010-03-23 2011-09-29 Ebay Inc. Weighted request rate limiting for resources
CN105765944A (zh) * 2014-02-18 2016-07-13 甲骨文国际公司 促进第三方执行需要资源拥有者对资源的重复访问进行授权的请求的批处理
US20160337253A1 (en) * 2015-05-11 2016-11-17 Ebay Inc. System and method of site traffic control

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7844707B2 (en) 2007-12-20 2010-11-30 Yahoo! Inc. Web service multi-key rate limiting method and system
US8406136B2 (en) 2009-04-08 2013-03-26 Eden Rock Communications, Llc Systems and methods for hybrid rate limiting based on data bit count and data packet count
US9032077B1 (en) 2012-06-28 2015-05-12 Amazon Technologies, Inc. Client-allocatable bandwidth pools
US9660948B2 (en) 2014-06-23 2017-05-23 Google Inc. Rule-based rate limiting
US10554564B2 (en) 2017-02-27 2020-02-04 Ebay Inc. Rate limiter

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110238838A1 (en) * 2010-03-23 2011-09-29 Ebay Inc. Weighted request rate limiting for resources
CN105765944A (zh) * 2014-02-18 2016-07-13 甲骨文国际公司 促进第三方执行需要资源拥有者对资源的重复访问进行授权的请求的批处理
US20160337253A1 (en) * 2015-05-11 2016-11-17 Ebay Inc. System and method of site traffic control

Also Published As

Publication number Publication date
US20210211383A1 (en) 2021-07-08
US11463368B2 (en) 2022-10-04
US20200127928A1 (en) 2020-04-23
WO2018157109A1 (en) 2018-08-30
US20180248807A1 (en) 2018-08-30
US10992586B2 (en) 2021-04-27
US10554564B2 (en) 2020-02-04

Similar Documents

Publication Publication Date Title
CN110325967A (zh) 速率限制器
JP6802370B2 (ja) 製品タイトルの選択
US11676200B2 (en) Systems and methods for generating augmented reality scenes for physical items
CN107111591A (zh) 在设备之间传送认证的会话和状态
US11508001B2 (en) Dynamic checkout page optimization using machine-learned model
CN107534586A (zh) 网站流量控制的***和方法
US20130046609A1 (en) User-driven reverse auctions systems and methods
US11887173B2 (en) Computer-implemented systems and methods for in-store product recommendations
CN106164822A (zh) 保存通信会话的状态
US11341558B2 (en) Systems and methods for recommending a product based on an image of a scene
US11755103B2 (en) Using prediction information with light fields
US11222434B2 (en) Systems and methods for measuring body size
CN109643422A (zh) 基于传感器的产品推荐
US20230325909A1 (en) Systems and methods for recommending 2d image
KR20200144823A (ko) 사용자 어플리케이션을 이용한 전자 상거래 중개 시스템 및 방법
US11544053B2 (en) Methods and systems for generating application build recommendations
CA3096061C (en) Methods and systems for notifying users of new applications
US20230360032A1 (en) Methods and systems for dynamic update to access control rules in a computing system based on blockchain monitoring
AU2017101326A4 (en) Frameworks and methodologies configured to enable delivery of in-store sales lead data via a local device based on monitoring of distributed client terminal activity over a computing network
US20240078537A1 (en) Methods and systems for usage-conditioned access control based on a blockchain wallet
US20230078260A1 (en) Systems and methods for providing recommendations of computer applications based on similarity
US20240013202A1 (en) Methods and systems for usage-conditioned access control based on a blockchain wallet
US20240078594A1 (en) Dynamic generation of a virtual environment based on user-specific criteria
US20230410137A1 (en) Methods for managing virtual shopping carts
US20230351484A1 (en) Methods and systems for providing differentiated user interfaces

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