CN105637510A - 基于缓存流的加速 - Google Patents

基于缓存流的加速 Download PDF

Info

Publication number
CN105637510A
CN105637510A CN201480056920.3A CN201480056920A CN105637510A CN 105637510 A CN105637510 A CN 105637510A CN 201480056920 A CN201480056920 A CN 201480056920A CN 105637510 A CN105637510 A CN 105637510A
Authority
CN
China
Prior art keywords
request
data
content requests
autograph
asking
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.)
Granted
Application number
CN201480056920.3A
Other languages
English (en)
Other versions
CN105637510B (zh
Inventor
诺亚·菲德尔
杰里米·纳尔逊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of CN105637510A publication Critical patent/CN105637510A/zh
Application granted granted Critical
Publication of CN105637510B publication Critical patent/CN105637510B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

公开了用于加速远程过程调用的技术。这样的技术包括步骤:接收内容请求,所述内容请求包括对来自数据库的信息的至少一个数据请求;分析所接收的内容请求;以及确定所分析的内容请求是否包括与所接收的内容请求的执行并行地单独执行的至少一个数据请求。响应于确定能够并行地单独执行的至少一个数据请求,发起并行数据请求的执行;接收响应于数据请求的所请求的数据;本地存储接收的所请求的数据;以及响应于执行所接收的内容请求,提供存储的接收的所请求的数据。

Description

基于缓存流的加速
背景技术
在复杂的大型计算环境下,越来越多动态用户请求经常导致许多序列化RPC至不同的后端。工程师优化这些PRC非常昂贵,优化增加显著的技术复杂性和维护成本并经常增加系统时延。
即使有完善优化的手动编码来并行化这些RPC的一部分,他们仍然典型地是RPC的许多序列化块。这会导致增加的时延且在工程时间和系统复杂度方面减轻所述时延的成本是非常高的。
发明内容
在此讨论的解决方案的实施例可以涉及一种系统,包括:处理器;处理器可读存储器,其中存储有使处理器执行包括步骤的方法的指令:接收内容请求,内容请求包括对来自数据库的信息的至少一个数据请求;分析所接收的内容请求;确定所分析的内容请求是否包括与所接收的内容请求的执行并行地单独执行的至少一个数据请求;响应于确定所接收的内容请求包括与所接收的内容请求并行地单独执行的至少一个数据请求;发起与所接收的内容请求的执行并行地执行所述至少一个数据请求,所述执行包括将所述至少一个数据请求发送到至少一个数据库以执行;响应于所述至少一个数据请求,从所述至少一个数据库接收请求数据;本地存储所接收的请求数据;以及响应于所接收的内容请求的执行,提供存储的所接收的请求数据。
在一些实施例中,内容请求包括对来自一个或多个数据库的信息的两个或更多个数据请求,所述两个或更多个数据请求包括第一数据请求和第二数据请求。
在一些实施例中,发起执行包括发起与所述第二数据请求并行以及与所接收的内容请求并行执行所第一数据请求。
在一些实施例中,接收所请求的数据包括响应于所述第一数据请求而接收所请求的数据以及响应于所述第二数据请求而接收所请求数据。
在一些实施例中,将至少一个数据请求发送到至少一个数据库以执行包括将所述至少一个数据请求发送到数据中心。
在一些实施例中,分析包括识别在所接收的内容请求中包括的所有数据请求。
在一些实施例中,确定包括确定所识别的数据请求是否与和已知或先前执行的内容请求相关联的已知或先前执行的数据请求集合相匹配。
在一些实施例中,分析包括确定所接收的内容请求是否与先前执行的所接收的内容请求基本相同;以及响应于确定所接收的内容请求与先前执行的所接收的内容请求基本相同,确定所接收的内容请求包括与所接收的内容请求并行地单独执行的至少一个数据请求,并且发起与所接收的内容请求的执行并行地执行与先前执行的所接收的内容请求相关联的那些数据请求。
在一些实施例中,分析包括基于所接收的内容请求来生成请求签名。
在一些实施例中,确定包括将所生成的请求签名与一个或多个已知或先前生成的请求签名进行比较,所述已知或先前生成的请求签名每一个与一个或多个已知或先前执行的数据请求的集合相关联。
在一些实施例中,所接收的内容请求包括关于发起所述内容请求的应用的信息
在一些实施例中,所述请求签名是基于关于发起所述内容请求的应用的信息来生成的。
在一些实施例中,确定包括将所述分析的结果与一个或多个已知或先前的分析结果进行比较,所述已知或先前的分析结果中的每一个与一个或多个先前执行的数据请求的集合相关联。
在一些实施例中,所述已知或先前的分析结果存储在所述处理器可读存储器中。
在此描述的技术和解决方案的实施例可以涉及一种方法,包括上述步骤的一些或全部。在此描述的技术和解决方案的实施例可以涉及一种计算机可读介质,诸如电、磁或光存储介质或载波,具有用于执行其上或其中体现的上述方法步骤中的一些或全部的指令。
在此所述的技术和解决方案的实施例可以涉及一种系统,包括:处理器;处理器可读存储器,其中存储有使处理器执行包括以下步骤的方法的指令:从做出请求的实体接收对内容的请求;基于所接收的对内容的请求来生成请求指纹;首先确定所生成的请求指纹是否与所存储的请求指纹相匹配;响应于确定所生成的请求指纹与所存储的请求指纹相匹配,并行发起与所存储的请求指纹相关联的远程过程调用;在所述首先确定步骤之后,串行执行与所接收的请求相关联的远程过程调用,对于串行执行的每个远程过程调用,所述串行执行包括:将结果存根附接到该远程过程调用,结果存根表示并行执行的远程过程调用中的一个的结果的占位符;确定并行执行的远程过程调用中的所述一个是否已经完全执行;响应于确定并行执行的远程过程调用中的所述一个已经完全执行,将并行执行的远程过程调用中的所述一个已经完全执行的结果返回到所述结果存根;以及响应于确定所述并行执行的远程过程调用中的所述一个没有完全执行,暂停执行远程过程调用的串行执行,直到所述并行执行的远程过程调用中的所述一个已经完全执行为止,并且将所述并行执行的远程过程调用中的完成的一个的结果返回到结果存根;以及响应于所有所述串行执行的远程过程调用具有结果,基于远程过程调用结果将请求结果返回到所述做出请求的实体。
所讨论的系统和方法的进一步的应用范围从下文给出的详细描述将变得显而易见。然而,应当理解,由于根据此详细描述,在此公开的概念的精神和范围内的各种改变和修改对本领域的技术人员将变得显而易见,因此详细描述和具体示例在指示系统和方法的实施例的同时,仅通过说明的方式给出。
附图说明
根据下面仅通过示例方式而不是限制方式给出的本文的详细描述和附图,讨论的系统和方法将变得更充分地理解。
图1a示出如在此所述的表示RPC加速操作的实施例的框图;
图1b示出如在此所述的表示RPC加速操作的实施例的框图;
图2示出如在此所述的表示RPC签名的实施例的框图;
图3示出如在此所述的表示在数据访问装置和数据中心之间的数据流的实施例的框图;
图4示出如在此所述的表示在数据访问装置和数据中心之间的数据流的实施例的框图;
图5示出如在此所述的表示RPC加速操作的实施例的框图;
图6示出如在此所述的表示被配置为执行RPC加速或自动化操作的一部分或全部的计算装置的实施例的框图。
将在详细说明中详细描述附图。
具体实施方式
下列详细说明参见附图。在不同附图中的相同标号识别相同或相似元件。此外,下面的详细说明不限制讨论的概念。相反,在此讨论的概念的范围是由所附的权利要求书及其等同物限定。
在此公开的技术和系统涉及的设备和方法是指在运行系统上的仪器请求,学习入站请求的模式(客户端远程调用-RPC)以及依赖性的RPC请求流(下游或展开的PRC)。学习可以是基于启发式的,基于回归的,或基于记忆的。在图1a中示出描述仪器化请求截取和RPC自动化过程的工作流的实施例。
在示出的实施例中,例如,可以在本地web服务器处接收1001请求。web服务器可以配备有对请求1010进行分析的硬件、软件或其结合。这样的分析的实施例可以包括启发式分析,以针对已知或预期的模式来匹配请求。这样的分析的实施例可以包括基于记忆或基于散列的分析,以基于请求以及其中包括的或与之相关联的数据的一部分或全部来生成签名或散列键。
然后,可以评估1020分析结果,以确定web服务器或包括的或与之相关的RPC自动化软件或硬件是否可以预测1030RPC的类型,请求在web服务器已经完全处理所接收的请求之前将需要所述RPC的类型。分析结果也可以用于更新用于未来预测1060的数据。这样的数据可以包括改变与规则或评估算法相关联的权重或阈值。在一些实施例中,这样的数据可以包括用于评估未来请求的新的或附加的请求签名或散列键。
在一些实施例中,分析请求1010或评估分析结果1020还可以包括确定请求是否是用于RPC预测或自动化的候选。在这样的实施例中,可以将每个分析的请求与RPC调用或数据库查询的阈值进行比较,以确定请求是否是用于如在此所讨论的RPC自动化的候选。
如果请求被确定为是不可预测的1030或以另外方式不是适合的用于RPC自动化的候选,则可以在按顺序处理请求的各种RPC和/或数据库查询的情况下正常处理1050请求。如果请求被确定为是可预测的1030或以另外方式是合适的用于RPC自动化的候选,则可以并行发起1040被预测或以另外方式被确定为与所接收的请求相关联的RPC或数据库查询组。这些RPC和查询可以出去到数据中心、数据库和数据存储,其然后将结果发送回处理初始请求的系统。在一些实施例中可以是web服务器的系统接收并缓存RPC和查询的结果1070。
在一些实施例中,在发起1040并行RPC之后,web服务器可以继续正常处理传入请求1050,好像其中的RPC或查询将被按顺序寻址。然而,在请求中遇到RPC或查询,系统可以首先基于从发起1040的并行RPC和查询接收并缓存的结果1070查看对该RPC或查询的任何缓存的结果1080是否可用。如果缓存的结果1080可用,则缓存的结果可以响应于请求被返回1090,从而消除或减轻否则可能会产生或与该请求相关联的任何时延。如果缓存的结果不可用1080,则可以执行来自请求的RPC或查询,并且返回1099其结果。
上述实施例涉及RPC自动化系统的基于启发或基于记忆的实施例。基于启发的实施例可以包括规则和规则集合,其使系统能够基于传入RPC来确定或取得哪些类型的后续/附加/嵌入的RPC可以包括在传入RPC中、与传入RPC相关联或接着传入RPC。然后,可以在处理后续/附加/嵌入的RPC之前,所确定的或取得的RPC可以被触发以执行,并且可以在接收传入RPC的系统处本地缓存那些触发的RPC的结果。因此,当与传入PRC相关联的实际后续/附加/嵌入的RPC被系统处理时,例如,与那些RPC相关联的任何数据库查询的结果已经在本地缓存并可以响应于RPC立即提供。
在基于记忆的实施例中,接收传入RPC的系统可以记录每个入站请求的签名。在一些实施例中,请求可以被分析以识别高时延和/或RPC高成本查询。记录的签名的实施例可以包括如做出请求的用户标识的内容以及请求的分量,诸如目的地地址(例如:网站地址/URL)和/或任何目标数据库。使用记录的签名,在请求期间在下游做出的所有只读(非经历变化)PRC可以具有自动化的仪器,并在稍后的日期回写所有所需元数据以再现/重新调用那些RPC,并且基于请求的签名使用键缓存所述元数据。
每当处理这些昂贵请求中的一个时,在一些实施例中,自动化系统可以截取请求,生成请求签名,查找缓存/记忆的下游RPC元数据,以及并行开启与请求的签名相关联的所有下游PRC。在一些实施例中,可以在甚至调用正常应用控制流之前实现这样的下游PRC执行。在一些这样的实施例中,自动化系统可以在应用控制流和下游PRC调用代码之间插入每请求存根。在一些这样的实施例中,每当应用代码创建或引起新的RPC时,自动化系统可以被配置为截取RPC。如果捕获的RPC与已经触发及并行的RPC中的一个相匹配,则自动化系统可以简单地将已经存在的RPC和结果附接到应用RPC存根。
在图1b中示出描述仪器化请求截取和RPC自动化过程的基于记忆的实施例的工作流的实施例。在所示的实施例中,在通过例如web服务器接收2001请求之后,运行在web服务器上或与web服务器相关联的专用软件或硬件或其组合可以从接收的请求生成请求签名2010。在一些实施例中,可以在与web服务器交换数据的单独的计算机系统上操作专用软件。在一些实施例中,用于RPC自动化的web服务器和专用软件都可以被表示为一个或多个物理数据处理平台上操作的一个或多个虚拟或逻辑计算设备的一部分或全部。尽管参照web服务器进行描述,但是在此描述的技术和解决方案的实施例可以应用到向后端或单机或客户端应用或系统进行RPC调用的任何软件或硬件。
所生成的请求签名可以基于所接收的请求和所接收的请求的任何属性(诸如其参数)来表示记忆或散列值。在一些实施例中,请求属性可以包括做出请求的装置的IP或MAC地址、报头或诸如与请求相关联的用户账户和/或发起装置的标识符。发起装置的示例可以包括诸如平板电脑或智能手机的移动数据访问装置,或者诸如笔记本电脑或台式电脑的计算设备,或者物理或虚拟服务器或基于云的计算资源。在一些实施例中,请求可以包括识别发起请求的应用的属性或参数。例如,从特定web浏览器、游戏或生产力应用发起的请求可以具有指示特定web浏览器、游戏或生产力应用作为发起应用的属性或参数。
在一些实施例中,可以通过散列函数来生成请求签名。在一些实施例中,定制请求-散列函数可以用于将键空间限定为小/合理的尺寸。例如,具有用于登录但是没有用于任何请求行为的参数的请求可以具有不包括这样的参数的定制散列函数。基于请求的白名单参数/属性,或基于从请求散列排除的参数/属性的黑名单,这样的散列函数的实施例可以是完全定制的。
在生成2010请求签名之后,可以将所生成的签名与存储或已知的请求签名进行比较2020。每个存储或已知的请求签名可以与RPC或查询或其组合的特定集合相关联。在一些实施例中,已知的请求签名可以用作数据库或数据表键,以检索指示通过该请求签名应该触发哪些PRC和/或查询。在一些实施例中,可以通过接收传入请求的装置本地存储或访问这样的数据库或数据表。
如果所生成的请求签名与已知或存储的请求签名匹配2040,则可以至少部分并行2050执行与已知或存储的签名相关联的PRC或查询。在一些实施例中,可以无需等待或依赖于来自不同RPC的解决或结果同时触发或以另外方式执行与匹配请求相关联的一个或多个独特的RPC。
在一些实施例中,记忆过程可能已经存储在先前请求流中做出的所有可应用的RPC,在一些实施例中甚至包括直到做出较早(串行)请求之后没有被本地触发的那些PRC。在一些这样的实施例中,可以并行开始请求中包括的所有RPC。在一些实施例中,为了允许资源优化以及在这样的记忆RPC会话之间提供请求隔离,可以存在调度这些RPC的若干种模式。在一个实施例中,所有这样的RPC可以在异步连接上并行运行,而不阻塞线程。在另一个实施例中,所有这样的RPC可以在线程池中运行。在一些这样的实施例中,可以通过限速或限额在入站请求之间隔离请求的出站RPC。例如,在尺寸为100的线程池实施例中,每个入站请求一次可能只能调度20个线程上的PRC,而阻断其他可用线程。
如果所生成的请求签名与已知或存储的请求签名不匹配2040,则所生成的请求签名可以被记录或以另外方式存储2030以供以后使用或检索。在一些实施例中,仅与超过一定复杂度阈值的请求相关的那些签名可以被选择用于存储或记录。在一些实施例中,确定是否保存(缓存)出站记忆PRC签名可以在仪器化请求结束时(完成后)进行。在一些这样的实施例中,这允许收集和创建关于PRC的数量、它们的持续时间、尺寸和其他元数据的信息。在一些这样的实施例中,可以通过设置用于记忆(存储/缓存)请求的最小数量的出站RPC来建立复杂度阈值。在一些实施例中,出站RPC的最小阈值2可以被设置为复杂度阈值。在这样的实施例中,具有两个或更多个输出RPC的任何请求可以被选择用于存储或记录,以允许使用在此所述的技术的实施例的后续仪器化或加速。进一步的实施例可以采用不同的阈值或阈值范围,例如出站RPC的阈值范围为2到9。
在一些实施例中,为记录选择的请求签名也可以监视其执行,以确定哪些RPC或查询与请求相关联以及与其相关的任何依赖。在一些实施例中,这样的执行监视可以作为所接收的请求2080的处理的一部分,或者与所接收的请求2080的处理结合,以返回请求结果2099。在一些实施例中,请求可以是对具有来自其中包括的数据库的内容的网页的请求,并且返回的请求可以是扩增有数据库信息的网页。
在一些实施例中,在触发并行RPC和/或查询之后,系统可以开始寻找缓存的结果2070以响应于接收的请求提供。一旦接收并缓存2090各个并行触发的RPC的结果,可以响应于所接收的请求而返回2060那些缓存的结果。
在一些实施例中,这样的解决方案是完全自动的,允许它比手写PRC并行代码更快更精确地运行。这样的自动化的RPC记录和并行处理技术可以允许在请求执行中改善时延,并且还可以在部分数据中心故障期间通过与跨数据中心RPC时延的某个水平的隔离。此外,一些实施例可以允许围绕管理复杂并行数据结构降低代码/系统复杂度。
在图2中示出描述包括请求签名的数据记录的实施例的框图的实施例。在所示的实施例中,数据记录(诸如包括在数据表或数据库中的一个)可以包括请求签名3001。在一些实施例中,这样的请求签名可以是主键或类似的数据记录检索或查找值。请求签名可以是被表示为数字或字母数字序列值的散列键。在一些实施例中,这样的签名可以其中嵌入有表示用户ID、应用ID和/或与请求相关联的请求设备ID的信息。在这样的实施例中,散列签名可以使用呈现从请求签名不可恢复的任何信息(诸如用户ID或请求装置ID)的单向散列提供请求的独特标识符。
在一些实施例中,诸如应用ID的第二标识符可以被存储在数据记录中。在一些实施例中,应用ID可以识别记录表示的请求是否来自与第一操作系统相关联的第一浏览器应用或与第二操作系统相关联的第二浏览器应用。在一些实施例中,数据记录的查找键可以被表示为请求签名3001和诸如应用ID3010的第二标识符的组合。
在一些实施例中,表示请求的数据记录还包括关于目标地址3020的信息,诸如与请求相关联的网页URL或IP地址。在一些实施例中,这样的目标地址3020信息可以被嵌入在请求签名中,替代单独存储在数据记录中。
在一些实施例中,数据记录还可以包括与请求相关联的各种和/或多个RPC3030、3060、3070或查询的列表或记录。在一些实施例中,请求的每个RPC或查询可以与关于目标后端3040、3050、3080的信息相关联或以另外方式包括关于目标后端3040、3050、3080的信息,其中,将从目标后端3040、3050、3080查询数据,或者在目标后端3040、3050、3080上执行RPC。在一些实施例中,数据记录可以具有任意数量的RPC或查询。
图3描述了与数据访问装置和数据中心通信的配备有如在此描述的RPC自动化能力的web服务器的实施例。在示出的实施例中,数据访问装置4001(诸如智能手机、平板电脑、笔记本电脑、台式电脑或虚拟计算资源)可以配备有一个或多个处理器4040和某个量的易失性或非易失性存储器4030或某个组合,或与一个或多个处理器4040和某个量的易失性或非易失性存储器4030或某个组合相关联。数据访问装置4001可以运行或访问一个或多个应用4010和/或web浏览器4020或其他网络数据访问和交换工具或接口。
数据访问装置可以经由应用4010或web浏览器4020生成对内容的请求4050,诸如对网页的请求或对特定数据的请求。这样的请求可以经由网络4320发送到诸如web服务器4101的请求处理装置(例如,在对网页的请求的情况下)。在一些实施例中,网络4320可以包括或以另外方式连接到互联网。在一些实施例中,网络可以包括专用网络、虚拟专用网络、蜂窝数据网络、有线网络、无线数据传输、光纤数据传输或其组合。
来自数据访问装置4001的请求4050可以包括或需要到数据库的一个或多个RPC或查询以提供请求的数据或扩增网页。对于与网页请求相关的实施例,请求4050可以被web服务器4101接收。web服务器的实施例可以包括配备有一个或多个处理器4120和某个量的易失性或非易失性存储器4110或某个组合、或与一个或多个处理器4120和某个量的易失性或非易失性存储器4110或某个组合相关联的一个或多个物理或虚拟装置。
在一些实施例中,web服务器可以配备有如在此所述的请求处理4140和RPC自动化4130的能力。网络服务器的实施例还可以包括可以保持缓存数据4150的存储器或数据存储区。
在一些实施例中,接收的请求4050可以通过RPC自动化4130功能被截取在web服务器4101,以确定是否由于请求通过web服务器4140的请求处理能力被处理(或在一些实施例中,甚至在发起请求处理4130之前)在请求4050指示需要执行那些PRC查询之前并行识别和触发某些查询或PRC。在一些实施例中,这样的RPC自动化4130能力可以使多个同时或几乎同时的请求4160、4170经由诸如网络4310的通信链路从web服务器4101发送到一个或多个数据中心4201。
在一些实施例中,网络4310可以包括或以另外方式连接到互联网。在一些实施例中,网络可以包括专用网络、虚拟专用网络、蜂窝数据网络、有线网络、无线数据传输、光纤数据传输或其组合。在一些实施例中,web服务器4201可以是数据中心4201内的虚拟机。
在一些实施例中,数据中心4201可以包括配备有或包括一个或多个处理器4220和某个量的易失性和/或非易失性存储器4210的装置、装置组或设施。数据中心4210可以包括一个或多个前端特征4230,诸如查询或RPC接口,在数据中心运行的一个或多个应用4240,以及由存储由数据中心4201使用或从数据中心4201访问的信息的一个或多个数据库或数据表4250。
在一些实施例中,数据中心4201可以经由前端4230从web服务器4210接收请求4160、4170,并且通过一个或多个应用4240处理接收的请求以从一个或多个数据库或数据表4250中识别和检索期望的信息。然后,检索的信息可以以经由网络4310从数据中心发送的一个或多个响应4180、4190的形式提供给web服务器4101。在一些实施例中,响应4180、4190可以作为缓存的数据4150存储在web服务器4101,被表示为对与来自数据访问装置4001的请求4050相关联的已知的或预期查询与RPC的预先存在或预测获取的响应。
在一些实施例中,可以在web服务器4101处理请求4050之前或期间接收这样的缓存数据。在一些这样的实施例中,web服务器的请求处理4140能力可以被配置为在触发PRC或查询由下游数据中心4201执行之前对缓存数据4150检查请求4050中的PRC或查询的响应或结果。然后,RPC或查询结果可以作为通过网络4320发送的响应4060从web服务器4101发送到数据访问装置4001。
在一些实施例中,这样的RPC自动化还可以提供将数据访问装置4101与本地或远程数据中心4201中的故障隔离的优点。通过在web服务器4101预先或预测地触发RPC请求,从数据访问装置4101屏蔽与数据中心故障4201相关联的延迟和时延。这是因为即使数据中心4201确实经历相对于任何一个RPC的故障,查询不同的数据中心或不同的数据库增加的时延不会影响任何其他RPC,原因是他们是并行执行而不是串行执行。
在多个/分布式数据中心系统中,隔离本地数据中心的部分故障的优点是明显的。在一个示例性系统中,使10个串行RPC到本地后端(假定为10ms响应时间的数据库),健康的数据中心可以以10x10ms=100ms的RPC等待时间来处理这样的请求。然而,如果本地数据中心的后端是不健康的,则这可能会导致跨数据中心RPC。假设跨数据中心响应时间是50ms(DCS之间的光速),不健康的后端可能会导致时延从100ms的RPC等待时间增加至500ms的RPC等待时间。请求捕获和自动化的自动化系统在此情况下通过使10个RPC并行来提供渐近加速,使得即使具有跨DCRPC,RPC等待时间也只有60ms(并行处理10ms+50ms跨DC光速)。
图4描述了示出如在此所述的在数据访问装置和数据中心之间的数据流的实施例。在所示的实施例中,数据访问装置7001可以生成包括RPC或数据库查询的对内容的请求7010。在网页请求的情况下,这样的请求可以如上所述通过网络7600被发送到web服务器7101。在通过web服务器接收或者在一些实施例中去往web服务器的途中时,可以通过RPC自动化特征或能力7190截取请求。
在一些实施例中,这样的RPC自动化能力7190可以基于从数据访问装置7001接收或截取的请求来生成请求签名7110。然后,可以将请求签名与RPC自动化能力7190存储或可访问的其他请求签名进行比较,以确定所生成的请求签名是否与已知或先前的请求签名相匹配。如果发现了7120匹配的请求签名,则基于与匹配签名相关联的RPC,可以并行触发一系列独特的RPC7130、7160。如在此先前所述,被触发的独特的RPC可以经由网络7700被发送到一个或多个数据中心7201。在将请求结果7230返回web服务器7101之前,数据中心7201可以从web服务器7101接收RPC请求7210,并且相应地处理RPC7220。
在web服务器7101或结合web服务器7101,返回的RPC结果可以本地缓存7140。在时间尺度上,与PRC自动化能力7190支配的动作并行,web服务器7101可以处理接收的请求7170,并且尝试得到或以另外方式检索请求的RPC或其查询结果7180。在一些实施例中,在向数据中心做出RPC请求之前(或代替向数据中心做出RPC请求),web服务器可以查找本地缓存,以查看是否已经存在本地可用的RPC或查询结果。然后,RPC或查询结果从web服务器7101返回或以另外方式提供7150到数据访问装置7001,数据访问装置7001接收结果7020并且相应地进一步呈现或处理。
图5描述了如在此所述的与请求生成和RPC自动化相关的处理流的实施例。在所示的实施例中,云计算环境中的一个或多个客户端9000可以向请求处理系统发送请求。这样的客户端可以包括应用、物理装置、虚拟装置、用户、自动化请求和其组合。
请求处理系统可以从客户端摄取或以另外方式接收请求并从其生成请求指纹9010。可以将生成的指纹与先前或预先确定或已知的请求指纹的缓存或存储进行比较,以确定是否存在匹配9020。在存在匹配的情况下,请求处理系统可以查找或以另外方式访问与匹配的请求指纹9030相关联的记忆或预先确定或已知的RPC集合,并且并行开始所有RPC9040。
在一些实施例中,不管请求指纹是否与已知或预先确定或先前的请求指纹相匹配,在尝试了查找和匹配操作9020之后,可以发起串行或“正常”请求流9050。在这样的请求流中,可以串行或顺序执行请求中的RPC调用9060。
在一些实施例中,每个串行调用的RPC可以被仪器化并且具有动态附接其上的存根9070。这允许串行调用的RPC连接到或以另外方式关联到先前并行开始的一个或多个RPC9040。在一些实施例中,如果已经存在动态附接的存根9130,则可以执行后续检查,以确定与该存根相关联的并行RPC是否已经完成9130。在一些实施例中,如果并行RPC尚未完成,则可以阻挡或暂停并行RPC调用,并且可以允许串行RPC调用执行或完成9160。在一些实施例中,可能出现相反的情况,允许完成并行RPC并阻挡或暂停串行调用的PRC,直到已经发起的并行PRC返回结果。
在一些实施例中,因为尚未发起RPC或因为它没有包括在并行RPC的集合中,所以RPC存根9130可能不存在。在这样的实施例中,可以开始并执行RPC,并且在一些实施例中,RPC的执行可以被记录9150用于记忆和随后回放。
在一些实施例中,并行RPC可能已经完成9130,在这种情况下,缓存的查询结果可以返回9140到动态附接的存根,使串行调用的RPC被完成,或者以另外方式以先前获取的缓存数据履行。以这种方式,RPC请求流可以被完成且结果返回到客户端9080。
在一些实施例中,在请求返回结果之后,记忆模块可以被调用9090,以创建请求的踪迹或记录用于PRC承载请求的未来自动化或仪器化。在一些实施例中,评估请求以确定改变的请求或新的请求或与先前记录的请求签名9100匹配或者不满足复杂度阈值的请求。在一些实施例中,改变的请求或新的请求可以使得创建或存储表示请求或其相关联的RPC的记忆元数据9120。在一些实施例中,不是新的或改变的请求或在复杂度阈值之下的请求可以不触发元数据的这样的记忆和存储,使系统替代地什么都不做9110。
虽然在功能方面进行了上面的讨论,但是通过使用一个或多个专用、可编程和/或专用编程的计算设备或其一部分可以实现功能图生成和调用路径搜索的特征和属性。
图6是示出被布置为执行如在此所述的调用图形生成和调用路径搜索技术的示例计算装置500的框图。在非常基本的配置501中,计算装置500通常包括一个或多个处理器510和系统存储器520。存储器总线530可以用于在处理器510和系统存储器520之间的通信。
取决于期望的配置,处理器510可以是任何类型,包括但不限于微处理器(μΡ)、微控制器(μC)、数字信号处理器(DSP)或其任意组合。处理器510可以包括多于一阶的缓存(诸如一阶缓存511和二阶缓存512)、处理器核心513和寄存器514。处理器核心513可以包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核心(DSP核)或其任意组合。存储器控制器515也可以与处理器510一起使用,或者在一些实现方式中,存储器控制器515可以是处理器510的内部部分。
取决于期望的配置,系统存储器520可以是任何类型,包括但不限于易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或其任意组合。系统存储器520通常包括操作系统521、一个或多个应用522和程序数据524。应用522可以包括如在此所述的调用图形生成和/或调用路径搜索特征523。程序数据524包括位置数据,诸如一个或多个依赖性列表或对象名称列表525,用于执行如上所述的期望操作。在一些实施例中,应用522可以被布置为利用操作系统521上的程序数据524来操作,使得整体系统执行如在此所讨论的技术的一个或多个特定变型。在图6中通过线501内的那些组件示出此描述的基本配置。
计算装置500可以具有附加特征或功能,以及附加接口,以促进基本配置501和任何所需装置和接口之间的通信。例如,总线/接口控制器540可以用于经由存储接口总线541促进基本配置501和一个或多个数据存储装置550之间的通信。数据存储装置550可以是可移动存储设备551、不可移动存储设备552或其组合。可移动存储和不可移动存储装置的示例包括磁盘装置(诸如柔性盘驱动器和硬盘驱动器(HDD))、光盘驱动器(诸如光盘(CD)驱动器或数字多功能盘(DVD)驱动器)、固态硬盘(SSD)和带驱动器,仅举几例。示例计算机存储介质可以包括以存储信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质,诸如计算机可读指令、数据结构、程序模块或其它数据。
系统存储器520、可移动存储551和不可移动存储552都是计算机存储介质的示例。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储、磁带盒、磁带、磁盘存储或其他磁存储设备或可以用于存储期望的信息或可以由计算装置500访问的任何其它介质。任何这样的计算机存储介质可以是装置500的一部分。
计算设备500还可以包括接口总线542,用于促进经由总线/接口控制器540从各种接口装置(例如,输出接口、外围接口以及通信接口)到基本配置501的通信。示例输出设备560包括图形处理单元561和音频处理单元562,其可以被配置为经由一个或多个A/V端口563通信到各种外部装置,诸如显示器或扬声器。示例外围接口570包括串行接口控制器571或并行接口控制器572,其可以被配置为经由一个或多个I/O端口573与外部装置(诸如输入装置(例如,键盘、鼠标、笔、语音输入装置、相机通信、触摸输入装置等))或其他外围装置(例如,打印机、扫描仪等)通信。示例通信装置580包括网络控制器581,其可以被布置为促进经由一个或多个通信端口582通过网络通信与一个或多个其他计算设备590通信
通信连接是通信介质的示例。通信介质通常可以以调制数据信号的形式(诸如载波或其它传输机制)通过计算机可读指令、数据结构、程序模块或其它数据来体现,并且包括任何信息传递介质。“调制数据信号”可以是具有其特性集合中的一个或多个或以对信号中的信息编码的方式改变的信号。以举例的方式而非限制,通信介质可以包括有线介质(诸如有线网络或直接有线连接),以及无线介质(诸如声学、射频(RF)、红外(IR)和其它无线介质)。如本文所用的术语计算机可读介质可以包括存储介质和通信介质两者。
计算设备500可以被实现为小形状尺寸便携式(或移动)电子装置的一部分,诸如移动电话、个人数据助理(PDA)、个人媒体播放器装置、无线web手表装置、个人耳机装置、专用装置或包括上述任何功能的混合装置。计算设备500也可以被实现为个人计算机,包括膝上型计算机和非膝上型计算机的配置。
在一些情况下,在系统的各个方面的硬件和软件实现之间小差别通常是表示成本与效率的权衡的设计选择(但不总是,在一定的环境中,硬件和软件之间的选择会变得显著)。存在各种运载者,在此描述的过程和/或系统和/或其他技术受其影响(例如,硬件、软件和/或固件),并且优选的运载者将随着部署过程和/或系统和/或其他技术的上下文而变化。例如,如果实施者确定速度和准确度是最重要的,则实施者可以选择主要的硬件和/或固件运载者;如果灵活性最重要的,则实施者可以选择主要软件实现;或者,替选地,实施者可以选择硬件、软件和/或固件的某种组合。
上述详细描述已经通过使用框图、流程图和/或示例阐述了装置和/或过程的各种实施例。只要这样的框图、流程图和/或示例包含一个或多个功能和/或操作,本领域的技术人员将理解,可以通过硬件、软件、固件或其任意组合的广泛范围单独地和/或共同地实现这样的框图、流程图或示例中的每个功能和/或操作。在一个实施例中,在此描述的主题的几个部分可以通过专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它集成格式来实现。然而,本领域的技术人员将认识到,在此公开的实施例的一些方面可以全部或部分地等效地实现在集成电路中,作为一个或多个计算机上运行的一个或多个计算机程序(例如,作为一个或多个计算机系统上运行的一个或多个程序),作为在一个或多个处理器上运行的一个或多个程序(例如,作为在一个或多个微处理器上运行的一个或多个程序),作为固件,或其任意组合,并且鉴于本公开,设计电路和/或编写软件和/或固件的代码在本领域的技术人员的范围内。此外,本领域的技术人员将理解,在此描述的主题的机制能够被作为各种形式的程序产品分发,并且在此描述的主题的说明性实施例适用,而不管用于实际执行该分发的特定类型的信号承载介质。信号承载介质的示例包括但不限于下列:可记录型介质,诸如软盘、硬盘驱动器、压缩盘(CD)、数字视频光盘(DVD)、数字磁带、计算机存储器等;以及传输型介质,诸如数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路等)。
本领域技术人员将认识到,本领域常见的是以在此阐述的方式描述装置和/或过程,并且此后使用工程实践来集成这样所描述的装置和/或过程成数据处理系统。也就是说,在此描述的装置和/或过程的至少一部分可以通过合理的实验量被集成到数据处理系统。本领域的技术人员将认识到,典型的数据处理系统通常包括系统单元壳体、视频显示装置、存储器(诸如易失性和非易失性存储器)、处理器(诸如微处理器和数字信号处理器)、计算实体(诸如操作系统、驱动器、图形用户界面和应用程序)、一个或多个交互装置(诸如触摸板或屏)和/或包括反馈环路和控制电机的控制系统(例如,用于感测位置和/或速度的反馈;用于移动和/或调整组件和/或数量的控制电机)中的一个或多个。可以利用任何合适的商用组件实现典型的数据处理系统,诸如通常在数据计算/通信和/或网络计算/通信系统中发现的那些组件。
对于在此使用基本上任何复数和/或单数的术语,本领域的技术人员可以从复数转换到单数和/或从单数转换到复数,适合于上下文和/或应用。为清楚起见,各种单数/复数置换可以在此明确阐述。
在本公开中仅示出和描述了在此讨论的系统和解决方案的示例性实施例。应该理解,在此所讨论的系统和解决方案能够在各种其他组合和环境中使用,并且在如本文表达的概念的范围内能够改变或修改。可以以硬件、固件和/或软件的组合来体现一些变型。一些变型可以至少部分地体现在计算机可读存储介质,诸如存储器芯片、硬盘驱动器、闪速存储器、光存储介质、或适合于传输到各种硬件装置/或组合/硬件装置的集合/由各种硬件装置/或组合/硬件装置的集合下载/安装在各种硬件装置上/或组合/硬件装置的集合的完全或部分编译的程序。这样的变型不应被认为脱离在此所讨论的系统和解决方案的精神和范围,对本领域技术人员明显的是所有这样的修改意在包括在所附权利要求的范围内。

Claims (21)

1.一种系统,包括:
处理器;
处理器可读存储器,其中存储有使所述处理器执行包括以下的步骤的方法的指令:
接收内容请求,所述内容请求包括对来自数据库的信息的至少一个数据请求;
分析所接收的内容请求;
确定所分析的内容请求是否包括能够与所接收的内容请求的执行并行地单独执行的至少一个数据请求;
响应于确定所接收的内容请求包括能够与所接收的内容请求并行地单独执行的至少一个数据请求,发起与所接收的内容请求的执行并行地执行所述至少一个数据请求,所述执行包括将所述至少一个数据请求发送到至少一个数据库以执行;
响应于所述至少一个数据请求,从所述至少一个数据库接收所请求的数据;
本地存储接收的所请求的数据;以及
响应于所接收的内容请求的执行,提供存储的接收的所请求的数据。
2.如权利要求1所述的系统,所述内容请求包括对来自一个或多个数据库的信息的两个或更多个数据请求,所述两个或更多个数据请求包括第一数据请求和第二数据请求;以及
所述发起执行包括发起与所述第二数据请求并行以及与所接收的内容请求并行地执行第一数据请求。
3.如权利要求1或2所述的系统,所述接收所请求的数据包括响应于所述第一数据请求而接收所请求的数据以及响应于所述第二数据请求接收所请求的数据。
4.如前述权利要求中的任何一个所述的系统,将至少一个数据请求发送到至少一个数据库以执行的步骤包括将所述至少一个数据请求发送到数据中心。
5.如前述权利要求中的任何一个所述的系统,分析步骤包括识别在所接收的内容请求中包括的所有数据请求;以及
确定步骤包括确定所识别的数据请求是否与和已知或先前执行的内容请求相关联的已知或先前执行的数据请求集合相匹配。
6.如前述权利要求中的任何一个所述的系统,分析步骤包括确定所接收的内容请求是否与先前执行的所接收的内容请求基本相同;以及
响应于确定所接收的内容请求与先前执行的所接收的内容请求基本相同,确定所接收的内容请求包括能够与所接收的内容请求并行地单独执行的至少一个数据请求,并且发起与所接收的内容请求的执行并行地执行与先前执行的所接收的内容请求相关联的那些数据请求。
7.如前述权利要求中的任何一个所述的系统,所述分析包括基于所接收的内容请求来生成请求签名;以及
所述确定包括将所生成的请求签名与一个或多个已知或先前生成的请求签名进行比较,所述已知或先前生成的请求签名每一个与一个或多个已知或先前执行的数据请求的集合相关联。
8.如权利要求7所述的系统,其中,所接收的内容请求包括关于发起所述内容请求的应用的信息;以及
其中,所述请求签名是基于关于发起所述内容请求的所述应用的信息来生成的。
9.如前述权利要求中的任何一个所述的系统,确定步骤包括将所述分析的结果与一个或多个已知或先前的分析结果进行比较,所述已知或先前的分析结果中的每一个与一个或多个先前执行的数据请求的集合相关联。
10.如权利要求9所述的系统,其中,所述已知或先前的分析结果存储在所述处理器可读存储器中。
11.一种方法,包括:
从数据访问装置接收内容请求,所述内容请求包括对来自数据库的信息的至少一个数据请求;
从所接收的内容请求生成请求签名,所述请求签名唯一地识别在所接收的内容请求中包括的所述至少一个数据请求;
将所生成的请求签名与至少一个已知的请求签名进行比较,所述已知的请求签名与至少一个已知的数据请求相关联;
响应于确定所生成的请求签名与所述已知的请求签名相匹配,发起与所接收的内容请求的执行并行地执行所述至少一个已知的数据请求,所述执行包括将所述至少一个已知的数据请求发送到至少一个数据库以执行;
响应于所述至少一个已知的数据请求而从至少一个数据库接收所请求的数据;
在处理器可读存储器中存储接收的所请求的数据;以及
响应于所接收的内容请求的执行而提供存储的接收的所请求的数据。
12.如权利要求11所述的方法,所述内容请求包括对来自一个或多个数据库的信息的两个或更多个数据请求,所述两个或更多个数据请求包括第一数据请求和第二数据请求;以及
所述发起执行包括发起与所述第二数据请求并行以及与所接收的内容请求并行地执行所述第一数据请求。
13.如权利要求11或12所述的方法,所述接收所请求的数据包括响应于所述第一数据请求而接收所请求的数据以及响应于所述第二数据请求而接收所请求的数据。
14.如权利要求11-13中的任何一个所述的方法,将至少一个数据请求发送到至少一个数据库以执行的步骤包括将所述至少一个数据请求发送到数据中心。
15.如权利要求11-14中的任何一个所述的方法,所生成的请求签名识别在所接收的内容请求中包括的所有数据请求;以及
比较步骤包括确定所识别的数据请求是否与和已知的请求签名相关联的已知或先前执行的数据请求集合相匹配。
16.如权利要求11-15中的任何一个所述的方法,比较步骤包括确定所生成的请求签名是否与先前生成的请求签名基本相同;以及
响应于确定所生成的请求签名与先前生成的请求签名基本相同,发起与所接收的内容请求的执行并行地执行与所述先前生成的请求签名相关联的那些数据请求。
17.如权利要求16所述的方法,比较步骤进一步包括:
将所生成的请求签名与一个或多个已知或先前生成的请求签名进行比较,所述已知或先前生成的请求签名每一个与一个或多个已知或先前执行的数据请求的集合相关联。
18.如权利要求17所述的方法,其中,所接收的内容请求包括关于发起所述内容请求的应用的信息;以及
其中,所述请求签名是基于关于发起所述内容请求的应用的信息来生成的。
19.如权利要求11-18中的任何一个所述的方法,比较步骤包括将所生成的请求签名与一个或多个已知或先前生成的请求签名进行比较,所述已知或先前生成的请求签名中的每一个与一个或多个先前执行的数据请求的集合相关联。
20.如权利要求19所述的方法,其中,所述已知或先前生成的请求签名存储在所述处理器可读存储器中。
21.一种系统,包括:
处理器;
处理器可读存储器,其中存储有使所述处理器执行包括以下的步骤的方法的指令:
从做出请求的实体接收对内容的请求;
基于所接收的对内容的请求生成请求指纹;
首先确定所生成的请求指纹与所存储的请求指纹是否相匹配;
响应于确定所生成的请求指纹与所存储的请求指纹相匹配,并行发起与所存储的请求指纹相关联的远程过程调用;
在所述首先确定步骤之后,串行执行与所接收的请求相关联的远程过程调用,对于被串行执行的每个远程过程调用,所述串行执行包括将结果存根附接到该远程过程调用,所述结果存根表示并行执行的远程过程调用中的一个的结果的占位符;确定并行执行的远程过程调用中的所述一个是否已经完全执行;响应于确定并行执行的远程过程调用中的所述一个已经完全执行,将并行执行的远程过程调用中的所述一个已经完全执行的结果返回到所述结果存根;以及响应于确定并行执行的远程过程调用中的所述一个没有完全执行,暂停该远程过程调用的串行执行,直到并行执行的远程过程调用中的所述一个已经完全执行,并且将并行执行的远程过程调用中的完成的一个的结果返回到所述结果存根;以及
响应于所述串行执行的远程过程调用的所有都具有结果,基于远程过程调用结果将请求结果返回到所述做出请求的实体。
CN201480056920.3A 2013-10-16 2014-10-02 基于缓存流的加速 Active CN105637510B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/055,463 US9292341B2 (en) 2013-10-16 2013-10-16 RPC acceleration based on previously memorized flows
US14/055,463 2013-10-16
PCT/US2014/058848 WO2015057400A1 (en) 2013-10-16 2014-10-02 Acceleration based on cached flows

Publications (2)

Publication Number Publication Date
CN105637510A true CN105637510A (zh) 2016-06-01
CN105637510B CN105637510B (zh) 2017-10-13

Family

ID=51790852

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480056920.3A Active CN105637510B (zh) 2013-10-16 2014-10-02 基于缓存流的加速

Country Status (7)

Country Link
US (1) US9292341B2 (zh)
EP (1) EP3058481B1 (zh)
KR (1) KR101719500B1 (zh)
CN (1) CN105637510B (zh)
BR (1) BR112016007606B1 (zh)
DE (1) DE202014010885U1 (zh)
WO (1) WO2015057400A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111355983A (zh) * 2018-12-21 2020-06-30 北京字节跳动网络技术有限公司 业务数据处理方法、装置、服务器及存储介质
CN112559387A (zh) * 2020-12-23 2021-03-26 湖南国科微电子股份有限公司 一种读请求处理方法、装置、设备及介质

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015210791A (ja) * 2014-04-30 2015-11-24 富士通株式会社 分散処理装置、分散処理システム、および分散処理プログラム
CN105897805B (zh) * 2015-01-04 2019-12-27 伊姆西公司 对多层架构的数据中心的资源进行跨层调度的方法和装置
DE102015116811B4 (de) * 2015-10-02 2017-04-13 Dynamic E Flow Gmbh Verbindungsstück
US10642814B2 (en) * 2015-10-14 2020-05-05 Paxata, Inc. Signature-based cache optimization for data preparation
US11169978B2 (en) 2015-10-14 2021-11-09 Dr Holdco 2, Inc. Distributed pipeline optimization for data preparation
US9703848B2 (en) 2015-11-13 2017-07-11 International Business Machines Corporation Caching linked queries for optimized compliance management
US11182228B2 (en) * 2020-03-31 2021-11-23 Samsung Electronics Co., Ltd. System and method for remote procedure call for key-value target over non-volatile memory express over fabrics

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0961210A1 (en) * 1998-05-29 1999-12-01 Xerox Corporation Signature file based semantic caching of queries
US20100242055A1 (en) * 2009-03-17 2010-09-23 Microsoft Corporation Remote procedure call chains

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2172514C (en) * 1993-09-27 2000-02-22 Gary Hallmark Method and apparatus for parallel processing in a database system
US6507834B1 (en) * 1999-12-22 2003-01-14 Ncr Corporation Method and apparatus for parallel execution of SQL from stored procedures
US7769802B2 (en) * 2003-12-04 2010-08-03 Microsoft Corporation Systems and methods that employ correlated synchronous-on-asynchronous processing
US7958160B2 (en) * 2003-12-16 2011-06-07 Oracle International Corporation Executing filter subqueries using a parallel single cursor model
US8010954B2 (en) * 2007-02-14 2011-08-30 The Mathworks, Inc. Parallel programming interface to dynamically allocate program portions
US7853678B2 (en) * 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring flow control of policy expressions
US7698411B2 (en) * 2007-08-22 2010-04-13 International Business Machines Corporation Selectively delivering cached content or processed content to clients based upon a result completed percentage
US8700608B2 (en) * 2007-10-17 2014-04-15 Oracle International Corporation SQL execution plan verification
US20090106781A1 (en) * 2007-10-23 2009-04-23 Reed Benjamin C Remote call handling methods and systems
US8935336B2 (en) * 2008-06-18 2015-01-13 Cisco Technology, Inc. Optimizing program requests over a wide area network
KR101430240B1 (ko) * 2011-12-19 2014-08-19 주식회사 케이티 어플리케이션 서명 장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0961210A1 (en) * 1998-05-29 1999-12-01 Xerox Corporation Signature file based semantic caching of queries
US20100242055A1 (en) * 2009-03-17 2010-09-23 Microsoft Corporation Remote procedure call chains

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
QUN REN 等: "Semantic Caching and Query Processing", 《DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111355983A (zh) * 2018-12-21 2020-06-30 北京字节跳动网络技术有限公司 业务数据处理方法、装置、服务器及存储介质
CN111355983B (zh) * 2018-12-21 2022-03-18 北京字节跳动网络技术有限公司 业务数据处理方法、装置、服务器及存储介质
CN112559387A (zh) * 2020-12-23 2021-03-26 湖南国科微电子股份有限公司 一种读请求处理方法、装置、设备及介质

Also Published As

Publication number Publication date
EP3058481B1 (en) 2019-09-11
CN105637510B (zh) 2017-10-13
BR112016007606A8 (pt) 2021-05-25
EP3058481A1 (en) 2016-08-24
BR112016007606A2 (pt) 2017-08-01
US20150106827A1 (en) 2015-04-16
KR101719500B1 (ko) 2017-03-24
BR112016007606B1 (pt) 2022-06-28
KR20160056944A (ko) 2016-05-20
DE202014010885U1 (de) 2017-01-17
US9292341B2 (en) 2016-03-22
WO2015057400A1 (en) 2015-04-23

Similar Documents

Publication Publication Date Title
CN105637510A (zh) 基于缓存流的加速
CN112491602B (zh) 行为数据的监控方法、装置、计算机设备及介质
CN109189857A (zh) 基于区块链的数据共享系统、方法和装置
US11579743B2 (en) Augmenting web applications with optimized workflows supporting user interaction
CN106021445A (zh) 一种加载缓存数据的方法及装置
CN109672722B (zh) 数据部署方法及装置、计算机存储介质和电子设备
US10305936B2 (en) Security inspection of massive virtual hosts for immutable infrastructure and infrastructure as code
CN114039919A (zh) 流量调度方法、介质、装置和计算设备
US20150356017A1 (en) Predictive cache apparatus and method of cache prediction
CN116303320A (zh) 基于日志文件的实时任务管理方法、装置、设备及介质
CN109150927A (zh) 用于文件存储系统的文件下发方法和装置
CN111190858B (zh) 软件信息存储方法、装置、设备和存储介质
CN114090911A (zh) 界面处理方法、装置、计算机设备及计算机可读存储介质
US9465876B2 (en) Managing content available for content prediction
JP6339249B2 (ja) コンテンツサービスで通知時間を個人化する方法およびシステム
CN111782834A (zh) 图像检索的方法、装置、设备及计算机可读存储介质
CN110716946A (zh) 特征规则匹配库的更新方法、装置、存储介质及电子设备
KR102011220B1 (ko) 심층 신경망 관리 방법 및 장치
CN110750205B (zh) 应用的启动方法和装置
CN108536362B (zh) 用于识别操作的方法、装置及服务器
CN114461845A (zh) 信息查询方法、装置、介质和计算设备
CN118069148A (zh) 代码处理方法、装置、电子设备及存储介质
CN106909559B (zh) 堆栈日志处理方法及装置
KR20200022577A (ko) 복수의 음악 파일들을 관리하는 장치 및 방법
CN113051121A (zh) 日志信息检索方法、装置、电子设备和介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: American California

Patentee after: Google limited liability company

Address before: American California

Patentee before: Google Inc.