CN117321581A - 用于加速sql查询的确定性分布式高速缓存的技术 - Google Patents

用于加速sql查询的确定性分布式高速缓存的技术 Download PDF

Info

Publication number
CN117321581A
CN117321581A CN202280033210.3A CN202280033210A CN117321581A CN 117321581 A CN117321581 A CN 117321581A CN 202280033210 A CN202280033210 A CN 202280033210A CN 117321581 A CN117321581 A CN 117321581A
Authority
CN
China
Prior art keywords
data
nodes
cache
worker node
node
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
CN202280033210.3A
Other languages
English (en)
Inventor
D·卡瓦利
A·马尔卡德
S·查拉伯蒂
H·R·布塔尼
V·巴斯卡尔
S·阿基纳佩利
D·达斯
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.)
Oracle International Corp
Original Assignee
Oracle International Corp
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 Oracle International Corp filed Critical Oracle International Corp
Publication of CN117321581A publication Critical patent/CN117321581A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24539Query rewriting; Transformation using cached or materialised query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Fuzzy Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

公开了用于提供改进的分布式高速缓存的技术。分布式计算系统能够用包括多个工作者节点的集群来实现,所述多个工作者节点被配置为托管用于处理与查询相关的数据的一个或多个执行器。工作者节点能够托管执行器可访问的高速缓存。数据能够被处理为多个数据片段。工作者节点能够被均匀地指派定义整数令牌值的范围的多个令牌边界。散列算法能够被用于计算用于与查询相关联的每个数据片段的令牌。任务能够优先在执行器上启动,使得用于处理具有与优选执行器相关联的令牌边界内的令牌的数据片段的任务。能够指示执行器检查相关联的高速缓存以识别离群数据片段并通知集群中的其它节点。

Description

用于加速SQL查询的确定性分布式高速缓存的技术
相关申请的交叉引用
本申请是2021年5月21日提交的标题为“TECHNIQUES FOR A DETERMINISTICDISTRIBUTED CACHE TO ACCELERATE SQL QUERIES”的印度临时专利申请No.202141022725的非临时申请并要求其优先权和权益,该申请的全部内容出于所有目的通过引用并入本文。
技术领域
本公开涉及云计算数据分析。更具体而言,本公开针对在计算集群内维护数据的分布式高速缓存并且在集群内执行与高速缓存的数据的位置对应的计算任务。
背景技术
基于云的服务提供用于由任何数量的租户处理大量数据的解决方案。基于云的数据处理服务可以由分布式计算系统实现,该分布式计算系统包括合适数量的包含用于执行处置用户请求的操作的节点的计算集群。高性能数据分析服务可以基于来自用户的交互式、近实时查询来处理整个集群中的分布式数据,但依赖于从全局存储装置中缓慢检索数据片段。需要集群节点处数据片段的改进的高速缓存,以提高用于交互式查询的数据处理的速度和效率。
发明内容
本公开的实施例涉及在云计算环境中提供高速缓存。更具体而言,一些实施例提供了实现分布式计算环境中跨节点一致的分布式高速缓存的方法和系统。可以部分地利用一致散列技术来提供高速缓存,该一致散列技术允许在分布式计算环境中配置多个节点,每个节点具有相关联的高速缓存。在节点上执行的一个或多个任务可以共享关联的高速缓存,但具有存储在高速缓存中的唯一数据片段的所有权。所有权可以基于一致散列技术,该一致散列技术计算与由分布式计算系统处理的查询相关联的每个数据片段的令牌。针对每个数据片段的任务、节点与令牌之间的对应关系可以允许将特定节点识别为执行任务的优选节点,如由查询优化器确定的。
一个实施例针对一种由提供分析数据处理服务的分布式计算系统执行的方法。该方法可以包括实现包括多个节点的集群。分布式计算系统可以维护集群的状态,其中集群状态包括与多个节点均匀地相关联的多个令牌边界。维护集群状态可以包括存储一个或多个执行器到多个节点的映射,以及基于该映射将多个令牌边界指派给在多个节点上执行的一个或多个执行器。该方法还包括由多个节点中的驱动节点接收要执行的查询。基于该查询,可以识别或确定与该查询对应的一个或多个数据片段的集合。可以使用散列算法来计算与一个或多个数据片段的集合对应的令牌的集合以确定唯一地识别一个或多个数据片段的散列值。该方法还包括在多个节点中的第一工作者节点上执行的第一执行器上启动处理来自一个或多个数据片段的集合中的第一数据片段的第一任务,第一工作者节点是至少部分地基于令牌的集合中与与第一工作者节点相关联的第一对令牌边界对应的第一令牌来选择的。最终,第一工作者节点可以获得第一任务要处理的数据片段。数据片段可以存在于与第一工作者节点相关联的高速缓存中,或者可以存在于数据存储库、数据库、对象存储装置或远离该节点的其它储存库中。
根据某些实施例,分布式计算系统可以接收集群已经改变的指示。例如,节点可以由于硬件或软件故障而变得无法操作。该方法可以包括通过更新多个令牌边界并将更新后的令牌边界均匀指派给在分布式计算系统中执行的一个或多个执行器来维护集群状态。
根据一些其它实施例,该方法可以包括获得存在于与第二工作者节点相关联的第二高速缓存中的第一数据片段。在这些实施例中,第一执行器可以确定第一数据片段不存在于与第一工作者节点相关联的第一高速缓存中。第一执行器可以向多个节点中的一个或多个相邻节点传输请求。在相邻节点上执行的执行器可以基于请求检查与每个相邻节点相关联的高速缓存。在一个或多个相邻节点中的第二工作者节点上执行的第二执行器可以确定第一数据片段存在于第二高速缓存中、将该数据片段放置在块管理器或被配置为处置分布式计算系统中的节点之间的数据传送的其它模块中,然后将第一数据片段的身份传输到做出请求的第一执行器。然后,第一工作者节点可以将数据片段从第二工作者节点复制到与第一工作者节点相关联的第一高速缓存。
在一些实施例中,该方法可以包括使用散列算法来计算多个令牌边界。计算的输出可以是根据来自与接收到的查询相关联的每个数据片段的识别信息(例如,数据片段的文件名)计算为散列的整数值。用于每个数据片段的散列值可以是与那个数据片段对应的令牌。多个令牌边界可以包括分割(partition)可能的整数令牌值的范围的多个整数值。因此,每对令牌边界定义了位于该对令牌边界的值之间的连续整数值的范围。
在一些其它实施例中,该方法可以包括用于稳定分布式计算系统中的分布式高速缓存的操作。该方法可以包括向第一工作者节点传输整理(house keeping)请求,提示第一执行器确定存在于与第一工作者节点相关联的第一高速缓存中的一个或多个离群数据片段。高速缓存内的离群数据片段部分地由与该片段相关联的令牌是否落入指派给第一执行器的令牌边界内来确定。然后,第一执行器可以将离群数据片段的标识符传输到所有其它节点。第二工作者节点然后可以将离群数据片段中的一个或多个从第一工作者节点处的第一高速缓存复制到第二工作者节点处的第二高速缓存。
在还有其它实施例中,该方法可以包括从分布式高速缓存中移除数据片段以保留空间和其它资源的操作。该方法可以包括向第一工作者节点传输整理请求,提示第一执行器确定存在于第一高速缓存中的有效数据片段的集合和一个或多个无效数据片段。可以从第一高速缓存逐出一个或多个无效数据片段。该方法还可以包括确定与第一工作者节点相关联的当前存储可用性;如果当前存储可用性下降到阈值以下,那么第一执行器可以基于片段温度的集合来确定存在于第一高速缓存中的一个或多个目标数据片段。然后可以从高速缓存中逐出一个或多个目标数据片段。
另一个实施例针对一种分布式计算系统,该系统包括一个或多个处理器和一个或多个存储计算机可执行指令的存储器,当利用一个或多个处理器执行这些计算机可执行指令时,使得分布式计算系统执行包括多个节点的集群。分布式计算系统可以维护集群的状态,其中集群状态包括与多个节点均匀地相关联的多个令牌边界。维护集群状态可以包括存储一个或多个执行器到多个节点的映射,以及基于该映射将多个令牌边界指派给在多个节点上执行的一个或多个执行器。指令还可以使得分布式计算系统由多个节点中的驱动节点接收要执行的查询。基于该查询,可以识别或确定与该查询对应的一个或多个数据片段的集合。可以使用散列算法来计算与一个或多个数据片段的集合对应的令牌的集合以确定唯一地识别一个或多个数据片段的散列值。指令还可以使得分布式计算系统在多个节点中的第一工作者节点上执行的第一执行器上启动处理来自一个或多个数据片段的集合中的第一数据片段的第一任务,第一工作者节点是至少部分地基于令牌的集合中与与第一工作者节点相关联的第一对令牌边界对应的第一令牌来选择的。最终,第一工作者节点可以获得第一任务要处理的数据片段。数据片段可以存在于与第一工作者节点相关联的高速缓存中,或者可以存在于数据存储库、数据库、对象存储装置或远离该节点的其它储存库中。
根据某些实施例,分布式计算系统可以接收集群已经改变的指示。例如,节点可以由于硬件或软件故障而变得无法操作。指令还可以使分布式计算系统通过更新多个令牌边界并将更新后的令牌边界均匀指派给在分布式计算系统中执行的一个或多个执行器来维护集群状态。
根据一些其它实施例,指令还可以使分布式计算系统获得存在于与第二工作者节点相关联的第二高速缓存中的第一数据片段。在这些实施例中,第一执行器可以确定第一数据片段不存在于与第一工作者节点相关联的第一高速缓存中。第一执行器可以向多个节点中的一个或多个相邻节点传输请求。在相邻节点上执行的执行器可以基于请求检查与每个相邻节点相关联的高速缓存。在一个或多个相邻节点中的第二工作者节点上执行的第二执行器可以确定第一数据片段存在于第二高速缓存中、将该数据片段放置在块管理器或被配置为处置分布式计算系统中的节点之间的数据传送的其它模块中,然后将第一数据片段的身份传输到做出请求的第一执行器。然后,第一工作者节点可以将数据片段从第二工作者节点复制到与第一工作者节点相关联的第一高速缓存。
另一个实施例针对一种存储计算机可执行指令的非暂态计算机可读介质,计算机可执行指令在由一个或多个处理器执行时,使计算机系统执行包括多个节点的集群;维护集群的状态,其中集群状态包括与多个节点均匀地相关联的多个令牌边界;由多个节点中的驱动节点接收要执行的查询;基于该查询,确定与该查询对应的一个或多个数据片段的集合;使用散列算法来计算与一个或多个数据片段的集合对应的令牌的集合以确定唯一地识别一个或多个数据片段的散列值;在多个节点中的第一工作者节点上执行的第一执行器上启动处理来自一个或多个数据片段的集合中的第一数据片段的第一任务,第一工作者节点是至少部分地基于令牌的集合中与与第一工作者节点相关联的第一对令牌边界对应的第一令牌来选择的;以及获得第一任务要处理的数据片段。数据片段可以存在于与第一工作者节点相关联的高速缓存中,或者可以存在于数据存储库、数据库、对象存储装置或远离该节点的其它储存库中。维护集群状态可以包括存储一个或多个执行器到多个节点的映射,以及基于该映射将多个令牌边界指派给在多个节点上执行的一个或多个执行器。
根据某些实施例,分布式计算系统可以接收集群已经改变的指示。例如,节点可以由于硬件或软件故障而变得无法操作。指令还可以使计算机系统通过更新多个令牌边界并将更新后的令牌边界均匀指派给在分布式计算系统中执行的一个或多个执行器来维护集群状态。
根据一些其它实施例,指令还可以使计算机系统获得存在于与第二工作者节点相关联的第二高速缓存中的第一数据片段。在这些实施例中,第一执行器可以确定第一数据片段不存在于与第一工作者节点相关联的第一高速缓存中。第一执行器可以向多个节点中的一个或多个相邻节点传输请求。在相邻节点上执行的执行器可以基于请求检查与每个相邻节点相关联的高速缓存。在一个或多个相邻节点中的第二工作者节点上执行的第二执行器可以确定第一数据片段存在于第二高速缓存中、将该数据片段放置在块管理器或被配置为处置分布式计算系统中的节点之间的数据传送的其它模块中,然后将第一数据片段的身份传输到做出请求的第一执行器。然后,第一工作者节点可以将数据片段从第二工作者节点复制到与第一工作者节点相关联的第一高速缓存。
附图说明
图1描绘了根据一些实施例的云计算环境中的分布式计算系统,该云计算环境包括从对象存储系统检索到的数据片段的分布式高速缓存。
图2图示了根据一些实施例的实现确定性高速缓存技术的分布式计算系统中的计算节点的集群。
图3A是根据一些实施例的示出令牌边界到集群内的节点的示例映射的代码的片段。
图3B是根据一些实施例的示出令牌边界到集群内的更新后的节点集的另一个示例映射的另一个代码的片段。
图4是根据一些实施例的用于处理具有确定性高速缓存的集群上的查询的示例过程的简化流程图。
图5是根据一些实施例的用于当集群状态改变时稳定集群内的确定性高速缓存的示例过程的另一个简化流程图。
图6是用于根据定时器过程清理确定性高速缓存的示例过程的又一个简化流程图。
图7是图示根据至少一个实施例的用于将云基础设施实现为服务系统的一种模式的框图。
图8是图示根据至少一个实施例的用于将云基础设施实现为服务系统的另一种模式的框图。
图9是图示根据至少一个实施例的用于将云基础设施实现为服务系统的另一种模式的框图。
图10是图示根据至少一个实施例的用于将云基础设施实现为服务系统的另一种模式的框图。
图11是图示根据至少一个实施例的示例计算机系统的框图。
具体实施方式
在下面的描述中,出于解释的目的,阐述了具体细节以便提供对某些实施例的透彻理解。但是,显然可以在没有这些具体细节的情况下实践各种实施例。附图和描述并非旨在是限制性的。“示例性”一词在本文中的意思是“用作示例、实例或说明”。本文描述为“示例性”的任何实施例或设计不一定被解释为比其它实施例或设计优选或有利。
分布式计算系统对于数据分析已经变得越来越普遍,具有提供用于处理大量数据的快速、可靠且可扩展的解决方案的能力。在云计算环境中提供分布式计算系统将这些数据处理能力赋予云计算环境的多个不同客户(例如,租户)。分布式计算领域中的最新发展,包括稳健的查询优化,允许近实时地处理大型数据集上的交互式查询,请求用户在用户界面上交互式地启动查询并期待结果。为了确保独立的可扩展性,在云计算环境中数据存储与计算资源解耦。当从存储装置中检索数据以进行处理时,这种解耦会导致性能不佳。本文公开的技术针对用于在分布式计算系统内提供确定性分布式高速缓存以提高分析数据处理的性能的方法、系统和计算机可读存储介质。
分布式计算系统可以包括连接的节点(例如,计算机、服务器、虚拟机等)的计算集群,这些节点以协调的方式一起工作以由任何合适数量的租户处置各种请求(例如,在维护数据库、查询等的系统中存储和检索数据)。如本文所使用的,“计算节点”(也称为“工作者节点”和/或简称为“节点”)可以包括服务器、计算设备、虚拟机或被配置为作为计算集群的一部分执行操作的任何合适的物理或许你计算资源。例如,计算集群可以包括一个或多个主节点(本文中也称为“驱动节点”)和一个或多个工作者节点。在一些实施例中,驱动节点可以执行与与一个或多个工作者节点对应的任务指派、负载平衡、节点供应、节点移除相关的任何合适操作,或者与管理计算集群对应的任何合适操作。工作者节点可以被配置为执行与由一个或多个驱动节点指派给工作者节点的任务对应的操作。例如,工作者节点可以执行与数据库相关联的数据存储和/或数据检索任务,作为由驱动节点指派给工作者节点的任务的一部分。
在提供分析数据处理服务(例如,在线分析处理(OLAP)服务)的分布式计算系统内,数据可以存储在对象存储数据存储库、数据库或类似的“深”或“离线”存储装置中。通常,对象存储系统支持对数据的不频繁访问并包括各种非易失性形式的存储器,这会给从对象存储装置读取数据和/或向对象存储装置写入数据的操作带来时延。数据可以被存储为以多维方式表示数据的较大数据结构的片段。数据片段可以是包括字典的压缩文件。数据片段可以表示由数据处理服务以原子方式处置和处理的数据的最小单元。为了执行查询,可以从对象存储装置中检索数据片段并将其存储在本地文件系统或与分布式计算系统的一个或多个节点相关联的其它存储器处。数据片段的本地副本可以构成分布式计算系统内的分布式高速缓存。因为系统中的每个节点可以具有存储数据片段的不同集合的高速缓存,所以本公开的技术提供了用于数据片段的一致高速缓存、响应于集群的改变而稳定高速缓存以及复制品的适当处置的技术,以及其它特征。
在一些实施例中,驱动模块(例如,Apache Thrift服务器)可以在分布式计算系统内的集群的驱动节点或主节点上操作。驱动模块可以将用户查询(例如,SQL查询)转换成称为任务的更小执行单元。任务可以被配置为由在集群中的一个或多个工作者节点上执行的一个或多个执行过程(也称为“执行器”)执行。每个任务可以与执行器对一个数据片段的处理对应。驱动模块可以通过尤其是在优选工作者节点处启动任务来优化查询的执行,优选工作者节点的执行器可以“拥有”(例如,具有存储高速缓存的副本的相关联的高速缓存)任务与之对应的数据片段。换句话说,集群内先前的查询执行(例如,交互式会话中用户的先前查询)可以导致用特定工作者节点高速缓存的特定数据片段。在优选工作者节点处启动任务可以导致从相关联的高速缓存检索的数据片段。
在一些实施例中,驱动节点(经由驱动模块)可以将令牌边界的集合指派给集群中的一个或多个工作者节点。令牌边界可以表示整数值的集合的分区,该整数值表示令牌拆分的集合。例如,整数值可以是从0到231-1的整数(即,32位有符号整数的尺寸)。令牌边界可以至少部分地基于集群的状态来确定,包括工作者节点的数量和被配置为在工作者节点上操作的执行器的数量。例如,对于具有三个工作者节点(每个节点托管两个执行器)的集群,令牌边界可以将整数值的集合分割成令牌拆分的六个连续子集。驱动节点可以根据为每个工作者节点配置的执行器的数量将令牌边界指派给工作者节点。如果集群的状态改变(例如,添加或移除节点),那么驱动节点可以根据集群状态的改变确定更新后的令牌边界,并将更新后的令牌边界指派给工作者节点。在一些其它实施例中,驱动节点可以接收工作者节点已发生故障的指示并将先前指派给该工作者节点的令牌边界指派给集群中剩余的一个或多个工作者节点。与当节点发生故障时可以使用类似环的结构将令牌拆分指派给环中的下一个节点的常规一致散列技术不同,本公开的技术可以将令牌边界均匀地分发给工作者节点并且可以尝试在集群的整个生命周期中维持均匀的分布。
为了调度集群的节点内的任务,在一些实施例中,驱动节点可以响应于查询而计算用于要处理的数据片段的令牌。令牌可以是基于唯一的片段键或片段标识符(例如,文件名等)计算的散列值。通过查找指派的令牌边界的范围内的值,可以将散列值映射到特定的工作者节点。对应的工作者节点可以是针对任务的优选节点,使得负责启动任务的调度器过程可以优先将任务放置在优选节点上。处理任务的执行器然后可以从与工作者节点相关联的高速缓存检索数据片段,或者如果数据片段不存在于高速缓存中,那么从另一个节点或从对象存储装置检索数据片段。一旦数据片段位于优选工作者节点的高速缓存中,就可以在优选工作者节点上启动处理该数据片段的后续任务,并且该数据片段的高速缓存命中的可能性更高。
根据几个实施例,可以使用各种整理技术一致地维护与集群内的一个或多个工作者节点相关联的高速缓存。整理方法可以包括用于更新高速缓存中的一个或多个的主动和被动技术。响应于集群状态的任何改变(例如,节点的添加或移除、节点故障、执行器的添加或移除等),集群内的驱动节点可以向集群内的所有执行器发送扫描与托管该执行器的工作者节点相关联的高速缓存的指令。由于当集群状态改变时驱动节点可以将更新后的令牌边界指派给工作者节点,因此存储在高速缓存中的数据片段可以与不同的工作者节点对应。响应于整理请求,执行器识别这些离群数据片段,将它们传递到块管理器或被配置为在工作者节点之间传送数据的其它过程,并将离群数据片段的标识符传输到集群中的所有其它执行器。然后,执行器可以检索离群数据片段以存储在本地高速缓存中。
在一些其它实施例中,整理方法可以包括基于定时器发生的操作。随着时间的推移,高速缓存的数据片段可以变得无效,因为对对象存储装置中的数据片段的修改被提交到对象存储装置。此外,指派给每个工作者节点的存储器资源可以是有限的。基于定时器,驱动节点可以向集群中的执行器发送指令,尤其是从其高速缓存中逐出无效数据片段、传送和逐出离群数据片段以及逐出不常从高速缓存访问的数据片段以便保留高速缓存中的空间可用性的操作。
维护确定性分布式高速缓存提供了优于常规技术的许多优点。如上面简要提到的,典型的一致散列技术在节点发生故障的情况下可能具有差的负载平衡。映射到故障节点的令牌可以被重新映射到单个节点,而不评估单个节点上的当前负载。本文描述的技术尝试响应于集群状态的改变而在集群中的所有执行器之间维持令牌的均匀分布。以这种方式,通过在节点丢失时不使单个节点过载来保持查询执行速度。将令牌边界指派给工作者节点以创建用于执行任务的优选节点会限制集群中高速缓存的数据片段的重复,因为节点优选项可以帮助在优选节点上而不是在集群中可以要求从优选节点的高速缓存或从对象存储装置复制数据片段的其它节点上启动对相同数据片段的重复任务。此外,集群中的执行器可以与其它执行器通信,以在从对象存储装置检索数据片段之前检查相邻节点是否高速缓存了数据片段,从而通过减少从深存储装置检索的次数来提高查询执行的速度和效率。
图1描绘了根据一些实施例的云计算环境100中的分布式计算系统110,该云计算环境包括从对象存储系统检索到的数据片段的分布式高速缓存。分布式计算系统110可以由执行计算机可读指令(例如,代码、程序)以实现分布式计算系统的一个或多个计算系统来实现。如图1中所描绘的,分布式计算系统110包括各种系统,包括负载平衡器112、网关114(例如,多租户网关)、应用编程接口(API)服务器116,以及一个或多个计算集群122。由图1中所示的系统使用或生成的数据或信息的部分可以存储在对象存储系统156上。图1中描绘的系统可以使用由计算系统的一个或多个处理单元(例如,处理器、核心)执行的软件(例如,代码、指令、程序)、硬件或其组合来实现。软件可以存储在非暂态存储介质上(例如,存储器设备上)。
分布式计算系统110可以以各种不同的配置来实现。在图1中所示的实施例中,分布式计算系统110可以在云提供商网络的一个或多个服务器上实现,并且其数据处理和数据分析服务可以在订阅的基础上提供给云服务的订户。图1中描绘的包括分布式计算系统110的计算环境100仅仅是示例并且无意于不适当地限制要求保护的实施例的范围。本领域普通技术人员将认识到许多可能的变化、替代和修改。例如,在一些实施方式中,分布式计算系统110可以使用比图1中所示的系统更多或更少的系统来实现,可以组合两个或更多个系统,或者可以具有系统的不同配置或布置。
在一些实施例中,计算集群(例如,集群122)可以表示用于为分布式计算系统110的租户或客户处理和分析大量数据的分布式计算引擎。不同的计算集群可以与租户相关联。例如,在图1中所示的实施例中,(一个或多个)计算集群122与分布式计算系统的租户120相关联。一个或多个不同的计算集群可以与附加租户(例如租户118、119)相关联。集群可以被配置为利用任何合适数量的计算节点以协调的方式执行操作。如前所述,“计算节点”(在本文中也称为“节点”)可以包括服务器、计算设备、虚拟机或被配置为执行作为计算集群的一部分的操作的任何合适的物理或虚拟计算资源。举例来说,集群122可以包括多个节点,包括驱动节点124和一个或多个工作器节点128,两者都是计算节点的示例。在一些实施例中,驱动节点124执行与与工作者节点对应的任务指派相关的任何合适操作,诸如负载平衡、节点供应、节点移除,或与管理集群122对应的任何合适操作。一个或多个工作者节点128被配置为执行与由驱动节点124指派给(一个或多个)工作者节点128的任务对应的操作。作为非限制性示例,(一个或多个)工作者节点128可以在向(一个或多个)工作者节点128指派特定存储或检索任务的驱动节点124的命令下执行与存储系统/数据库相关联的数据存储和/或数据检索任务。
分配给分布式计算系统的租户的资源是从以分层方式布置的多个基于云的资源中选择的。例如,如图1中所示,资源可以是云基础设施服务140的池。云基础设施服务140可以包括键-值数据库即服务(KaaS)142、工作流即服务(WFaaS)144、Kubernetes引擎(KE)146、身份和访问管理(IAM)服务148、虚拟云网络(VCN))150,以及数据目录152。
根据一些实施例,计算集群(例如,集群122)中的驱动节点(例如,驱动节点124)可以被配置为执行驱动程序(也称为驱动模块、驱动过程,或者简称为驱动器,即,运行构建在计算集群上的应用的过程)并且可以执行创建应用的上下文的操作。“应用”可以指完整的、可执行的驱动程序,其作为独立过程运行并且由在驱动节点124中执行的驱动程序中的应用的上下文协调。应用的上下文可以连接到集群管理器126,集群管理器126将系统资源分配给集群中的所有节点。集群122中的每个工作者节点(例如,(一个或多个)工作者节点128)可以由一个或多个执行器管理,该执行器可以是在(一个或多个)工作者节点128上启动以执行与指派给节点的任务对应的操作的过程(执行引擎)。应用代码从驱动程序被发送到执行器,并且执行器指定上下文和要运行的各种任务。执行器与驱动程序来回通信以进行数据共享或交互。执行器可以附加地执行与管理计算以及节点上数据的存储和高速缓存相关的操作。在特定实施方式中,计算集群可以使用分布式计算引擎(例如,Apache Spark)来实现,并且计算集群内的集群管理器126可以使用容器编排平台(诸如Kubernetes)或另一个集群管理解决方案(诸如Mesos或YARN)来实现。
在一些实施例中,由图1中所示的计算集群使用或生成的数据或信息的部分可以存储在分布式计算系统110的一个或多个存储系统上。在图1中所描绘的实施例中,存储系统包括对象存储系统156。对象存储系统156可以表示用于存储由与分布式计算系统110的不同租户相关联的不同计算集群使用、分析和处理的数据的深存储或离线存储系统。举例来说,对象存储系统156可以表示一种类型的存储系统,其使用基于对象的存储装置来通过将数据作为不同的单元(称为对象)进行管理和操纵来存储数据。对象存储系统156可以被用于数据的离线存储和/或归档(例如,用于备份或长期存储,不频繁访问数据)。
在特定实施例中,由计算集群处理的数据可以作为“数据立方体”被表示并存储在对象存储系统中。“数据立方体”可以指可以被用于沿着一些感兴趣的测量(诸如二维、三维或更高维表示)来表示数据的数据结构。数据立方体可以存储大量数据,同时还为用户提供对任何数据点的可搜索访问,并且可以被查询以提供实时结果。在某些示例中,在运行时,计算集群可以将数据立方体索引部分或全部地作为一个或多个数据片段高速缓存在构成计算集群的计算节点的高速缓存存储器(例如,高速缓存130)中或将片段存储在与计算节点相关联的附加辅助存储装置(例如,随机存取存储器(RAM)、固态驱动器(SSD)或硬盘驱动器(HDD))。如本文所使用的,“数据片段”可以指可以被过滤和分析以向分布式计算系统110的客户/租户提供详细结果的数据立方体的单独维度。
在一些实施例中,分布式计算系统110可以被配置为确定数据片段在组成集群的各个计算节点上的放置。当计算集群的节点必须读取特定数据片段时,将数据片段放置在集群中的特定计算节点上使得能够更快地检索数据片段。分布式计算系统110可以使用各种方法来确定数据片段在组成集群的各个计算节点上的放置。例如,在本文描述的方法中,分布式计算系统110可以利用特定散列策略来识别可以处理数据片段的特定集合的节点。当分布式计算系统110的用户(例如,(一个或多个)客户102)提交查询时,集群(例如,集群122)内的驱动节点(例如,驱动节点124)可以被配置为识别(例如,使用一致散列策略)存储可以被用于执行查询的数据片段的工作者节点(例如,工作者节点128),然后将查询传输到工作者节点以供执行。
在某些实施例中,用户(例如,客户102)可以经由计算设备104与分布式计算系统110交互,计算设备104可能经由公共网络108(例如,互联网)通信地耦合到分布式计算系统110。计算设备104可以是各种类型,包括但不限于移动电话、平板电脑、台式计算机等。用户可以使用由计算设备执行的应用的控制台用户接口(UI)(其可以是图形用户界面(GUI))或者经由由分布式计算系统110提供的API操作与云计算系统交互。例如,用户可以与分布式计算系统110交互以创建一个或多个计算集群、针对存储在存储系统中的预先存在的数据运行交互式查询,并且检索作为查询处理的结果的结果。
作为示例,与分布式计算系统110的租户120相关联的用户可以通过向分布式计算系统110传输创建一个或多个集群(包括集群122)的请求来与分布式计算系统110交互。创建集群请求可以由分布式计算系统110中的负载平衡器112接收,负载平衡器112可以将该请求传输到分布式计算系统内的多租户代理服务,例如网关114。网关114可以负责认证/授权用户的请求并将该请求路由到API服务器116,API服务器116可以被配置为执行用于创建计算集群的操作。在某些示例中,网关114可以表示共享的多租户超文本传输协议(HTTP)代理服务,其授权用户并将用户的请求提交给API服务器116以使得能够为租户创建计算集群。在某些示例中,并且如之前所描述的,集群的创建可以涉及创建包括驱动节点和工作者节点的集合的节点池。可以在用于租户的专用子网下创建一个或多个集群。因此,分布式计算系统110包括用于在属于不同租户(例如,租户118、119)的计算集群之间提供隔离的能力。
为了加速集群内的查询处理和执行,分布式计算系统110内的集群122可以包括将查询的计算所需的数据高速缓存在集群的不同节点中的存储器中(本文也称为“高速缓存存储器”或“高速缓存”)。例如,高速缓存(例如,高速缓存130)可以表示少量的动态随机存取存储器(DRAM),其非常快且昂贵,位于计算节点的中央处理单元附近。在某些实施例中,集群内的节点被提供有改进的能力,以通过从与节点相关联的高速缓存检索高速缓存的数据(包括例如高速缓存的数据片段)来执行集群内的数据的高效处理和分析。特别地,如果集群中的工作者节点被指派要执行的任务并且在高速缓存中没有相关联的数据片段,那么工作者节点可以确定集群内在高速缓存中具有该数据片段的相邻节点并从相邻节点而不是从对象存储装置156中检索数据片段。图2中详细描述了由节点执行的检索和维护其相关联的高速缓存中的数据片段的操作的附加细节。
图2图示了根据一些实施例的实现确定性高速缓存技术的分布式计算系统200中的计算节点的集群202。集群202可以类似于上面参考图1描述的集群122。集群202可以包括多个节点,包括驱动节点204和工作器节点206、208。集群202内的节点可以托管被配置为执行与指派给节点的一个或多个任务对应的操作的任何合适数量的执行器(例如,执行引擎或执行过程)。如图2中所示,任务可以包括指派给执行器210-213的任务214-226。工作者节点206利用两个执行器210、211,而工作者节点208利用两个执行器212、213。根据各种实施例,具有更多或更少执行器的更多或更少节点是可能的。每个执行器可以附加地包括执行器存储器,其可以是与工作者节点相关联的高速缓存的一部分。例如,执行器210可以具有高速缓存228的一部分作为执行器存储器,而执行器211具有高速缓存228的第二部分作为执行器存储器。类似地,在工作者节点208上操作的执行器212、213可以利用高速缓存230。执行器210-213可以使用高速缓存存储器(例如,高速缓存存储器228、230)来存储在任务214-226中使用的数据片段。高速缓存228、230可以是提供给工作者节点206、208的更大存储器资源的一部分,以支持超出用于每个执行器的专用存储器资源的附加数据操作(例如,拆分和混洗数据)。
如前所述,在一些实施例中,驱动节点(例如,驱动节点204)可以被配置为执行驱动器232(也称为驱动程序、驱动模块、驱动过程,即,运行构建在计算集群上的应用的过程)并且可以执行创建应用的上下文的操作。该应用可以是分析数据处理应用,使得驱动器232可以包括用于优化查询250的查询优化器234(例如,Apache Spark Catalyst)。驱动器204可以包括集群管理器236,其向集群中的所有节点分配系统资源。集群管理器236可以类似于参考图1描述的集群管理器126。集群管理器236可以被配置为维护集群的状态。例如,集群状态可以包括但不限于工作者节点到执行器的映射以及令牌边界到工作者节点的映射。集群管理器236可以响应于集群状态已经改变的指示(例如,如果工作者节点发生故障)而更新集群状态。当在集群内供应附加执行器和/或工作者节点时,集群管理器236还可以更新集群状态。集群管理器236可以与外部集群服务(例如,Kubernetes服务(例如,图1的Kubernetes引擎146))通信以维护集群状态。
在一些实施例中,驱动器204还可以包括任务管理器238,其可以是用于在集群中的执行器上启动一个或多个任务(例如,任务214-226)的调度器。调度任务可以基于由查询优化器234提供的查询优化。可以基于本文描述的一致散列技术优先在执行器上启动任务,使得任务在具有包含任务所对应的数据片段的副本的高速缓存的工作者节点处启动。作为示例,响应于查询250,可以至少部分地基于识别出与任务214对应的数据片段具有位于指派给工作者节点206的令牌边界内的散列令牌值在工作者节点206上操作的执行器210处调度任务214。当执行器210获取数据片段时,该数据片段可能存在于本地高速缓存228中,导致比执行器210必须从对象存储装置256获取数据片段时更快的检索。
在一些实施例中,驱动器204可以包括高速缓存管理器240。高速缓存管理器240可以被配置为与在执行器210-213上操作的高速缓存管理器242-248通信。高速缓存管理器可以被配置为实现远程过程调用(RPC)端点以在高速缓存管理器之间传递请求。例如,在查询250的执行期间,高速缓存管理器246可以调用对在相邻工作者节点206上操作的执行器210、211的请求,以检查本地高速缓存228以识别执行器212上任务220或任务222所需的数据片段的存在。请求的调用可以至少部分地基于高速缓存管理器246确定用于数据片段的散列令牌值位于指派给工作者节点206的令牌边界内。响应于RPC请求,高速缓存管理器242可以在高速缓存228中定位数据片段,将数据片段放置在块管理器(例如,分布式计算系统内的块存储或节点间存储系统)中,并且将块ID返回到发出请求的高速缓存管理器246。执行器212然后可以从块管理器检索数据片段并将该数据片段复制到高速缓存230中。
在一些实施例中,高速缓存管理器240可以与高速缓存管理器242-248通信以对高速缓存228、230执行一个或多个整理操作。整理操作可以包括用于同步存储在高速缓存中的数据的主动操作。主动的整理管理操作可以响应于集群状态的改变(例如,如果在集群中添加或从中移除节点或执行器)而发生。此外,整理操作可以包括从本地高速缓存中移除无效数据并从高速缓存中逐出不常用的数据以保持高速缓存空间可用性并减少节点资源利用率的被动操作。下面参考图5和图6更全面地讨论整理操作的具体细节。
图3A和图3B示出了提供根据本文描述的实施例的一致散列技术的示例的代码片段。所示代码的特定语言、风格和语法不限制本公开。本领域技术人员将认识到其它语言和语法来实现所描述的功能。
图3A是根据一些实施例的示出令牌边界到集群内的节点的示例映射的代码的片段300。如所描绘的,该映射表示包括被识别为“host_0”、“host_1”和“host_2”的三个工作者节点的集群。工作者节点可以类似于本文描述的其它工作者节点,包括图2的工作者节点206、208。工作者节点被配置为托管两个执行器,集群中总共有六个执行器。在其它实施例中,集群可以具有一个、两个或多于三个托管任何合适数量的执行器的工作者节点。在那些实施例中,令牌边界的映射与图3A中所示的类似。
如前所述,令牌边界可以表示整数值的集合的分区,整数值表示令牌拆分的集合。例如,整数值可以是从0到231-1的整数(即,32位有符号整数的尺寸)。对于与图3A的映射对应的集群,令牌边界可以将整数值的集合分割为令牌拆分的六个连续子集。每个工作者节点都映射到“TokenBounds”的两个集合,与一对整数令牌边界之间的令牌拆分的范围对应。例如,host_1被映射到被识别为“TokenBounds(0,357913941)”的第一对令牌边界302和被识别为“TokenBounds(715827882,1073741823)”的第二对令牌边界304。虽然针对所描述的集群配置以特定整数值来描绘,但是其它值可以由本公开的其它实施例产生。
在一些实施例中,驱动节点(例如,驱动节点204的驱动器232)的驱动过程可以将令牌边界均匀指派给集群中的工作者节点。令牌边界的均匀指派可以平衡指派给每个工作者节点的令牌拆分的数量,使得每个工作者节点具有基于工作者节点所托管的执行器的数量指派给每个工作者节点的多个令牌边界。如图3A中所示,为三个工作者节点指派两对令牌边界,在工作者节点上配置的两个执行器中每一个有一对。
图3B是根据一些实施例的示出令牌边界到集群内的更新后的节点集的另一个示例映射的另一个代码的片段310。更新后的节点集可以是图3A中表示的节点的更新的结果。如所描绘的,示例映射现在与具有两个工作者节点(host_0和host_2)的集群对应。这个映射可以由于host_1节点出现故障而导致的。响应于集群状态的改变,先前指派给host_1的第一对令牌边界302可以由驱动节点重新指派给与host_0对应的工作者节点。类似地,先前指派给host_1的第二对令牌边界可以被重新指派给与host_0对应的工作者节点。结果是具有令牌拆分的均匀分布的两个工作者节点。
在一些实施例中,令牌边界响应于集群状态的改变而被更新。例如,如果与图3A中的host_1对应的工作者节点发生故障,那么驱动节点可以更新令牌边界以与具有四个执行器的集群对应。然后可以将更新后的令牌边界指派给集群中剩余的工作者节点。然后,令牌映射将具有四对令牌边界,各两对指派给剩余的两个工作者节点。类似地,如果将工作者节点和/或执行器添加到集群,那么可以更新令牌边界以与添加的执行器和工作者节点对应。
图4是根据一些实施例的用于处理具有确定性高速缓存的集群上的查询的示例过程400的简化流程图。该集群可以是分布式计算系统(包括本文描述的任何分布式计算系统)的集群,包括图2的集群202以及图1的集群122和分布式计算系统110。过程400被示为逻辑流程图,其每个操作表示可以以硬件、计算机指令或其组合实现的操作序列。在计算机指令的上下文中,操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,指令在由一个或多个处理器执行时执行所列举的操作。一般而言,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据结构等。描述操作的次序并不旨在被解释为限制,并且可以省略任何数量的所描述的操作或者以任何次序和/或并行组合以实现过程。
过程400(或本文描述的任何其它过程,或其变化和/或其组合)中的一些、任何或全部可以在配置有可执行指令的一个或多个计算机系统的控制下执行并且可以被实现作为通过硬件或其组合在一个或多个处理器上共同执行的代码(例如,可执行指令、一个或多个计算机程序,或一个或多个应用)。代码可以例如以包括可由一个或多个处理器执行的多个指令的计算机程序的形式存储在计算机可读存储介质上。计算机可读存储介质可以是非暂态的。
过程400开始于方框402,其中分布式计算系统(例如,分布式计算系统110)实现包括多个节点(例如,驱动节点204、工作者节点206、208)的集群(例如,集群122或集群202)。实现集群可以包括供应任何合适数量的计算设备(包括但不限于物理计算设备和/或在一个或多个物理计算设备上执行的虚拟机)作为集群的一部分,包括将合适的软件部署到计算设备上以支持计算设备作为集群的操作(例如,托管多个节点)。在方框404处,分布式计算系统维护集群的状态。集群的状态可以包括一个或多个执行器到多个节点的映射以及基于该映射向在多个节点上执行的一个或多个执行器指派多个令牌边界。维护集群的状态可以包括响应于集群状态的改变(例如,如果在集群内添加或移除节点或执行器)而更新映射。维护集群状态还可以包括更新多个令牌边界以及将更新后的令牌边界均匀指派给在分布式计算系统中执行的一个或多个执行器。
在方框406处,驱动节点可以接收要执行的查询。该查询可以是由与集群的租赁相关联的用户发送的查询(例如,查询250)。为了执行查询,驱动节点可以识别要由集群的工作者节点处理的一个或多个数据片段的集合。数据片段可以持久保存在深存储装置中,例如离线存储装置、对象存储装置或其它类似的存储系统。根据某些实施例,数据片段还可以存在于与集群中的工作者节点相关联的一个或多个高速缓存处。
在方框408处,驱动节点可以计算与一个或多个数据片段的集合对应的令牌的集合。每个数据片段可以具有唯一地识别该数据片段的对应令牌。可以使用散列算法来计算令牌,包括MurmurHash3或其它合适的散列算法。散列算法的输入可以是与数据片段相关联的识别信息,例如文件名。
在方框412处,驱动节点可以与任务管理器、调度器或在驱动节点处执行的其它类似过程结合,启动在第一工作者节点处执行的第一执行器上的第一任务。第一任务可以与对第一数据片段的操作对应,使得第一执行器可以检索第一数据片段、执行所请求的操作并完成任务。第一任务可以是构成查询执行的多个任务中的一个任务。可以至少部分地基于与与第一工作者节点相关联的第一对令牌边界对应的令牌集合中的第一令牌来选择第一工作者节点。例如,对第一数据片段的散列计算可以返回令牌的特定整数值。这个值可以落入由第一对令牌边界定义的整数值的范围内。
在方框414处,第一工作者节点可以检索第一数据片段。第一数据片段可以存在于与第一工作者节点相关联的高速缓存中。第一数据片段还可以存在于与集群中的第二工作者节点相关联的高速缓存处或者存在于数据存储库、数据库、对象存储装置、深存储装置或远离该节点的其它储存库中。从与第一工作者节点相关联的高速缓存检索第一数据片段可以包括第一执行器识别高速缓存中的第一数据片段并将其内容读取到主动存储器中。从与第二工作者节点相关联的高速缓存检索第一数据片段可以包括第一执行器向多个节点中的一个或多个相邻节点传输请求。在相邻节点上执行的执行器可以基于请求来检查与每个相邻节点关联的高速缓存。在一个或多个相邻节点的第二工作者节点上执行的第二执行器可以确定第一数据片段存在于第二高速缓存中,将该数据片段放置在块管理器中(与例如块存储或节点间存储系统相关联)或被配置为处置分布式计算系统中的节点之间的数据传送的其它模块,然后将第一数据片段的身份传输到做出请求的第一执行器。然后,第一工作者节点可以将数据片段从第二工作者节点复制到与第一工作者节点相关联的第一高速缓存。
图5是根据一些实施例的用于当集群状态改变时稳定集群内的确定性高速缓存的示例过程500的另一个简化流程图。该集群可以是分布式计算系统的集群,包括本文描述的任何分布式计算系统,包括图2的集群202以及图1的集群122和分布式计算系统110。
过程500可以开始于方框502,其中驱动节点(例如,驱动节点232)将整理请求传输到集群中的一个或多个工作器节点(例如,工作器节点206、208)。可以响应于集群状态的改变(例如,工作者节点或执行器的添加或移除)而生成并传输整理请求。当集群的状态改变时,新的配置可以影响集群内高速缓存的数据片段的位置。执行整理操作可以主动稳定高速缓存。
响应于整理请求,在方框504处,在工作者节点上操作的一个或多个执行器可以扫描与工作者节点相关联的高速缓存以查找数据片段。例如,在第一工作者节点处执行的第一执行器可以扫描与第一工作者节点相关联的高速缓存以识别数据片段。类似地,在第一工作者节点上执行的不同执行器也可以扫描与第一工作者节点相关联的高速缓存以识别数据片段。由于第一工作者节点上的高速缓存由第一执行器和不同的执行器共享,因此每个执行器可以扫描高速缓存中的所有数据片段以确定数据片段是否与已指派给执行器的令牌边界对对应。
在判定506处,执行器评估与被扫描的数据片段相关联的令牌是否落入指派给执行器的令牌边界内。例如,第一执行器可以被指派第一对令牌边界,其定义由执行器“拥有”的令牌值的范围。当扫描与第一工作者节点相关联的高速缓存时,第一执行器可以确定存在的数据片段的令牌是否与第一执行器的令牌边界中的值对应。执行器可以使用驱动节点在执行查询时使用的相同散列算法来计算令牌值。在一些实施例中,令牌值可以由驱动节点作为令牌的散列段密钥表的一部分被传递到执行器。如果数据片段令牌在执行器的令牌边界内,那么片段保留在高速缓存中。如果数据片段令牌不在执行器的令牌边界内,那么在方框510处,执行器将片段ID传输到集群中的所有其它执行器。
在方框512处,接收离群片段ID的执行器可以将离群片段从其它工作者节点复制到本地高速缓存。例如,第一执行器可以识别与第一工作者节点相关联的高速缓存中的一个或多个离群数据片段。基于集群的当前状态和令牌边界的当前指派,这些离群数据片段中的一个或多个可以由第二工作者节点处的第二执行器“拥有”。第二工作者节点可以将数据片段从第一工作者节点复制到与第二工作者节点相关联的高速缓存。以这种方式,数据片段可以根据集群的状态存在于预期的高速缓存中,并且可以在集群的状态改变之后稳定高速缓存。
图6是用于根据定时器过程清理确定性高速缓存的示例过程600的简化流程图。该集群可以是分布式计算系统的集群,包括本文描述的任何分布式计算系统,包括图2的集群202以及图1的集群122和分布式计算系统110。过程600可以表示补充上面关于图5描述的“主动”整理操作的“被动”整理操作。
在输入601处,驱动节点(例如,驱动节点232)可以从在驱动节点上实现的定时器过程接收定时器指示。定时器可以被配置为根据固定的时间表触发过程600的操作。在一些实施例中,定时器间隔可以根据集群参数或与集群相关的其它条件(例如,集群负载、集群状态等)而变化。响应于定时器,在方框602处,驱动节点可以将整理请求传输到集群中的一个或多个工作者节点(例如,工作者节点206、208)。整理请求可以通过“清理”分布式高速缓存以去除无效数据片段和不常访问的数据片段来减少集群中的资源使用。
响应于整理请求,在方框604处,在工作者节点上操作的一个或多个执行器可以扫描与工作者节点相关联的高速缓存以查找数据片段,类似于图5的方框504。在判定606处,一个或多个执行器评估高速缓存中的数据片段是否有效。在查询执行期间,数据片段可以被更新或以其它方式修改,使得高速缓存的数据片段不再表示对象存储装置中存储的当前数据。分布式高速缓存中不再与对象存储装置中的数据一致的数据片段是无效的,但可以保留在高速缓存中直到被移除。为了确定高速缓存的数据片段是否有效,一个或多个执行器可以为对象存储装置中的每个数据立方体构建有效的片段列表。基于有效片段列表,一个或多个执行器可以确定高速缓存的数据片段是否有效。如果数据片段有效,那么在方框608处将它们保持在高速缓存中。如果数据片段无效,那么在方框610处将它们从高速缓存中逐出(例如,删除)。
在判定612处,驱动节点可以确定可用高速缓存存储是否下降到阈值以下。在一些实施例中,可用存储降到阈值以下的确定可以由在节点上执行的一个或多个执行器或高速缓存管理器做出。在一些实施例中,阈值可以被配置为集群配置的一部分并且可以是例如高速缓存中的总配置空间的80%。如果可用高速缓存空间高于阈值,那么整理操作可以在端点614处结束。
如果可用高速缓存存储空间下降到阈值以下,那么过程600可以移至判定616。与关于图5描述的操作类似,在判定616处,一个或多个执行器可以评估与被扫描的数据片段相关联的令牌是否落入指派给执行器的令牌边界内。如果是这样,那么在方框618处,将片段保持在高速缓存中。如果不是,那么在方框620处,可以根据令牌边界的当前指派将离群片段复制到集群中的其它工作者节点。在方框622处,可以从本地高速缓存逐出异常数据片段。逐出可以发生在数据片段已经被复制到另一个工作者节点之后。
在判定624处,再次检查可用高速缓存存储空间以确定其是否低于阈值,类似于判定612。如果可用空间高于阈值,那么整理操作可以在端点626处结束。如果因为可用空间低于配置的阈值而导致高速缓存仍然具有空间限制,那么可以采用第三种技术来清理高速缓存。在方框628处,一个或多个执行器可以确定存储在分布式高速缓存中的数据片段的温度。如本文所使用的,“温度”是指对高速缓存中的数据片段的访问频率的测量,使得“热”数据片段随着时间的推移被集群所执行的各种查询频繁地访问。相比之下,“冷”数据片段驻留在高速缓存中且不经常访问。在一些实施例中,片段的温度可以被分类为“热”、“温和”或“冷”。可以通过计算数据片段的先前访问之间的间隔来确定温度。如果间隔减小(例如,最近读取更频繁),那么该片段的温度级别升级(例如,从冷到温或从温到热)。如果间隔增加(例如,最近读取频率降低),那么该片段的温度级别降级(例如,从热到温或从温到冷)。例如,该数据片段可以在10秒前在高速缓存中被第一次访问,在5秒前第二次访问,并且在2秒前第三次访问。这样,最后的访问间隔正在减少,因此该片段的温度可以升级(例如,从温到热)。
基于高速缓存中片段的温度,在方框630处,一个或多个执行器可以从高速缓存中逐出最冷的段。在一些实施例中,这可以意味着逐出具有“冷”温度的一个、一些或全部数据片段。在逐出最冷的数据片段之后,再次检查可用的高速缓存空间。重复逐出最冷数据片段的过程,直到可用高速缓存空间高于阈值。
在一些实施例中,可以维护数据片段的附加统计数据,包括但不限于高速缓存命中、高速缓存未命中、失效的次数、尺寸、平均访问间隔、复制因子,以及是否从对象存储装置或节点间存储装置检索到片段。除了用于确定从高速缓存中逐出哪些数据片段的温度之外,还可以使用数据片段统计值的其它组合。
示例基础设施即服务体系架构
如以上所指出的,基础设施即服务(IaaS)是一种特定类型的云计算。IaaS可以被配置为通过公共网络(例如,互联网)提供虚拟化计算资源。在IaaS模型中,云计算提供商可以托管基础设施组件(例如,服务器、存储设备、网络节点(例如,硬件)、部署软件、平台虚拟化(例如,管理程序层)等)。在一些情况下,IaaS提供商还可以提供各种服务来伴随这些基础设施组件(例如,计费、监视、记载、负载平衡和聚类等)。因此,由于这些服务可能是策略驱动的,因此IaaS用户可以能够实现策略来驱动负载平衡,以维持应用的可用性和性能。
在一些情况下,IaaS客户可以通过诸如互联网之类的广域网(WAN)访问资源和服务,并且可以使用云提供商的服务来安装应用栈的剩余元素。例如,用户可以登录到IaaS平台以创建虚拟机(VM)、在每个VM上安装操作系统(OS)、部署诸如数据库之类的中间件、为工作负载和备份创建存储桶,甚至将企业软件安装到那个VM中。然后,客户可以使用提供商的服务来执行各种功能,包括平衡网络流量、解决应用问题、监视性能、管理灾难恢复等。
在大多数情况下,云计算模型可以要求云提供商的参与。云提供商可以但不一定是专门提供(例如,供应、出租、销售)IaaS的第三方服务。实体也可能选择部署私有云,从而成为其自己的基础设施服务提供商。
在一些示例中,IaaS部署是将新应用或应用的新版本放置到准备好的应用服务器等上的处理。它还可以包括准备服务器(例如,安装库、守护进程等)的处理。这通常由云提供商管理,位于管理程序层之下(例如,服务器、存储装置、网络硬件和虚拟化)。因此,客户可以负责处理(OS)、中间件和/或应用部署(例如,在(例如,可以按需启动的)自助服务虚拟机等上)。
在一些示例中,IaaS供给可以指获取计算机或虚拟主机以供使用,甚至在它们上安装期望的库或服务。大多数情况下,部署不包括供给,并且供给可能期望被首先执行。
在一些情况下,IaaS供给存在两个不同的挑战。首先,在任何东西运行之前供给初始基础设施集存在最初的挑战。其次,一旦所有东西已被供给,就存在演进现有基础设施(例如,添加新服务、更改服务、移除服务等)的挑战。在一些情况下,可以通过启用以声明方式定义基础设施的配置来解决这两个挑战。换句话说,基础设施(例如,需要哪些组件以及它们如何交互)可以由一个或多个配置文件来定义。因此,基础设施的总体拓扑(例如,哪些资源依赖于哪些资源,以及它们如何协同工作)可以以声明的方式描述。在一些情况下,一旦定义了拓扑,就可以生成创建和/或管理配置文件中描述的不同组件的工作流。
在一些示例中,基础设施可以具有许多互连的元素。例如,可能存在一个或多个虚拟私有云(VPC)(例如,可配置和/或共享计算资源的潜在按需池),也称为核心网络。在一些示例中,还可以供给一个或多个入站/出站流量组规则以定义如何设置网络的入站/出站流量以及一个或多个虚拟机(VM)。也可以供给其它基础设施元素,诸如负载平衡器、数据库等。随着期望和/或添加越来越多的基础设施元素,基础设施可以逐步演进。
在一些情况下,可以采用连续部署技术来使得能够跨各种虚拟计算环境部署基础设施代码。此外,所描述的技术可以使得能够在这些环境内进行基础设施管理。在一些示例中,服务团队可以编写期望部署到一个或多个但通常是许多不同的生产环境(例如,跨各种不同的地理位置,有时跨越整个世界)的代码。但是,在一些示例中,可以期望首先设置将在其上部署代码的基础设施。在一些情况下,供给可以手动完成,可以利用供给工具供给资源,和/或一旦供给基础设施就可以利用部署工具部署代码。
图7是图示根据至少一个实施例的IaaS体系架构的示例模式的框图700。服务运营商702可以通信地耦合到可以包括虚拟云网络(VCN)706和安全主机子网708的安全主机租赁704。在一些示例中,服务运营商702可以使用一个或多个客户端计算设备,其可以是便携式手持设备(例如,蜂窝电话、/>计算平板、个人数字助理(PDA))或可穿戴设备(例如,Google/>头戴式显示器)、运行软件(诸如Microsoft Windows)和/或各种移动操作系统(诸如iOS、Windows Phone、Android、BlackBerry 8、Palm OS等),并且支持互联网、电子邮件、短消息服务(SMS)、/>或其它通信协议。可替代地,客户端计算设备可以是通用个人计算机,包括例如运行各种版本的Microsoft/>Apple/>和/或Linux操作系统的个人计算机和/或膝上型计算机。客户端计算设备可以是运行各种商业上可获得的/>或类UNIX操作系统,包括但不限于各种GNU/Linux操作系统(诸如例如Google Chrome OS)中的任何一种的工作站计算机。替代地或附加地,客户端计算设备可以是任何其它电子设备,诸如瘦客户端计算机、支持互联网的游戏系统(例如,具有或不具有/>手势输入设备的Microsoft Xbox游戏控制台),和/或能够通过可以访问VCN 706和/或互联网的网络进行通信的个人消息传递设备。
VCN 706可以包括本地对等网关(LPG)710,其可以经由包含在SSH VCN 712中的LPG 710通信地耦合到安全壳(SSH)VCN 712。SSH VCN 712可以包括SSH子网714,并且SSHVCN 712可以经由包含在控制平面VCN 716中的LPG 710通信地耦合到控制平面VCN 716。此外,SSH VCN 712可以经由LPG 710通信地耦合到数据平面VCN 718。控制平面VCN 716和数据平面VCN 718可以包含在可以由IaaS提供商拥有和/或操作的服务租赁719中。
控制平面VCN 716可以包括充当外围网络(例如,公司内部网和外部网络之间的公司网络的部分)的控制平面非军事区(DMZ)层720。基于DMZ的服务器可以承担有限责任并有助于控制漏洞。此外,DMZ层720可以包括一个或多个负载平衡器(LB)子网722、可以包括(一个或多个)应用子网726的控制平面应用层724、可以包括(一个或多个)数据库(DB)子网730(例如,(一个或多个)前端DB子网和/或(一个或多个)后端DB子网)的控制平面数据层728。包含在控制平面DMZ层720中的(一个或多个)LB子网722可以通信地耦合到包含在控制平面应用层724中的(一个或多个)应用子网726和可以包含在控制平面VCN 716中的互联网网关734,并且(一个或多个)应用子网726可以通信地耦合到包含在控制平面数据层728中的(一个或多个)DB子网730以及服务网关736和网络地址转换(NAT)网关738。控制平面VCN 716可以包括服务网关736和NAT网关738。
控制平面VCN 716可以包括数据平面镜像应用层740,其可以包括(一个或多个)应用子网726。包含在数据平面镜像应用层740中的(一个或多个)应用子网726可以包括可以执行计算实例744的虚拟网络接口控制器(VNIC)742。计算实例744可以将数据平面镜像应用层740的(一个或多个)应用子网726通信地耦合到可以包含在数据平面应用层746中的(一个或多个)应用子网726。
数据平面VCN 718可以包括数据平面应用层746、数据平面DMZ层748和数据平面数据层750。数据平面DMZ层748可以包括(一个或多个)LB子网722,其可以通信地耦合到数据平面应用层746的(一个或多个)应用子网726和数据平面VCN 718的互联网网关734。(一个或多个)应用子网726可以通信地耦合到数据平面VCN 718的服务网关736和数据平面VCN718的NAT网关738。数据平面数据层750还可以包括可以通信地耦合到数据平面应用层746的(一个或多个)应用子网726的(一个或多个)DB子网730。
控制平面VCN 716和数据平面VCN 718的互联网网关734可以通信地耦合到元数据管理服务752,元数据管理服务752可以通信地耦合到公共互联网754。公共互联网754可以通信地耦合到控制平面VCN 716和数据平面VCN 718的NAT网关738。控制平面VCN 716和数据平面VCN 718的服务网关736可以通信地耦合到云服务756。
在一些示例中,控制平面VCN 716或数据平面VCN 718的服务网关736可以对云服务756进行应用编程接口(API)调用,而无需通过公共互联网754。从服务网关736到云服务756的API调用可以是单向的:服务网关736可以对云服务756进行API调用,并且云服务756可以将请求的数据发送到服务网关736。但是,云服务756可以不发起对服务网关736的API调用。
在一些示例中,安全主机租赁704可以直接连接到服务租赁719,服务租赁719在其他情形下可以被隔离。安全主机子网708可以通过LPG 710与SSH子网714通信,LPG 710可以使得能够在在其他情形下隔离的系统上进行双向通信。将安全主机子网708连接到SSH子网714可以使安全主机子网708访问服务租赁719内的其它实体。
控制平面VCN 716可以允许服务租赁719的用户设置或以其它方式供给期望的资源。在控制平面VCN 716中供给的期望资源可以在数据平面VCN 718中部署或以其它方式使用。在一些示例中,控制平面VCN 716可以与数据平面VCN 718隔离,并且控制平面VCN 716的数据平面镜像应用层740可以经由VNIC 742与数据平面VCN 718的数据平面应用层746通信,VNIC 742可以包含在数据平面镜像应用层740和数据平面应用层746中。
在一些示例中,系统的用户或客户可以通过可以将请求传送到元数据管理服务752的公共互联网754来做出请求,例如创建、读取、更新或删除(CRUD)操作。元数据管理服务752可以通过互联网网关734将请求传送到控制平面VCN 716。请求可以被包含在控制平面DMZ层720中的(一个或多个)LB子网722接收。(一个或多个)LB子网722可以确定请求是有效的,并且响应于该确定,(一个或多个)LB子网722可以将请求传输到包含在控制平面应用层724中的(一个或多个)应用子网726。如果请求被验证并且需要对公共互联网754的调用,那么对公共互联网754的调用可以被传输到可以对公共互联网754进行调用的NAT网关738。请求可能期望存储的存储器可以存储在(一个或多个)DB子网730中。
在一些示例中,数据平面镜像应用层740可以促进控制平面VCN 716和数据平面VCN 718之间的直接通信。例如,可能期望对包含在数据平面VCN 718中的资源应用对配置的更改、更新或其它适当的修改。经由VNIC 742,控制平面VCN 716可以直接与包含在数据平面VCN 718中的资源通信,并且从而可以执行对配置的更改、更新或其它适当的修改。
在一些实施例中,控制平面VCN 716和数据平面VCN 718可以包含在服务租赁719中。在这种情况下,系统的用户或客户可能不拥有或操作控制平面VCN 716或数据平面VCN718。替代地,IaaS提供商可以拥有或操作控制平面VCN 716和数据平面VCN 718,这两者平面都可以包含在服务租赁719中。该实施例可以使得能够隔离可能阻止用户或客户与其它用户或其它客户的资源交互的网络。此外,该实施例可以允许系统的用户或客户私自存储数据库,而无需依赖可能不具有期望威胁预防级别的公共互联网754进行存储。
在其它实施例中,包含在控制平面VCN 716中的(一个或多个)LB子网722可以被配置为从服务网关736接收信号。在这个实施例中,控制平面VCN 716和数据平面VCN 718可以被配置为由IaaS提供商的客户调用而无需调用公共互联网754。IaaS提供商的客户可能期望这个实施例,因为客户使用的(一个或多个)数据库可以由IaaS提供商控制并且可以存储在服务租赁719上,服务租赁719可能与公共互联网754隔离。
图8是图示根据至少一个实施例的IaaS体系架构的另一个示例模式的框图800。服务运营商802(例如,图7的服务运营商702)可以通信地耦合到安全主机租赁804(例如,图7的安全主机租赁704),该安全主机租赁804可以包括虚拟云网络(VCN)806(例如,图7的VCN706)和安全主机子网808(例如,图7的安全主机子网708)。VCN 806可以包括本地对等网关(LPG)810(例如,图7的LPG 710),其可以经由包含在SSH VCN 812中的LPG 710通信地耦合到安全壳(SSH)VCN 812(例如,图7的SSH VCN 712)。SSH VCN 812可以包括SSH子网814(例如,图7的SSH子网714),并且SSH VCN 812可以经由包含在控制平面VCN 816中的LPG 810通信地耦合到控制平面VCN 816(例如,图7的控制平面VCN 716)。控制平面VCN 816可以包含在服务租赁819(例如,图7的服务租赁719)中,并且数据平面VCN 818(例如,图7的数据平面VCN 718)可以包含在可能由系统的用户或客户拥有或操作的客户租赁821中。
控制平面VCN 816可以包括控制平面DMZ层820(例如,图7的控制平面DMZ层720),其可以包括(一个或多个)LB子网822(例如,图7的(一个或多个)LB子网722)、可以包括(一个或多个)应用子网826(例如,图7的(一个或多个)应用子网726)的控制平面应用层824(例如,图7的控制平面应用层724)、可以包括(一个或多个)数据库(DB)子网830(例如,类似于图7的(一个或多个)DB子网730)的控制平面数据层828(例如,图7的控制平面数据层728)。包含在控制平面DMZ层820中的(一个或多个)LB子网822可以通信地耦合到包含在控制平面应用层824中的(一个或多个)应用子网826和可以包含在控制平面VCN 816中的互联网网关834(例如,图7的互联网网关734),并且(一个或多个)应用子网826可以通信地耦合到包含在控制平面数据层828中的(一个或多个)DB子网830以及服务网关836(例如,图7的服务网关)和网络地址转换(NAT)网关838(例如,图7的NAT网关738)。控制平面VCN 816可以包括服务网关836和NAT网关838。
控制平面VCN 816可以包括可以包括(一个或多个)应用子网826的数据平面镜像应用层840(例如,图7的数据平面镜像应用层740)。包含在数据平面镜像应用层840中的(一个或多个)应用子网826可以包括可以执行计算实例844(例如,类似于图7的计算实例744)的虚拟网络接口控制器(VNIC)842(例如,742的VNIC)。计算实例844可以促进数据平面镜像应用层840的(一个或多个)应用子网826和可以包含在数据平面应用层846(例如,图7的数据平面应用层746)中的(一个或多个)应用子网826之间经由包含在数据平面镜像应用层840中的VNIC 842和包含在数据平面应用层846中的VNIC 842的通信。
包含在控制平面VCN 816中的互联网网关834可以通信地耦合到元数据管理服务852(例如,图7的元数据管理服务752),该元数据管理服务852可以通信地耦合到公共互联网854(例如,图7的公共互联网754)。公共互联网854可以通信地耦合到包含在控制平面VCN816中的NAT网关838。包含在控制平面VCN 816中的服务网关836可以通信地耦合到云服务856(例如,图7的云服务756)。
在一些示例中,数据平面VCN 818可以包含在客户租赁821中。在这种情况下,IaaS提供商可以为每个客户提供控制平面VCN 816,并且IaaS提供商可以为每个客户设置包含在服务租赁819中的唯一计算实例844。每个计算实例844可以允许包含在服务租赁819中的控制平面VCN 816和包含在客户租赁821中的数据平面VCN 818之间的通信。计算实例844可以允许在包含在服务租赁819中的控制平面VCN 816中供给的资源被部署或以其它方式在包含在客户租赁821中的数据平面VCN 818中使用。
在其它示例中,IaaS提供商的客户可以具有存在于客户租赁821中的数据库。在这个示例中,控制平面VCN 816可以包括数据平面镜像应用层840,其可以包括(一个或多个)应用子网826。数据平面镜像应用层840可以驻留在数据平面VCN 818中,但数据平面镜像应用层840可能不在数据平面VCN 818中。即,数据平面镜像应用层840可以访问客户租赁821,但是数据平面镜像应用层840可能不存在于数据平面VCN 818中或者由IaaS提供商的客户拥有或操作。数据平面镜像应用层840可以被配置为对数据平面VCN 818进行调用,但可以不被配置为对包含在控制平面VCN 816中的任何实体进行调用。客户可能期望在数据平面VCN 818中部署或以其它方式使用在控制平面VCN 816中供给的资源,并且数据平面镜像应用层840可以促进客户的期望部署或资源的其它使用。
在一些实施例中,IaaS提供商的客户可以将过滤器应用到数据平面VCN 818。在这个实施例中,客户可以确定数据平面VCN 818可以访问什么,并且客户可以限制从数据平面VCN 818对公共互联网854的访问。IaaS提供商可能无法应用过滤器或以其它方式控制数据平面VCN 818对任何外部网络或数据库的访问。客户将过滤器和控制应用到包含在客户租赁821中的数据平面VCN 818上可以帮助将数据平面VCN 818与其它客户和公共互联网854隔离开。
在一些实施例中,云服务856可以由服务网关836调用以访问公共互联网854、控制平面VCN 816或数据平面VCN 818上可能不存在的服务。云服务856与控制平面VCN 816或数据平面VCN 818之间的连接可以不是实时的或连续的。云服务856可以存在于由IaaS提供商拥有或操作的不同网络上。云服务856可以被配置为接收来自服务网关836的调用并且可以被配置为不接收来自公共互联网854的调用。一些云服务856可以与其它云服务856隔离,并且控制平面VCN 816可以与可能与控制平面VCN 816不在同一区域的云服务856隔离。例如,控制平面VCN 816可能位于“区域1”,并且云服务“部署7”可能位于区域1和“区域2”。如果包含在位于区域1中的控制平面VCN 816中的服务网关836对部署7进行调用,那么该调用可以被传输到区域1中的部署7。在这个示例中,控制平面VCN 816或区域1中的部署7可能不与区域2中的部署7通信地耦合或以其它方式通信。
图9是图示根据至少一个实施例的IaaS体系架构的另一个示例模式的框图900。服务运营商902(例如,图7的服务运营商702)可以通信地耦合到安全主机租赁904(例如,图7的安全主机租赁704),该安全主机租赁904可以包括虚拟云网络(VCN)906(例如,图7的VCN706)和安全主机子网908(例如,图7的安全主机子网708)。VCN 906可以包括LPG 910(例如,图7的LPG 710),其可以经由包含在SSH VCN 912中的LPG 910通信地耦合到SSH VCN 912(例如,图7的SSH VCN 712)。SSH VCN 912可以包括SSH子网914(例如,图7的SSH子网714),并且SSH VCN 912可以经由包含在控制平面VCN 916中的LPG 910通信地耦合到控制平面VCN 916(例如,图7的控制平面VCN 716)并且经由包含在数据平面VCN 918中的LPG 910耦合到数据平面VCN 918(例如,图7的数据平面718)。控制平面VCN 916和数据平面VCN 918可以包含在服务租赁919(例如,图7的服务租赁719)中。
控制平面VCN 916可以包括可以包括(一个或多个)负载平衡器(LB)子网922(例如,图7的(一个或多个)LB子网722)的控制平面DMZ层920(例如,图7的控制平面DMZ层720)、可以包括(一个或多个)应用子网926(例如,类似于图7的(一个或多个)应用子网726)的控制平面应用层924(例如,图7的控制平面应用层724)、可以包括(一个或多个)DB子网930的控制平面数据层928(例如,图7的控制平面数据层728)。包含在控制平面DMZ层920中的(一个或多个)LB子网922可以通信地耦合到包含在控制平面应用层924中的(一个或多个)应用子网926和可以包含在控制平面VCN 916中的互联网网关934(例如,图7的互联网网关734),并且(一个或多个)应用子网926可以通信地耦合到包含在控制平面数据层928中的(一个或多个)DB子网930以及服务网关936(例如,图7的服务网关)和网络地址转换(NAT)网关938(例如,图7的NAT网关738)。控制平面VCN 916可以包括服务网关936和NAT网关938。
数据平面VCN 918可以包括数据平面应用层946(例如,图7的数据平面应用层746)、数据平面DMZ层948(例如,图7的数据平面DMZ层748),以及数据平面数据层950(例如,图7的数据平面数据层750)。数据平面DMZ层948可以包括可以通信地耦合到数据平面应用层946的(一个或多个)可信应用子网960和(一个或多个)不可信应用子网962以及包含在数据平面VCN 918中的互联网网关934的(一个或多个)LB子网922。(一个或多个)可信应用子网960可以通信地耦合到包含在数据平面VCN 918中的服务网关936、包含在数据平面VCN918中的NAT网关938以及包含在数据平面数据层950中的(一个或多个)DB子网930。(一个或多个)不可信应用子网962可以通信地耦合到包含在数据平面VCN 918中的服务网关936和包含在数据平面数据层950中的(一个或多个)DB子网930。数据平面数据层950可以包括可以通信地耦合到包含在数据平面VCN 918中的服务网关936的(一个或多个)DB子网930。
(一个或多个)不可信应用子网962可以包括可以通信地耦合到租户虚拟机(VM)966(1)-(N)的一个或多个主VNIC 964(1)-(N)。每个租户VM 966(1)-(N)可以通信地耦合到可以包含在相应容器出口VCN 968(1)-(N)中的相应应用子网967(1)-(N),相应容器出口VCN 968(1)-(N)可以包含在相应客户租赁970(1)-(N)中。相应的辅助VNIC 972(1)-(N)可以促进数据平面VCN 918中包含的(一个或多个)不可信应用子网962与容器出口VCN 968(1)-(N)中包含的应用子网之间的通信。每个容器出口VCN 968(1)-(N)可以包括NAT网关938,该NAT网关938可以通信地耦合到公共互联网954(例如,图7的公共互联网754)。
包含在控制平面VCN 916中并且包含在数据平面VCN 918中的互联网网关934可以通信地耦合到元数据管理服务952(例如,图7的元数据管理系统752),该元数据管理服务952可以通信地耦合到公共互联网954。公共互联网954可以通信地耦合到包含在控制平面VCN 916中并且包含在数据平面VCN 918中的NAT网关938。包含在控制平面VCN 916中和包含在数据平面VCN 918中的服务网关936可以通信地耦合到云服务956。
在一些实施例中,数据平面VCN 918可以与客户租赁970集成。在一些情况下,诸如在执行代码时可能期望支持的情况下,这种集成对于IaaS提供商的客户可能是有用的或期望的。客户可能提供可能具有破坏性、可能与其它客户资源通信或可能以其它方式导致非期望效果的代码来运行。作为对此的响应,IaaS提供商可以确定是否运行由客户给与IaaS提供商的代码。
在一些示例中,IaaS提供商的客户可以向IaaS提供商授予临时网络访问,并请求附加到数据平面层应用946的功能。运行该功能的代码可以在VM 966(1)-(N)中执行,并且该代码可以不被配置为在数据平面VCN 918上的其它任何地方运行。每个VM 966(1)-(N)可以连接到一个客户租赁970。包含在VM 966(1)-(N)中的相应容器971(1)-(N)可以被配置为运行代码。在这种情况下,可以存在双重隔离(例如,容器971(1)-(N)运行代码,其中容器971(1)-(N)可能至少包含在(一个或多个)不可信应用子网962中包含的VM 966(1)-(N)中),这可以帮助防止不正确的或以其它方式非期望的代码损坏IaaS提供商的网络或损坏不同客户的网络。容器971(1)-(N)可以通信地耦合到客户租赁970并且可以被配置为传输或接收来自客户租赁970的数据。容器971(1)-(N)可以不被配置为从数据平面VCN 918中的任何其它实体传输或接收数据。在运行代码完成后,IaaS提供商可以终止或以其它方式处置容器971(1)-(N)。
在一些实施例中,(一个或多个)可信应用子网960可以运行可以由IaaS提供商拥有或操作的代码。在这个实施例中,(一个或多个)可信应用子网960可以通信地耦合到(一个或多个)DB子网930并且被配置为在(一个或多个)DB子网930中执行CRUD操作。(一个或多个)不可信应用子网962可以通信地耦合到(一个或多个)DB子网930,但是在这个实施例中,(一个或多个)不可信应用子网可以被配置为在(一个或多个)DB子网930中执行读取操作。可以包含在每个客户的VM 966(1)-(N)中并且可以运行来自客户的代码的容器971(1)-(N)可以不与(一个或多个)DB子网930通信地耦合。
在其它实施例中,控制平面VCN 916和数据平面VCN 918可以不直接通信地耦合。在这个实施例中,控制平面VCN 916和数据平面VCN 918之间可能没有直接通信。但是,通信可以通过至少一种方法间接发生。LPG 910可以由IaaS提供商建立,其可以促进控制平面VCN 916和数据平面VCN 918之间的通信。在另一个示例中,控制平面VCN 916或数据平面VCN 918可以经由服务网关936调用云服务956。例如,从控制平面VCN 916对云服务956的调用可以包括对可以与数据平面VCN 918通信的服务的请求。
图10是图示根据至少一个实施例的IaaS体系架构的另一个示例模式的框图1000。服务运营商1002(例如,图7的服务运营商702)可以通信地耦合到安全主机租赁1004(例如,图7的安全主机租赁704),该安全主机租赁1004可以包括虚拟云网络(VCN)1006(例如,图7的VCN 706)和安全主机子网1008(例如,图7的安全主机子网708)。VCN 1006可以包括LPG1010(例如,图7的LPG 710),该LPG 1010可以经由包含在SSH VCN 1012(例如,图7的SSHVCN 712)中的LPG 1010通信地耦合到SSH VCN 1012。SSH VCN 1012可以包括SSH子网1014(例如,图7的SSH子网714),并且SSH VCN 1012可以经由包含在控制平面VCN 1016中的LPG1010通信地耦合到控制平面VCN 1016(例如,图7的控制平面VCN 716)并且经由包含在数据平面VCN 1018中的LPG 1010耦合到数据平面VCN 1018(例如,图7的数据平面718)。控制平面VCN 1016和数据平面VCN 1018可以包含在服务租赁1019(例如,图7的服务租赁719)中。
控制平面VCN 1016可以包括可以包括(一个或多个)LB子网1022(例如,图7的(一个或多个)LB子网722)的控制平面DMZ层1020(例如,图7的控制平面DMZ层720)、可以包括(一个或多个)应用子网1026(例如,图7的(一个或多个)应用子网726)的控制平面应用层1024(例如,图7的控制平面应用层724)、可以包括(一个或多个)DB子网1030(例如,图9的(一个或多个)DB子网930)的控制平面数据层1028(例如,图7的控制平面数据层728)。包含在控制平面DMZ层1020中的(一个或多个)LB子网1022可以通信地耦合到包含在控制平面应用层1024中的(一个或多个)应用子网1026和可以包含在控制平面VCN 1016中的互联网网关1034(例如,图7的互联网网关734),并且(一个或多个)应用子网1026可以通信地耦合到包含在控制平面数据层1028中的(一个或多个)DB子网1030以及服务网关1036(例如,图7的服务网关)和网络地址转换(NAT)网关1038(例如,图7的NAT网关738)。控制平面VCN 1016可以包括服务网关1036和NAT网关1038。
数据平面VCN 1018可以包括数据平面应用层1046(例如,图7的数据平面应用层746)、数据平面DMZ层1048(例如,图7的数据平面DMZ层748)),以及数据平面数据层1050(例如,图7的数据平面数据层750)。数据平面DMZ层1048可以包括可以通信地耦合到数据平面应用层1046的(一个或多个)可信应用子网1060(例如,图9的(一个或多个)可信应用子网960)和(一个或多个)不可信应用子网1062(例如,图9的(一个或多个)不可信应用子网962)以及包含在数据平面VCN 1018中的互联网网关1034的(一个或多个)LB子网1022。(一个或多个)可信应用子网1060可以通信地耦合到包含在数据平面VCN 1018中的服务网关1036、包含在数据平面VCN 1018中的NAT网关1038以及包含在数据平面数据层1050中的(一个或多个)DB子网1030。(一个或多个)不可信应用子网1062可以通信地耦合到包含在数据平面VCN 1018中的服务网关1036和包含在数据平面数据层1050中的(一个或多个)DB子网1030。数据平面数据层1050可以包括可以通信地耦合到包含在数据平面VCN 1018中的服务网关1036的(一个或多个)DB子网1030。
(一个或多个)不可信应用子网1062可以包括可以通信地耦合到驻留在(一个或多个)不可信应用子网1062内的租户虚拟机(VM)1066(1)-(N)的主VNIC 1064(1)-(N)。每个租户VM 1066(1)-(N)可以在相应的容器1067(1)-(N)中运行代码,并且可通信地耦合到可以包含在容器出口VCN 1068中包含的数据平面应用层1046中的应用子网1026。相应的辅助VNIC 1072(1)-(N)可以促进包含在数据平面VCN 1018中的(一个或多个)不可信应用子网1062和包含在容器出口VCN 1068中的应用子网之间的通信。容器出口VCN可以包括可以通信地耦合到公共互联网1054(例如,图7的公共互联网754)的NAT网关1038。
包含在控制平面VCN 1016中和包含在数据平面VCN 1018中的互联网网关1034可以通信地耦合到元数据管理服务1052(例如,图7的元数据管理系统752),该元数据管理服务1052可以通信地耦合到公共互联网1054。公共互联网1054可以通信地耦合到包含在控制平面VCN 1016中并且包含在数据平面VCN 1018中的NAT网关1038。包含在控制平面VCN1016中并且包含在数据平面VCN 1018中的服务网关1036可以通信地耦合到云服务1056。
在一些示例中,图10的框图1000的体系架构所示的模式可以被认为是图9的框图900的体系架构所示的模式的例外,并且如果IaaS提供商不能直接与是IaaS提供商的客户通信(例如,断开连接的区域),那么这种模式可能该客户所期望的。客户可以实时访问每个客户的VM 1066(1)-(N)中包含的相应容器1067(1)-(N)。容器1067(1)-(N)可以被配置为对包含在数据平面应用层1046的(一个或多个)应用子网1026中的相应辅助VNIC 1072(1)-(N)进行调用,该数据平面应用层1046可以包含在容器出口VCN 1068中。辅助VNIC 1072(1)-(N)可以将调用传输到NAT网关1038,NAT网关1038可以将调用传输到公共互联网1054。在这个示例中,可以由客户实时访问的容器1067(1)-(N)可以与控制平面VCN 1016隔离,并且可以与数据平面VCN 1018中包含的其它实体隔离。容器1067(1)-(N)也可以与来自其它客户的资源隔离。
在其它示例中,客户可以使用容器1067(1)-(N)来调用云服务1056。在这个示例中,客户可以运行容器1067(1)-(N)中从云服务1056请求服务的代码。容器1067(1)-(N)可以将该请求传输到辅助VNIC 1072(1)-(N),辅助VNIC 1072(1)-(N)可以将请求传输到NAT网关,该NAT网关可以将请求传输到公共互联网1054。公共互联网1054可以经由互联网网关1034将请求传输到包含在控制平面VCN 1016中的(一个或多个)LB子网1022。响应于确定请求有效,(一个或多个)LB子网可以将请求传输到(一个或多个)应用子网1026,该(一个或多个)应用子网1026可以经由服务网关1036将请求传输到云服务1056。
应当认识到的是,各图中描绘的IaaS体系架构700、800、900、1000可以具有除所描绘的那些之外的其它组件。另外,各图中所示的实施例仅仅是可以结合本公开的实施例的云基础设施系统的一些示例。在一些其它实施例中,IaaS系统可以具有比各图中所示更多或更少的组件、可以组合两个或更多个组件,或者可以具有不同的配置或组件布置。
在某些实施例中,本文描述的IaaS系统可以包括以自助服务、基于订阅、弹性可扩展、可靠、高度可用和安全的方式交付给客户的应用套件、中间件和数据库服务产品。此类IaaS系统的示例是本受让人提供的Oracle云基础设施(OCI)。
图11图示了其中可以实现各种实施例的示例计算机系统1100。系统1100可以用于实现上述任何计算机系统。如图所示,计算机系统1100包括经由总线子系统1102与多个外围子系统通信的处理单元1104。这些外围子系统可以包括处理加速单元1106、I/O子系统1108、存储子系统1118和通信子系统1124。存储子系统1118包括有形计算机可读存储介质1122和系统存储器1110。
总线子系统1102提供用于让计算机系统1100的各种部件和子系统按意图彼此通信的机制。虽然总线子系统1102被示意性地示出为单条总线,但是总线子系统的替代实施例可以利用多条总线。总线子系统1102可以是若干种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用任何各种总线体系架构的局部总线。例如,这种体系架构可以包括工业标准体系架构(ISA)总线、微通道体系架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线和外围部件互连(PCI)总线,其可以被实现为按IEEE P1386.1标准制造的Mezzanine总线。
可以被实现为一个或多个集成电路(例如,常规微处理器或微控制器)的处理单元1104控制计算机系统1100的操作。一个或多个处理器可以被包括在处理单元1104中。这些处理器可以包括单核或多核处理器。在某些实施例中,处理单元1104可以被实现为一个或多个独立的处理单元1132和/或1134,其中在每个处理单元中包括单核或多核处理器。在其它实施例中,处理单元1104也可以被实现为通过将两个双核处理器集成到单个芯片中形成的四核处理单元。
在各种实施例中,处理单元1104可以响应于程序代码执行各种程序并且可以维护多个并发执行的程序或进程。在任何给定的时间,要被执行的程序代码中的一些或全部代码可以驻留在(一个或多个)处理器1104中和/或存储子系统1118中。通过适当的编程,(一个或多个)处理器1104可以提供上述各种功能。计算机系统1100可以附加地包括处理加速单元1106,其可以包括数字信号处理器(DSP)、专用处理器,等等。
I/O子系统1108可以包括用户接口输入设备和用户接口输出设备。用户接口输入设备可以包括键盘、诸如鼠标或轨迹球的定点设备、结合到显示器中的触摸板或触摸屏、滚动轮、点击轮、拨盘、按钮、开关、键盘、具有语音命令识别系统的音频输入设备、麦克风以及其它类型的输入设备。用户接口输入设备可以包括,例如,运动感测和/或手势识别设备,诸如的Microsoft运动传感器,其使得用户能够使用手势和语音命令通过自然用户接口来控制诸如的Microsoft/>360游戏控制器的输入设备并与之交互。用户接口输入设备也可以包括眼睛姿势识别设备,诸如从用户检测眼睛活动(例如,当拍摄照片和/或做出菜单选择时的“眨眼”)并且将眼睛姿势转换为到输入设备(例如,Google/>)中的输入的Google/>眨眼检测器。此外,用户接口输入设备可以包括使用户能够通过语音命令与语音识别系统(例如,/>导航器)交互的语音识别感测设备。
用户接口输入设备也可以包括但不限于三维(3D)鼠标、操纵杆或指向棒、游戏面板和绘图板,以及音频/视频设备,诸如扬声器、数码相机、数码摄像机、便携式媒体播放器、网络摄像头、图像扫描仪、指纹扫描仪、条形码阅读器3D扫描仪、3D打印机、激光测距仪和视线跟踪设备。此外,用户接口输入设备可以包括,例如,医学成像输入设备,诸如计算机断层扫描、磁共振成像、正电子发射断层摄影术、医疗超声设备。用户接口输入设备也可以包括,例如,诸如MIDI键盘、数字乐器等的音频输入设备。
用户接口输出设备可以包括显示子系统、指示灯,或者诸如音频输出设备的非可视显示器,等等。显示子系统可以是阴极射线管(CRT)、诸如使用液晶显示器(LCD)或等离子显示器的平板设备、投影设备、触摸屏,等等。一般而言,术语“输出设备”的使用意在包括用于从计算机系统1100向用户或其它计算机输出信息的所有可能类型的设备和机制。例如,用户接口输出设备可以包括,但不限于,可视地传达文本、图形和音频/视频信息的各种显示设备,诸如监视器、打印机、扬声器、耳机、汽车导航系统、绘图仪、语音输出设备,以及调制解调器。
计算机系统1100可以包括包含软件元件、被示为当前位于系统存储器1110中的存储子系统1118。系统存储器1110可以存储可加载并且可在处理单元1104上执行的程序指令,以及在这些程序的执行期间所产生的数据。
取决于计算机系统1100的配置和类型,系统存储器1110可以是易失性的(诸如随机存取存储器(RAM))和/或非易失性的(诸如只读存储器(ROM)、闪存存储器,等等)。RAM通常包含可被处理单元1104立即访问和/或目前正被处理单元1104操作和执行的数据和/或程序模块。在一些实施方式中,系统存储器1110可以包括多种不同类型的存储器,例如静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。在一些实施方式中,包含有助于诸如在启动期间在计算机系统1100的元件之间传送信息的基本例程的基本输入/输出系统(BIOS),通常可以被存储在ROM中。举例来说,但不是限制,系统存储器1110也示出了可以包括客户端应用、web浏览器、中间层应用、关系数据库管理系统(RDBMS)等的应用程序1112,程序数据1114,以及操作系统1116。举例来说,操作系统1116可以包括各种版本的MicrosoftApple/>和/或Linux操作系统、各种可商业获得的或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统、Google/>操作系统等)和/或诸如iOS、/>Phone、/>OS、/>11OS和/>OS操作系统的移动操作系统。
存储子系统1118也可以提供用于存储提供一些实施例的功能的基本编程和数据结构的有形计算机可读存储介质。当被处理器执行时提供上述功能的软件(程序、代码模块、指令)可以被存储在存储子系统1118中。这些软件模块或指令可以被处理单元1104执行。存储子系统1118也可以提供用于存储根据本公开被使用的数据的储存库。
存储子系统1100也可以包括可被进一步连接到计算机可读存储介质1122的计算机可读存储介质读取器1120。与系统存储器1110一起并且,可选地,与其相结合,计算机可读存储介质1122可以全面地表示用于临时和/或更持久地包含、存储、发送和检索计算机可读信息的远程、本地、固定和/或可移除存储设备加存储介质。
包含代码或代码的部分的计算机可读存储介质1122也可以包括本领域已知或使用的任何适当的介质,包括存储介质和通信介质,诸如但不限于,以用于信息的存储和/或传输的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。这可以包括有形的计算机可读存储介质,诸如RAM、ROM、电可擦除可编程ROM(EEPROM)、闪存存储器或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学储存器、磁带盒、磁带、磁盘储存器或其它磁存储设备,或者其它有形的计算机可读介质。这也可以包括非有形的计算机可读介质,诸如数据信号、数据传输,或者可以被用来发送期望信息并且可以被计算系统1100访问的任何其它介质。
举例来说,计算机可读存储介质1122可以包括从不可移除的非易失性磁介质读取或写到其的硬盘驱动器、从可移除的非易失性磁盘读取或写到其的磁盘驱动器、以及从可移除的非易失性光盘(诸如CD ROM、DVD和盘或其它光学介质)读取或写到其的光盘驱动器。计算机可读存储介质1122可以包括,但不限于,/>驱动器、闪存卡、通用串行总线(USB)闪存驱动器、安全数字(SD)卡、DVD盘、数字音频带,等等。计算机可读存储介质1122也可以包括基于非易失性存储器的固态驱动器(SSD)(诸如基于闪存存储器的SSD、企业闪存驱动器、固态ROM等)、基于易失性存储器的SSD(诸如固态RAM、动态RAM、静态RAM)、基于DRAM的SSD,磁阻RAM(MRAM)SSD,以及使用基于DRAM和闪存存储器的SSD的组合的混合SSD。盘驱动器及其关联的计算机可读介质可以为计算机系统1100提供计算机可读指令、数据结构、程序模块及其它数据的非易失性存储。
通信子系统1124提供到其它计算机系统和网络的接口。通信子系统1124用作用于从其它系统接收数据和从计算机系统1100向其它系统发送数据的接口。例如,通信子系统1124可以使计算机系统1100能够经由互联网连接到一个或多个设备。在一些实施例中,通信子系统1124可以包括用于访问无线语音和/或数据网络的射频(RF)收发器部件(例如,使用蜂窝电话技术,诸如3G、4G或EDGE(用于全球演进的增强型数据速率)的先进数据网络技术,WiFi(IEEE 802.11系列标准),或其它移动通信技术,或其任意组合)、全球定位系统(GPS)接收器部件和/或其它部件。在一些实施例中,作为无线接口的附加或者替代,通信子系统1124可以提供有线网络连接(例如,以太网)。
在一些实施例中,通信子系统1124也可以代表可以使用计算机系统1100的一个或多个用户接收结构化和/或非结构化数据馈送1126、事件流1128、事件更新1130等形式的输入通信。
举例来说,通信子系统1124可以被配置为实时地从社交网络和/或其它通信服务的用户接收数据馈送1126,诸如馈送、/>更新、诸如丰富站点摘要(RSS)馈送的web馈送和/或来自一个或多个第三方信息源的实时更新。
此外,通信子系统1124也可被配置为接收连续数据流形式的数据,这可以包括本质上可以是连续的或无界的没有明确终止的实时事件的事件流1128和/或事件更新1130。产生连续数据的应用的示例可以包括,例如,传感器数据应用、金融报价机、网络性能测量工具(例如,网络监视和流量管理应用)、点击流分析工具、汽车流量监视,等等。
通信子系统1124也可被配置为向一个或多个数据库输出结构化和/或非结构化数据馈送1126、事件流1128、事件更新1130,等等,这一个或多个数据库可以与耦合到计算机系统1100的一个或多个流式数据源计算机通信。
计算机系统1100可以是各种类型之一,包括手持便携式设备(例如,蜂窝电话、/>计算平板电脑、PDA)、可穿戴设备(例如,/>Glass头戴式显示器)、PC、工作站、大型机、信息站、服务器机架、或任何其它数据处理系统。
由于计算机和网络的不断变化的本质,在图中绘出的计算机系统1100的描述仅仅要作为具体的示例。具有比图中绘出的系统更多或更少部件的许多其它配置是可能的。例如,定制的硬件也可以被使用和/或特定的元素可以用硬件、固件、软件(包括applets)或其组合来实现。另外,也可以采用到诸如网络输入/输出设备之类的其它计算设备的连接。基于本文提供的公开内容和示教,本领域普通技术人员将认识到实现各种实施例的其它方式和/或方法。
虽然已经描述了具体实施例,但是各种修改、变更、替代构造和等效形式也包含在本公开的范围内。实施例不限于在某些特定数据处理环境内操作,而是可以在多个数据处理环境内自由操作。此外,虽然已经使用特定系列的事务和步骤描述了实施例,但是本领域技术人员应该清楚本公开的范围不限于所描述系列的事务和步骤。上述实施例的各种特征和方面可以单独或联合使用。
另外,虽然已经使用硬件和软件的特定组合描述了实施例,但是应当认识到硬件和软件的其它组合也在本公开的范围内。实施例可以仅用硬件、或仅用软件、或使用它们的组合来实现。本文描述的各种处理可以以任何组合在相同的处理器或在不同的处理器上实现。相应地,在组件或模块被描述为被配置为执行某些操作的情况下,可以通过例如设计电子电路来执行操作、通过对可编程电子电路(诸如微处理器)进行编程来执行操作,或其任何组合来完成这样的配置。处理可以使用多种技术进行通信,包括但不限于用于处理间通信的常规技术,并且不同的处理对可以使用不同的技术,或者同一对处理可以在不同时间使用不同的技术。
相应地,说明书和附图被认为是说明性的而不是限制性的。但是,显然可以对其进行添加、减少、删除和其它修改和改变而不背离权利要求中阐述的更广泛的精神和范围。因此,虽然已经描述了具体的公开实施例,但这些并不旨在进行限制。各种修改和等效形式都在以下权利要求的范围内。
在描述所公开的实施例的上下文中(尤其在以下权利要求的上下文中)使用术语“一”和“一个”和“该”以及类似的指称要被解释为涵盖单数和复数,除非本文另有指示或与上下文明显矛盾。除非另有说明,否则术语“包括”、“具有”、“包含(including)”和“包含(containing)”要被解释为开放式术语(即,意思是“包括但不限于”)。术语“连接”应被解释为部分或全部包含在、附加到或连接在一起,即使中间存在一些东西。本文中值范围的列举仅旨在用作个别引用落入该范围内的每个单独值的速记方法,除非本文另有指示并且每个单独值被并入说明书中,就好像它在本文中个别列举一样。除非本文另有指示或与上下文明显矛盾,否则本文所述的所有方法都可以以任何合适的顺序执行。本文提供的任何和所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明实施例并且不对本公开的范围构成限制,除非另有声明。说明书中的任何语言都不应被解释为指示任何未要求保护的元素对于本公开的实践是必不可少的。
析取语言,诸如短语“X、Y或Z中的至少一个”,除非另有明确说明,否则旨在在一般用于表示项目、术语等的上下文中理解,可以是X、Y或Z,或它们的任何组合(例如,X、Y和/或Z)。因此,这种析取语言通常不旨在也不应暗示某些实施例需要X中的至少一个、Y中的至少一个或Z中的至少一个各自存在。
本文描述了本公开的优选实施例,包括已知用于实施本公开的最佳模式。那些优选实施例的变型对于本领域普通技术人员在阅读上述描述后会变得显而易见。普通技术人员应该能够适当地采用这样的变型并且可以以不同于本文具体描述的方式来实践本公开。相应地,本公开包括在适用法律允许的情况下对所附权利要求中记载的主题的所有修改和等效形式。此外,除非在本文中另有指示,否则本公开包括在其所有可能的变化中的上述元素的任何组合。
本文引用的所有参考文献,包括出版物、专利申请和专利,均以相同的程度通过引用并入本文,就好像每个参考文献个别且具体地指示通过引用并入并在本文中全文阐述一样。
在前述的说明书中,本公开的各方面参考其具体实施例进行了描述,但本领域技术人员将认识到的是,本公开不限于此。上述公开的各个特征和方面可以被单独或联合使用。此外,在不脱离本说明书的更广泛精神和范围的情况下,实施例可以在除本文所述的那些之外的任何数量的环境和应用中被使用。相应地,本说明书和附图应当被认为是说明性而不是限制性的。

Claims (20)

1.一种计算机实现的方法,包括:
由提供分析数据处理服务的分布式计算系统实现包括多个节点的集群;
由分布式计算系统维护集群的状态,该状态包括与所述多个节点均匀地相关联的多个令牌边界;
由所述多个节点中的驱动节点接收要执行的查询;
由驱动节点至少部分地基于该查询来识别与该查询对应的一个或多个数据片段的集合;
由驱动节点计算与所述一个或多个数据片段的集合对应的令牌的集合;
在所述多个节点中的第一工作者节点上执行的第一执行器上启动处理来自所述一个或多个数据片段的集合中的第一数据片段的第一任务,第一工作者节点是至少部分地基于令牌的集合中与所述多个令牌边界中的第一对令牌边界对应的第一令牌来选择的,第一对令牌边界与第一工作者节点相关联;以及
由第一工作者节点获得第一数据片段。
2.如权利要求1所述的计算机实现的方法,其中维护集群的状态包括:
存储一个或多个执行器到所述多个节点的映射;以及
至少部分地基于该映射,将所述多个令牌边界指派给在所述多个节点上执行的所述一个或多个执行器,所述多个令牌边界被均匀地分发给所述一个或多个执行器,所述多个令牌边界中的第一对令牌边界被指派给所述一个或多个执行器中的第一执行器。
3.如权利要求2所述的计算机实现的方法,还包括:
由驱动节点接收集群已被修改的指示;
响应于该指示,更新所述多个令牌边界;以及
将更新后的所述多个令牌边界指派给所述一个或多个执行器,更新后的所述多个令牌边界被均匀地分发给所述一个或多个执行器。
4.如前述权利要求中的任一项所述的计算机实现的方法,其中获得第一数据片段包括由第一执行器确定第一数据片段存在于与第一工作者节点相关联的第一高速缓存中并且从第一高速缓存中读取第一数据片段。
5.如权利要求1至3中的任一项所述的计算机实现的方法,其中获得第一数据片段包括:
由第一执行器确定第一数据片段不存在于与第一工作者节点相关联的第一高速缓存中;
向所述多个节点中的一个或多个相邻节点传输请求;
响应于该请求,由在所述一个或多个相邻节点中的第二工作者节点上执行的第二执行器确定第一数据片段存在于与第二工作者节点相关联的第二高速缓存中;
由第一工作者节点将第一数据片段从第二高速缓存复制到第一高速缓存;以及
从第一高速缓存读取第一数据片段。
6.如前述权利要求中的任一项所述的计算机实现的方法,其中计算所述令牌的集合包括计算唯一地识别所述一个或多个数据片段的散列值。
7.如权利要求6所述的计算机实现的方法,其中所述多个令牌边界包括分割整数令牌值的范围的多个整数值,计算出的散列值位于该整数令牌值的范围内。
8.如前述权利要求中的任一项所述的计算机实现的方法,还包括:
由驱动节点向第一工作者节点传输整理请求;
响应于该请求,由第一执行器确定存在于与第一工作者节点相关联的第一高速缓存中的一个或多个离群数据片段,所述一个或多个离群数据片段是至少部分地基于令牌的集合中与位于指派给第一执行器的第一对令牌边界之外的所述一个或多个离群数据片段对应的一个或多个令牌确定的;
由第一执行器将所述一个或多个离群数据片段的标识符传输到所述多个节点;以及
由所述多个节点中的第二工作者节点并且至少部分地基于标识符将所述一个或多个离群数据片段复制到与第二工作者节点相关联的第二高速缓存。
9.如前述权利要求中的任一项所述的计算机实现的方法,还包括:
由驱动节点向第一工作者节点传输整理请求;
响应于该请求,由第一执行器确定有效数据片段的集合;
至少部分地基于该有效数据片段的集合来确定存在于与第一工作者节点相关联的第一高速缓存中的一个或多个无效数据片段;
从第一高速缓存中逐出所述一个或多个无效数据片段;
由第一工作者节点确定与第一工作者节点相关联的当前存储可用性;以及
如果当前存储可用性低于阈值,那么:
由第一执行器确定存在于第一高速缓存中的一个或多个目标数据片段;以及
逐出目标数据片段。
10.如权利要求9所述的计算机实现的方法,其中所述一个或多个目标数据片段是至少部分地基于片段温度的集合来确定的。
11.一种提供分析数据处理服务的分布式计算系统,包括:
一个或多个处理器;以及
存储计算机可执行指令的一个或多个存储器,计算机可执行指令在利用所述一个或多个处理器执行时使得分布式计算系统:
执行包括多个节点的集群;
维护集群的状态,该状态包括与所述多个节点均匀地相关联的多个令牌边界;
由所述多个节点中的驱动节点接收要执行的查询;
至少部分地基于该查询来识别与该查询对应的一个或多个数据片段的集合;
由驱动节点计算与所述一个或多个数据片段的集合对应的令牌的集合;
在所述多个节点中的第一工作者节点上执行的第一执行器上启动处理来自所述一个或多个数据片段的集合中的第一数据片段的第一任务,第一工作者节点是至少部分地基于令牌的集合中与所述多个令牌边界中的第一对令牌边界对应的第一令牌选择的,第一对令牌边界与第一工作者节点相关联;以及
由第一工作者节点获得第一数据片段。
12.如权利要求11所述的分布式计算系统,其中维护集群的状态包括:
存储一个或多个执行器到所述多个节点的映射;以及
至少部分地基于该映射,将所述多个令牌边界指派给在所述多个节点上执行的所述一个或多个执行器,所述多个令牌边界被均匀地分发给所述一个或多个执行器,所述多个令牌边界中的第一对令牌边界被指派给所述一个或多个执行器中的第一执行器。
13.如权利要求12所述的分布式计算系统,其中执行计算机可执行指令还使得分布式计算系统:
由驱动节点接收集群已被修改的指示;
响应于该指示,更新所述多个令牌边界;以及
将更新后的所述多个令牌边界指派给所述一个或多个执行器,更新后的所述多个令牌边界被均匀地分发给所述一个或多个执行器。
14.如权利要求11至13中的任一项所述的分布式计算系统,其中获得第一数据片段包括由第一执行器确定第一数据片段存在于与第一工作者节点相关联的第一高速缓存中并且从第一高速缓存中读取第一数据。
15.如权利要求11至13任一项所述的分布式计算系统,其中获得第一数据片段包括:
由第一执行器确定第一数据片段不存在于与第一工作者节点相关联的第一高速缓存中;
向所述多个节点中的一个或多个相邻节点传输请求;
响应于该请求,由在所述一个或多个相邻节点中的第二工作者节点上执行的第二执行器确定第一数据片段存在于与第二工作者节点相关联的第二高速缓存中;
由第一工作者节点将第一数据片段从第二高速缓存复制到第一高速缓存;以及
从第一高速缓存读取第一数据片段。
16.一种存储计算机可执行指令的非暂态计算机可读介质,计算机可执行指令在由一个或多个处理器执行时使得分布式计算机系统至少:
执行包括多个节点的集群;
维护集群的状态,该状态包括与所述多个节点均匀地相关联的多个令牌边界;
由所述多个节点中的驱动节点接收要执行的查询;
至少部分地基于该查询来识别与该查询对应的一个或多个数据片段的集合;
由驱动节点计算与所述一个或多个数据片段的集合对应的令牌的集合;
在所述多个节点中的第一工作者节点上执行的第一执行器上启动处理来自一个或多个数据片段的集合中的第一数据片段的第一任务,第一工作者节点是至少部分地基于令牌的集合中与所述多个令牌边界中的第一对令牌边界对应的第一令牌选择的,第一对令牌边界与第一工作者节点相关联;以及
由第一工作者节点获得第一数据片段。
17.如权利要求16所述的非暂态计算机可读介质,其中维护集群的状态包括:
存储一个或多个执行器到所述多个节点的映射;以及
至少部分地基于该映射,将所述多个令牌边界指派给在所述多个节点上执行的所述一个或多个执行器,所述多个令牌边界被均匀地分发给所述一个或多个执行器,所述多个令牌边界中的第一对令牌边界被指派给所述一个或多个执行器中的第一执行器。
18.如权利要求17所述的非暂态计算机可读介质,其中执行计算机可执行指令还使得分布式计算系统:
由驱动节点接收集群已被修改的指示;
响应于该指示,更新所述多个令牌边界;以及
将更新后的所述多个令牌边界指派给所述一个或多个执行器,更新后的所述多个令牌边界被均匀地分发给所述一个或多个执行器。
19.如权利要求16至18中的任一项所述的非暂态计算机可读介质,其中获得第一数据片段包括由第一执行器确定第一数据片段存在于与第一工作者节点相关联的第一高速缓存中并且从第一高速缓存中读取第一数据片段。
20.如权利要求16至18中的任一项所述的非暂态计算机可读介质,其中获得第一数据片段包括:
由第一执行器确定第一数据片段不存在于与第一工作者节点相关联的第一高速缓存中;
向所述多个节点中的一个或多个相邻节点传输请求;
响应于该请求,由在所述一个或多个相邻节点中的第二工作者节点上执行的第二执行器确定第一数据片段存在于与第二工作者节点相关联的第二高速缓存中;
由第一工作者节点将第一数据片段从第二高速缓存复制到第一高速缓存;以及
从第一高速缓存读取第一数据片段。
CN202280033210.3A 2021-05-21 2022-05-20 用于加速sql查询的确定性分布式高速缓存的技术 Pending CN117321581A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IN202141022725 2021-05-21
IN202141022725 2021-05-21
PCT/US2022/030337 WO2022246253A1 (en) 2021-05-21 2022-05-20 Techniques for a deterministic distributed cache to accelerate sql queries

Publications (1)

Publication Number Publication Date
CN117321581A true CN117321581A (zh) 2023-12-29

Family

ID=82020297

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280033210.3A Pending CN117321581A (zh) 2021-05-21 2022-05-20 用于加速sql查询的确定性分布式高速缓存的技术

Country Status (5)

Country Link
US (1) US20220374431A1 (zh)
EP (1) EP4341826A1 (zh)
JP (1) JP2024521730A (zh)
CN (1) CN117321581A (zh)
WO (1) WO2022246253A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11789959B2 (en) * 2021-10-06 2023-10-17 S&P Global Inc. Data visualization method
US20230120592A1 (en) * 2021-10-19 2023-04-20 NetSpring Data, Inc. Query Generation and Processing System

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5949561B2 (ja) * 2011-01-25 2016-07-06 日本電気株式会社 情報処理装置、情報処理システム、情報処理方法および情報処理プログラム
US8966184B2 (en) * 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
US9509793B2 (en) * 2013-11-22 2016-11-29 Verizon Patent And Licensing Inc. Content caching in a network for efficient user device access
US10152425B2 (en) * 2016-06-13 2018-12-11 Advanced Micro Devices, Inc. Cache entry replacement based on availability of entries at another cache
US11989194B2 (en) * 2017-07-31 2024-05-21 Splunk Inc. Addressing memory limits for partition tracking among worker nodes
WO2019067911A1 (en) * 2017-09-29 2019-04-04 Oracle International Corporation SYSTEM AND METHOD FOR CAPTURING CHANGE DATA FROM DISTRIBUTED DATA SOURCES FOR USE ON HETEROGENEOUS TARGETS
US10733114B2 (en) * 2018-08-28 2020-08-04 International Business Machines Corporation Data cache performance
US10970222B2 (en) * 2019-02-28 2021-04-06 Micron Technology, Inc. Eviction of a cache line based on a modification of a sector of the cache line
US11556471B2 (en) * 2019-04-30 2023-01-17 Hewlett Packard Enterprise Development Lp Cache coherency management for multi-category memories

Also Published As

Publication number Publication date
US20220374431A1 (en) 2022-11-24
WO2022246253A1 (en) 2022-11-24
JP2024521730A (ja) 2024-06-04
EP4341826A1 (en) 2024-03-27

Similar Documents

Publication Publication Date Title
US9912609B2 (en) Placement policy-based allocation of computing resources
US10223024B2 (en) Storage controller for provisioning storage services for an application based upon application-specific requirements
EP3014485B1 (en) Naive, client-side sharding with online addition of shards
US11962599B2 (en) Techniques for automatically configuring minimal cloud service access rights for container applications
US11782767B2 (en) Techniques for consistent multi-tenant behavior in microservices based applications
US11966754B2 (en) Cluster bootstrapping for distributed computing systems
CN117321581A (zh) 用于加速sql查询的确定性分布式高速缓存的技术
US11658972B2 (en) Isolated cell architecture for cloud computing platform
US20230004404A1 (en) Techniques for modifying a compute instance
US11917033B2 (en) Techniques for managing distributed computing components
US20240045771A1 (en) Techniques for scalable distributed system backups
US10127270B1 (en) Transaction processing using a key-value store
US20230216750A1 (en) Techniques for allocating capacity in cloud-computing environments
US11366830B1 (en) Techniques for live repartitioning of cross-service database shards
US20230034196A1 (en) Techniques for providing synchronous and asynchronous data processing
US11494366B1 (en) Change data capture on no-master data stores
US20240061939A1 (en) Threat change analysis system
US20220414069A1 (en) Techniques for safe database migration with no downtime
US20230033059A1 (en) System and methods for dynamic log indexing and processing

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination