CN113672359B - 柔性计算 - Google Patents
柔性计算 Download PDFInfo
- Publication number
- CN113672359B CN113672359B CN202110485047.1A CN202110485047A CN113672359B CN 113672359 B CN113672359 B CN 113672359B CN 202110485047 A CN202110485047 A CN 202110485047A CN 113672359 B CN113672359 B CN 113672359B
- Authority
- CN
- China
- Prior art keywords
- computing resources
- local
- computing
- local background
- demand
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/561—Adding application-functional data or data for application control, e.g. adding metadata
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Purification Treatments By Anaerobic Or Anaerobic And Aerobic Bacteria Or Animals (AREA)
Abstract
本文公开了柔性计算。本公开内容的实施方式可以提供用于基于需求分配资源的动态且公平的分配技术。分配控制可以被分成至少两个部件:本地部件和全局部件。每个部件彼此之间可以具有活动对话框。该对话框可以包括两个方面:1)对计算资源的需求,以及2)允许的计算资源总数。全局部件可以将资源池中的资源分配给不同的本地部件,而本地部件又可以将全局部件分配的资源分配给本地竞争请求。也可以在各种级别上节制或限制分配。
Description
技术领域
本公开内容总体上涉及柔性计算,并且具体地涉及基于需求的计算资源的动态分配。
背景技术
随着世界变得更多受数据驱动,数据库系统和其他数据系统正在存储越来越多的数据。为了使企业使用该数据,通常会针对该大量数据运行不同的操作或查询。针对大量数据执行某些操作(例如包括大表扫描的操作)可能需要花费大量时间。执行这样的操作的时间可以与用于执行的计算资源的数量成比例,因此可以使用更多的计算资源来缩短时间。
为此,一些数据系统可以提供计算资源池,并且可以分配这些资源以执行不同的操作。然而,在这样的系统中,所分配的计算资源通常例如以处理组的方式协同工作。因此,它们的分配是固定的且静态的。也就是说,计算资源可能仍被分配给不再需要该计算资源的操作。这些计算资源的分配无法响应需求变化而容易地修改。因此,没有充分利用计算资源的全部容量。
发明内容
本发明的一个方面中,一种方法,其包括:由本地后台服务的一个或更多个处理器从多个查询协调器接收与查询请求有关的信息;基于与查询请求有关的所述信息,生成针对计算资源的当前本地需求;通过网络将针对计算资源的所述当前本地需求传送至全局后台服务;从所述全局后台服务接收当前允许的计算资源数量;将所述当前允许数量的计算资源分配给所述多个查询协调器,以使所述查询协调器直接与分配的计算资源通信以执行所述查询请求;将更新的当前本地需求传送至所述全局后台服务;从所述全局后台服务接收更新的当前允许的计算资源数量;将更新的当前允许数量的计算资源分配给所述多个查询协调器;以及响应于所述更新的当前允许的计算资源数量小于所述当前允许的计算资源数量,将释放分配的计算资源的指令发送至所述多个查询协调器中的一个查询协调器。
在本发明的另一方面中,一种方法,包括:由全局后台服务的一个或更多个处理器从多个本地后台服务接收针对计算资源的当前需求;基于接收的针对计算资源的当前需求,计算系统对计算资源的当前需求;基于计算出的所述系统的当前需求,向云提供者请求N个计算资源,所述云提供者控制计算资源池;从所述云提供者接收M个计算资源的分配;至少部分地基于公平分配算法,将所述M个计算资源的至少一部分分配给所述多个本地后台服务;从所述多个本地后台服务接收针对计算资源的周期性更新的当前需求;基于所述更新的当前需求,修改对所述多个本地后台服务的计算资源分配;减少对所述多个本地后台服务中的第一本地后台服务的计算资源的分配;以及从所述第一本地后台服务接收与释放所述第一本地后台服务的分配的计算资源之一有关的通知。
在本发明的另一方面中,一种具有指令的机器可读存储介质,所述指令在由机器执行时使所述机器执行包括以下的操作:由全局后台服务的一个或更多个处理器从多个本地后台服务接收针对计算资源的当前需求;基于接收的针对计算资源的当前需求,计算系统对计算资源的当前需求;基于计算出的所述系统的当前需求,向云提供者请求N个计算资源,所述云提供者控制计算资源池;从所述云提供者接收M个计算资源的分配;至少部分地基于公平分配算法,将所述M个计算资源的至少一部分分配给所述多个本地后台服务;从所述多个本地后台服务接收针对计算资源的周期性更新的当前需求;基于所述更新的当前需求,修改对所述多个本地后台服务的计算资源分配;减少对所述多个本地后台服务中的第一本地后台服务的计算资源分配;以及从第一本地后台服务接收与释放所述第一本地后台服务的分配的计算资源之一有关的通知。
本发明的另一方面中,一种系统,其包括:多个本地后台服务,每个所述本地后台服务包括:第一机器的一个或更多个处理器;以及第一存储器,所述第一存储器存储指令,所述指令在由所述一个或更多个处理器执行时使得所述第一机器执行操作,所述操作包括:从多个查询协调器接收与查询请求有关的信息;基于与查询请求有关的所述信息,生成针对计算资源的当前本地需求;以及全局后台服务,所述全局后台服务包括:第二机器的一个或更多个处理器;以及第二存储器,所述第二存储器存储指令,所述指令在由所述一个或更多个处理器执行时使得所述第二机器执行操作,所述操作包括:从所述多个本地后台服务中的每一个接收针对计算资源的当前需求;基于接收的针对计算资源的当前需求,计算系统对计算资源的当前需求;基于计算出的所述系统的当前需求,向云提供者请求N个计算资源,所述云提供者控制计算资源池;从所述云提供者接收M个计算资源的分配;以及至少部分地基于公平分配算法,将所述M个计算资源的至少一部分分配给所述多个本地后台服务;从所述多个本地后台服务接收对计算资源的周期性更新的当前需求;基于所述更新的当前需求,修改对所述多个本地后台服务的计算资源分配;减少对所述多个本地后台服务中的第一本地后台服务的计算资源分配;以及从所述第一本地后台服务接收与释放所述第一本地后台服务的分配的计算资源之一有关的通知。
附图说明
附图中的各个附图仅示出了本公开内容的示例实施方式,并且不应当被认为限制本公开内容的范围。
图1示出了根据一些示例实施方式的示例计算环境,其中基于网络的数据仓库系统可以在共享数据库对象上实现流。
图2是示出根据一些示例实施方式的计算服务管理器的部件的框图。
图3是示出根据一些示例实施方式的执行平台的部件的框图。
图4是示出根据一些示例实施方式的前台全局服务的框图。
图5是示出根据一些示例实施方式的网络系统的框图。
图6示出了根据一些示例实施方式的用于计算针对计算资源的本地需求的流程图。
图7示出了根据一些示例实施方式的用于分配计算资源的流程图。
图8A至图8B示出了根据一些示例实施方式的用于动态分配计算资源的流程图。
图9示出了根据本公开的示例实施方式的计算机系统的形式的机器的图形表示,在该计算机系统中可以执行一组指令以使机器执行本文所讨论的方法中的任何一个或更多个。
具体实施方式
以下的描述包括体现本公开内容的说明性实施方式的系统、方法、技术、指令序列和计算机器程序产品。在以下描述中,出于说明的目的,阐述了许多具体细节以提供对发明主题的各种实施方式的理解。然而,对于本领域技术人员来说将明显的是,本发明主题的实施方式可以在没有这些具体细节的情况下实践。一般地,公知的指令实例、协议、结构和技术不需要被详细示出。
本公开内容的实施方式可以提供用于基于需求分配资源的动态分配技术。分配控制可以被分成至少两个部件:本地部件和全局部件。各个部件彼此可以具有活动对话框。该对话框可以包括两个方面:1)对计算资源的需求,以及2)允许的计算资源的总数。本地部件可以设置第一方面,即对计算资源的当前需求;全局部件可以设置第二方面,即允许的计算资源总数。控制划分提供了一些好处,例如使用公平分配算法按比例地向竞争请求分配资源。全局部件可以将资源池中的资源分配给不同的本地部件,而本地部件又可以将其分配的资源分配给本地竞争请求。全局部件和本地部件都可以将公平分配算法用于其各自的分配和指定。因此,资源的分配可以随着需求的变化而动态地修改,从而使得对计算资源的更优化的使用。
图1示出了根据本公开内容的一些实施方式的在部署之间实现安全消息传递的示例共享数据处理平台100。为了避免以不必要的细节使本发明的主题模糊,从附图中省略了与传达对本发明的主题的理解无关的各种功能部件。然而,技术人员将容易认识到,各种附加的功能部件可以被包括为共享数据处理平台100的一部分以有利于本文未具体描述的附加功能。
如图所示,共享数据处理平台100包括基于网络的数据仓库系统102、云计算存储平台104(例如,存储平台、AWS服务、微软Azure或谷歌云服务)和远程计算装置106。基于网络的数据仓库系统102是基于网络的系统,其用于以集成的方式存储和访问数据(例如,内部存储数据、访问外部的远程定位的数据)以及对来自一个或更多个不同源(例如,云计算存储平台104)的集成数据进行报告和分析。云计算存储平台104包括多个计算机器,并且向基于网络的数据仓库系统102提供按需计算机系统资源,例如数据存储和计算能力。虽然在图1示出的实施方式中描绘了数据仓库,其他实施方式可以包括其他类型的数据库或其他数据处理系统。
远程计算装置106(例如,诸如膝上型计算机的用户装置)包括执行远程软件部件108(例如,浏览器访问的云服务)以向基于网络的数据仓库系统102的用户提供其他的功能的一个或更多个计算机器(例如,诸如膝上型计算机的用户装置)。远程软件部件108包括一组机器可读指令(例如,代码),该组机器可读指令在由远程计算装置106执行时,使远程计算装置106提供某些功能。远程软件部件108可以对输入数据进行操作,并且基于处理、分析或以其他方式转换输入数据来生成结果数据。作为示例,远程软件部件108可以是启用数据库跟踪过程(例如共享表和视图上的流)的数据提供者或数据消费者,如下面进一步详细讨论的。
基于网络的数据仓库系统102包括访问管理系统110、计算服务管理器112、执行平台114和数据库116。访问管理系统110使管理用户能够管理对由基于网络的数据仓库系统102所提供的资源和服务的访问。管理用户可以创建和管理用户、角色和组,并且使用许可来允许或拒绝对资源的访问。访问管理系统110可以存储共享数据,该共享数据安全地管理基于网络的数据仓库系统102的不同用户之间对云计算存储平台104的存储资源的共享访问,如下面进一步详细讨论的。
计算服务管理器112协调和管理基于网络的数据仓库系统102的操作。计算服务管理器112还执行查询优化和编译,以及对提供计算资源的计算服务的集群(例如,虚拟仓库、虚拟机、EC2群集)进行管理。计算服务管理器112可以支持任意数目的客户帐户,例如提供数据存储和检索请求的最终用户、管理本文所述的系统和方法的系统管理员以及与计算服务管理器112交互的其他部件/装置。
计算服务管理器112还耦接至数据库116,该数据库116与存储在共享数据处理平台100上的整个数据相关联。数据库116存储与基于网络的数据仓库系统102及其用户相关联的各种功能和方面有关的数据。
在一些实施方式中,数据库116包括存储在远程数据存储系统中的数据以及可以从一个或更多个本地缓存获得的数据的摘要。另外,数据库116可以包括关于如何在远程数据存储系统和本地缓存中组织数据的信息。数据库116使得系统和服务能够确定是否需要在无需从存储装置加载或访问实际数据的情况下访问一条数据。计算服务管理器112还耦接至执行平台114,该执行平台114执行平台114提供执行各种数据存储和数据检索任务的多个计算资源(例如,虚拟仓库),如下面更详细地讨论的。
执行平台114耦接至作为云计算存储平台104的一部分的多个数据存储装置124-1至124-n。在一些实施方式中,数据存储装置124-1至124-n是位于一个或更多个地理位置中的基于云的存储装置。例如,数据存储装置124-1至124-n可以是公共云基础设施或私有云基础设施的一部分。数据存储装置124-1至124-n可以是硬盘驱动器(HDD)、固态驱动器(SSD)、存储集群、Amazon S3存储系统或任何其他数据存储技术。另外,云计算存储平台104可以包括分布式文件系统(例如Hadoop分布式文件系统(HDFS))、对象存储系统等。
执行平台114包括多个计算节点(例如,虚拟仓库)。计算节点上的一组处理执行由计算服务管理器112编译的查询计划。该一组处理可以包括:执行查询计划的第一处理;第二处理,其使用最近最少使用(LRU)策略监视和删除微分区文件,并且实现内存不足(OOM)错误缓解过程;第三处理,其从处理日志和状态信息中提取健康信息以发送回计算服务管理器112;第四处理,其在系统启动之后,与计算服务管理器112建立通信;以及第五处理,其处理针对由计算服务管理器112提供的给定作业与计算集群的所有通信,并且将信息传递回计算服务管理器112和执行平台114的其他计算节点。
云计算存储平台104还包括访问管理系统118和Web代理120。与访问管理系统110一样,访问管理系统118使用户能够创建和管理用户、角色和组以及使用许可来允许或拒绝对云服务和资源的的访问。基于网络的数据仓库系统102的访问管理系统110和云计算存储平台104的访问管理系统118可以进行通信和共享信息,以便实现对由基于网络的数据仓库系统102和云计算存储平台104二者的用户共享的资源和服务进行访问和管理。Web代理120处理与接受和处理并发API调用有关的任务,包括流量管理、授权和访问控制、监视以及API版本管理。Web代理120提供用于创建、发布、维护、保护和监视API(例如,REST API)的HTTP代理服务。
在一些实施方式中,经由一个或更多个数据通信网络来实现共享数据处理平台100的元件之间的通信链路。这些数据通信网络可以利用任何通信协议和任何类型的通信介质。在一些实施方式中,数据通信网络是彼此耦接的两个或更多个数据通信网络(或子网络)的组合。在替选实施方式中,使用任何类型的通信介质和任何通信协议来实现这些通信链路。
如图1所示,数据存储装置124-1至124-N与同执行平台114相关联的计算资源解耦。也就是说,可以在执行平台114中创建并且终止新的虚拟仓库,并且可以以独立的方式在云计算存储平台104上创建和终止其他数据存储装置。该架构支持基于变化的数据存储/检索需求以及访问共享数据处理平台100的用户和系统的变化的需求,对基于网络的数据仓库系统102进行动态改变。动态改变的支持使得基于网络的数据仓库系统102能够响应于对基于网络的数据仓库系统102内的系统和部件的需求改变而迅速缩放。将计算资源与数据存储装置124-1至124-n的解耦支持大量数据的存储,而无需相应的大量计算资源。类似地,该资源的解耦支持在特定时间使用的计算资源的显着增加,而无需相应增加可用数据存储资源。另外,资源的解耦使不同的帐户能够在不影响其他用户的系统的情况下处理创建其他计算资源来处理由其他用户共享的数据。例如,数据提供者可以拥有三个计算资源并且与数据消费者共享数据,并且数据消费者可以生成新的计算资源来对共享数据执行查询,其中新的计算资源由数据消费者管理,并且不影响数据提供者的计算资源或者不与之交互。
计算服务管理器112、数据库116、执行平台114、云计算存储平台104和远程计算装置106在图1中示出为单独的部件。然而,计算服务管理器112、数据库116、执行平台114、云计算存储平台104和远程计算环境中的每一个可以被实现为通过API和访问信息(例如令牌、登录数据)连接的分布式系统(例如,在多个地理位置的多个系统/平台上分布)。另外,计算服务管理器112、数据库116、执行平台114和云计算存储平台104中的每一个都可以根据接收到的请求的变化和共享数据处理平台100的变化的需求(彼此独立地)进行缩放。因此,在所描述的实施方式中,基于网络的数据仓库系统102是动态的并且支持定期改变以满足当前的数据处理需求。
在一般的操作期间,基于网络的数据仓库系统102处理由计算服务管理器112确定的多个作业(例如,查询)。这些作业由计算服务管理器112调度和管理,以确定何时以及如何执行作业。例如,计算服务管理器112可以将作业划分为多个离散任务,并且可以确定需要什么数据来执行多个离散任务中的每一个。计算服务管理器112可以将多个离散任务中的每一个分配给执行平台114的一个或更多个节点以处理任务。计算服务管理器112可以确定需要什么数据来处理任务并且进一步确定执行平台114内的哪些节点最适合于处理任务。一些节点可能已经缓存了处理任务所需的数据(由于节点最近已从云计算存储平台104下载了用于先前作业的数据),因此,这些节点是处理任务的良好候选者。存储在数据库116中的元数据帮助计算服务管理器112确定执行平台114中的哪些节点已经缓存了处理任务所需的数据的至少一部分。执行平台114中的一个或更多个节点使用由节点缓存的数据以及必要时使用从云计算存储平台104检索的数据来处理任务。期望从执行平台114内的缓存中检索尽可能多的数据。因为检索速度通常比从云计算存储平台104检索数据快得多。
如图1所示,共享数据处理平台100将执行平台114与云计算存储平台104分开。在这种布置中,执行平台114中的处理资源和缓存资源独立于数据存储装置124-1至124-n运行。因此,计算资源和缓存资源不受限于特定的数据存储装置124-1至124-n。相反,所有计算资源和所有缓存资源都可以从云计算存储平台104中的任何数据存储资源中检索数据以及将数据存储到云计算存储平台中的任何数据存储资源中。
图2是示出根据本公开内容的一些实施方式的计算服务管理器112的部件的框图。如图2所示,请求处理服务202管理接收到的数据存储请求和数据检索请求(例如,将对数据库数据执行的作业)。例如,请求处理服务202可以确定处理接收到的查询(例如,数据存储请求或数据检索请求)所需的数据。数据可以存储在执行平台114内的缓存中或云计算存储平台104中的数据存储装置中。管理控制台服务204支持管理员和其他系统管理员对各种系统和过程的访问。另外,管理控制台服务204可以接收执行作业并且监视系统上的工作负荷的请求。根据一些示例实施方式,流共享引擎225管理对诸如数据共享(例如,共享表)或共享视图的数据库对象的变化的跟踪,并且如下面进一步详细讨论的。
计算服务管理器112还包括作业编译器206、作业优化器208和作业执行器210。作业编译器206将作业解析为多个离散任务并且针对多个离散任务中的每一个生成执行代码。作业优化器208基于需要被处理的数据来确定执行多个离散任务的最佳方法。作业优化器208还处理各种数据修剪操作和其他数据优化技术,以提高执行作业的速度和效率。作业执行器210执行从队列接收或由计算服务管理器112确定的作业的执行代码。
作业调度器和协调器212将接收到的作业发送至适当的服务或系统,以进行编译、优化和分派到执行平台114。例如,作业可以被优先化并且按该优先顺序进行处理。在实施方式中,作业调度器和协调器212确定由计算服务管理器112调度的内部作业与其他“外部”作业的优先级,其他“外部”作业例如可以由数据库中的其他系统调度但可以利用执行平台114中的相同的处理资源)。在一些实施方式中,作业调度器和协调器212识别或分配执行平台114中的特定节点以处理特定任务。虚拟仓库管理器214管理在执行平台114中实现的多个虚拟仓库的操作。如下所述,每个虚拟仓库包括多个执行节点,每个执行节点包括缓存和处理器(例如,虚拟机、操作系统级容器执行环境)。
另外,计算服务管理器112包括配置和元数据管理器216,其管理与存储在远程数据存储装置和本地缓存(即,执行平台114中的缓存)中的数据有关的信息。配置和元数据管理器216使用元数据来确定需要访问哪些数据微分区以检索用于处理特定任务或作业的数据。监视器和工作负荷分析器218监督由计算服务管理器112执行的处理,并且管理任务(例如,工作负荷)在执行平台114中的虚拟仓库和执行节点之间的分布。监视器和工作负荷分析器218还根据需要基于整个基于网络的数据仓库系统102上变化的工作负荷来重新分配任务,并且还可以基于也可以由执行平台114处理的用户(例如,“外部”)查询工作负荷来重新分配任务。配置和元数据管理器216以及监视器和工作负荷分析器218被耦接至数据存储装置220。图2中的数据存储装置220表示基于网络的数据仓库系统102内的任何数据存储装置。例如,数据存储装置220可以表示执行平台114中的缓存、云计算存储平台104中的存储装置或任何其他存储装置。
图3是示出根据本公开内容的一些实施方式的执行平台114的部件的框图。如图3所示,执行平台114包括多个虚拟仓库,这些虚拟仓库是例如虚拟机的计算实例的弹性集群。在示出的示例中,虚拟仓库包括虚拟仓库1、虚拟仓库2和虚拟仓库n。每个虚拟仓库(例如,EC2集群)包括多个执行节点(例如,虚拟机),每个执行节点包括数据缓存和处理器。虚拟仓库可以通过使用多个执行节点并行执行多个任务。如本文所讨论的,执行平台114可以基于系统和用户的当前处理需求实时地添加新的虚拟仓库以及丢弃现有的虚拟仓库。这种柔性使得执行平台114能够在需要时快速部署大量计算资源,而不必在不再需要这些计算资源时被迫继续为它们付费。所有虚拟仓库都可以从任何数据存储装置(例如,云计算存储平台104中的任何存储装置)访问数据。
尽管图3中所示的每个虚拟仓库包括三个执行节点,但是特定的虚拟仓库可以包括任何数目的执行节点。此外,虚拟仓库中的执行节点的数目是动态的,使得在存在额外需求时创建新的执行节点,并且在不再需要现有的执行节点时(例如,在查询或作业完成时)将其删除。
每个虚拟仓库能够访问图1所示的任何数据存储装置124-1至124-n。因此,虚拟仓库不必一定被分配给特定的数据存储装置124-1至124-n,而是可以从云计算存储平台中的任何数据存储装置124-1至124-n访问数据。类似地,图3中所示的每个执行节点可以从数据存储装置124-1至124-n中的任何一个访问数据。例如,第一用户(例如,提供者帐户用户)的存储装置124-1可以与另一用户(例如,消费者帐户用户)的虚拟仓库中的工作节点共享,使得另一用户可以创建数据库(例如,只读数据库)并且直接使用存储装置124-1中的数据,而无需复制数据(例如,将数据复制到由消费者帐户用户管理的新磁盘)。在一些实施方式中,可以将特定的虚拟仓库或特定的执行节点临时分配给特定的数据存储装置,但该虚拟仓库或执行节点可以稍后从任何其他数据存储装置访问数据。
在图3的示例中,虚拟仓库1包括三个执行节点302-1、302-2和302-n。执行节点302-1包括缓存304-1和处理器306-1。执行节点302-2包括缓存304-2和处理器306-2。执行节点302-n包括缓存304-n和处理器306-n。每个执行节点302-1、302-2和302-n与处理一个或更多个数据存储和/或数据检索任务相关联。例如,虚拟仓库可以处理与内部服务相关联的数据存储和数据检索任务,该内部服务例如是群集服务、物化视图刷新服务、文件压缩服务、存储过程服务或文件升级服务。在其他实现方式中,特定的虚拟仓库可以处理与特定的数据存储系统或特定类别的数据相关联的数据存储和数据检索任务。
与上述虚拟仓库1类似,虚拟仓库2包括三个执行节点312-1、312-2和312-n。执行节点312-1包括缓存314-1和处理器316-1。执行节点312-2包括缓存314-2和处理器316-2。执行节点312-n包括缓存314-n和处理器316-n。另外,虚拟仓库3包括三个执行节点322-1、322-2和322-n。执行节点322-1包括缓存324-1和处理器326-1。执行节点322-2包括缓存324-2和处理器326-2。执行节点322-n包括缓存324-n和处理器326-n。
在一些实施方式中,图3所示的执行节点相对于执行节点正在缓存的数据是无状态的。例如,这些执行节点不存储或以其他方式维护关于执行节点或被特定执行节点缓存的数据的状态信息。因此,在执行节点发生故障的情况下,可以用另一节点透明地替换发生故障的节点。由于不存在与发生故障的执行节点相关联的状态信息,因此新的(替换)执行节点可以容易地替换发生故障的节点,而无需担心重新创建特定状态。
尽管图3所示的执行节点各自都包括一个数据缓存和一个处理器,但替选实施方式可以包括包含任意数目的处理器和任意数目的缓存的执行节点。另外,缓存的大小在不同执行节点之间可能不同。图3所示的缓存在本地执行节点(例如,本地磁盘)中存储从云计算存储平台104中的一个或更多个数据存储装置中检索的数据(例如,给定节点最近访问的S3对象)。在一些示例实施方式中,在查询仅下载该查询所需的列时,缓存存储文件头和文件的各个列。
为了改善缓存命中并且避免在节点缓存中存储重叠的冗余数据,作业优化器208使用一致的哈希方案将输入文件集分配给节点,以对所访问的数据(例如,数据库116或数据库122中的数据)的表文件名进行哈希处理。根据一些示例实施方式,因此将在同一节点上执行访问同一表文件的后续查询或并发查询。
如所讨论的,节点和虚拟仓库可以响应于环境条件(例如,灾难场景)、硬件/软件问题(例如,故障)或管理改变(例如,从大型集群到较小集群的改变以降低成本)而动态地改变。在一些示例实施方式中,在节点集合改变时,不会立即对数据进行重新洗牌。替代地,实施最近最少使用替换策略,以最终替换多个作业上丢失的缓存内容。因此,缓存减少或消除了在从远程存储系统中不断检索数据的平台中出现的瓶颈问题。代替从远程存储装置重复访问数据,本文描述的系统和方法从执行节点中的缓存访问数据,这显著地更快并且避免了上述瓶颈问题。在一些实施方式中,使用提供对缓存的数据的快速访问的高速存储装置来实现缓存。每个缓存可以存储来自云计算存储平台104中的任何存储装置的数据。
此外,缓存资源和计算资源可以在不同的执行节点之间变化。例如,一个执行节点可以包含大量的计算资源和最少的缓存资源,从而使该执行节点可用于需要大量计算资源的任务。另一执行节点可以包含大量的缓存资源和最少的计算资源,从而使该执行节点可用于需要缓存大量数据的任务。另一执行节点可以包含提供更快的输入-输出操作的缓存资源,该执行节点用于需要快速扫描大量数据的任务。在一些实施方式中,执行平台114实现偏斜处理以在与特定执行相关联的缓存资源和计算资源之间分配工作,其中该分配还可以基于将由执行节点执行的预期任务。例如,如果由执行节点执行的任务变得更加处理器密集,则可以为执行节点分配更多的处理资源。类似地,如果由执行节点执行的任务需要更大的缓存容量,则可以为执行节点分配更多的缓存资源。此外,由于各种问题(例如,虚拟化问题、网络开销),一些节点的执行速度可能比其他节点慢得多。在一些示例实施方式中,使用文件窃取方案在扫描级别解决不平衡。特别是,每当节点处理完成其输入文件集的扫描时,节点都会从其他节点请求其他文件。如果其他节点之一接收到这样的请求,则该节点分析其自己的集合(例如,接收到请求时输入文件集中还剩下多少个文件),并且然后在当前作业期间(例如查询)转交一个或更多个其余文件的所有权。然后,请求节点(例如,文件窃取节点)接收数据(例如,报头数据)并且从云计算存储平台104(例如,从数据存储装置124-1)下载文件而不从转交节点下载文件。这样,滞后节点可以经由文件窃取以不会使滞后节点的负荷劣化的方式来转交文件。
尽管虚拟仓库1、2和n与相同的执行平台114相关联,但可以使用在多个地理位置处的多个计算系统来实现虚拟仓库。例如,虚拟仓库1可以由第一地理位置处的计算系统来实现,而虚拟仓库2和n可以由第二地理位置处的另一计算系统来实现。在一些实施方式中,这些不同的计算系统是由一个或更多个不同的实体维护的基于云的计算系统。
另外,每个虚拟仓库在图3中示出为具有多个执行节点。可以使用多个地理位置处的多个计算系统来实现与每个虚拟仓库相关联的多个执行节点。例如,虚拟仓库1的实例在地理位置处的一个计算平台上实现执行节点302-1和302-2,并且在另一地理位置处的不同计算平台上实现执行节点302-n。选择特定的计算系统以实现执行节点可以取决于各种因素,例如特定的执行节点所需的资源水平(例如,处理资源需求和缓存需求)、特定计算系统处的可用资源,地理位置内或地理位置之间网络的通信能力、以及哪些计算系统已在虚拟仓库中实现其他执行节点。
执行平台114也是容错的。例如,如果一个虚拟仓库失败,那么该虚拟仓库将快速被位于不同地理位置处的不同虚拟仓库替代。
特定执行平台114可以包括任意数目的虚拟仓库。另外,特定执行平台中虚拟仓库的数目是动态的,使得在需要其他处理和/或缓存资源时创建新的虚拟仓库。类似地,在不再需要与虚拟仓库相关联的资源时,可以删除现有的虚拟仓库。
在一些实施方式中,虚拟仓库可以对云计算存储平台104中的相同数据进行操作,但每个虚拟仓库具有其自己的具有独立处理资源和缓存资源的执行节点。该配置使得能够对不同虚拟仓库上的请求进行独立地处理,并且请求之间不会相互干扰。与动态添加和移除虚拟仓库的能力相结合的这种独立的处理支持为新用户增加新的处理能力,而不会影响现有用户观察到的性能。
图4示出了根据一些示例实施方式的示例前台全局服务(GS)400。GS也可以被称为计算服务管理器。前台GS 400可以接收查询请求并且制定查询计划以执行查询请求。前台GS 400可以将请求代理到执行查询计划的计算节点或资源,如本文中进一步详细解释的。前台GS 400可以包括耦接至本地后台服务(BG)404的查询协调器(QC)402.1至402.3。在实施方式中,可以为特定类型的服务限定前台GS 400,例如复制(备份)、摄取(大表扫描的一种类型)、计算、大表扫描类型的查询等。QC 402.1至402.3可以从不同的源接收查询请求,这些不同的源可以具有不同的帐户ID。对于某些操作(例如这些涉及多个计算资源协同工作以执行操作(例如,大表扫描)的不同部分的操作),可以以数据仓库级别的粒度来限定源。QC 402.1至402.3可以将关于查询请求及其源的信息传递至本地BG 404。
如下面进一步详细解释的,本地BG 404可以将计算资源(有时也被称为执行平台)分配给QC 402.1至402.3。计算资源可以是从计算节点池分配给前台GS 400的计算节点。在实施方式中,计算资源可以是机器、服务器和/或处理器。在实施方式中,计算资源可以是机器的处理核。在接收到对其分配的计算资源之后,QC 402.1至402.3可以直接与所分配的计算资源通信以执行相应的查询计划。
图5示出了根据一些示例实施方式的,用于分配计算资源的网络系统500的示例。网络系统500可以包括多个前台服务510、520、530。每个前台服务可以包括如上所述的多个查询协调器和本地BG。例如,前台服务510可以包括耦接至本地BG 514的查询协调器512.1至512.3;前台服务520可以包括耦接至本地BG 524的查询协调器522.1至522.3;并且前台服务530可以包括耦接至本地BG 534的查询协调器532.1至532.3.
本地BG 514、524、534可以通过网络与全局BG 550通信。在实施方式中,可以经由元数据数据库540来执行本地BG 514、524、534与全局BG 550之间的通信。也就是说,本地BG514、524、534可以向元数据数据库540发送例如与它们的当前计算需求有关的消息,在元数据数据库540中可以存储来自这些消息的信息。并且全局BG 550可以从元数据数据库540读取由本地BG 514、524、534发送的信息。在另一实施方式中,可以直接通过例如诸如gRPC的远程过程调用来执行本地BG 514、524、534与全局BG 550之间的通信。此外,可以使用直接通信(例如,远程过程调用)和间接通信(例如,经由元数据数据库)的组合来执行本地BG514、524、534与全局BG 550之间的通信。
全局BG 550可以耦接至云资源提供者560。云资源提供者560可以维护计算资源池。在实施方式中,全局BG 550可以与云资源提供者560上的通信层通信。
如下面进一步详细解释的,网络系统500可以通过在本地BG 514、524、534与全局BG 550之间划分分配或分配控制来实现动态计算资源分配技术。分配控制部件、本地BG和全局BG中的每一个可以基于公平分配算法(例如最大-最小公平算法)分配或指定计算资源。并且每个分配控制部件可以根据需求修改其分配或指定。
图6示出了根据一些示例实施方式的用于通过前台GS来计算对计算资源的本地需求的方法600的流程图。如图所示,方法600的部分可以由QC(例如,QC 512.1)和本地BG(例如,本地BG 514)执行。
在操作605处,QC可以从源接收查询请求。例如,查询请求可以是复制命令或大扫描命令等。可以通过帐户ID或数据仓库等来识别源。在操作610处,QC可以将关于查询请求的信息传递至本地BG;所传递的信息可以包括查询请求的源。前台GS中的其他QC也可以将关于其各自查询请求的信息传递至本地BG,所传递的信息包括查询请求的源。在实施方式中,前台GS可以是特定于服务的;例如,尽管前台GS可以处理来自不同源的查询,但前台GS可以处理一种服务类型,例如,复制、摄取、大表扫描等。
在操作615处,本地BG可以从其QC接收并且收集查询信息。在操作620处,本地BG可以合并来自QC的查询信息、将QC的需求转换成每个源(或账户)的需求,并且可以计算针对前台GS的对计算资源的当前本地需求。本地BG可以利用关于本地存储器中每个源的需求信息来存储和维护针对计算资源的当前本地需求。
接下来将参照图7描述传递当前本地需求并且从全局BG接收当前允许数量的资源。图7示出了根据一些示例实施方式的用于通过全局BG分配计算资源的方法700的流程图。如图所示,方法700的部分可以由本地BG(例如,本地BG 514)、全局BG(例如,全局BG550)和云资源提供者(例如,云资源提供者560)执行。而且,如本文中所讨论的,本地BG与全局BG之间的通信可以至少部分地经由元数据DB(例如540)来执行。为了清楚和简洁起见,图7中未示出元数据DB,但应当理解,本地BG和全局BG之间的通信可以全部或部分地经由元数据DB来执行。还应当理解,可以经由云资源提供者上的通信层来执行全局BG与云资源提供者之间的通信。
在操作705,本地BG可以传递其针对计算资源的当前本地需求以及关于每个源的需求信息。在一个实施方式中,本地BG可以在其本地存储器中收集、更新和存储该信息(当前本地需求和源信息),并且可以由全局BG轮询以周期性地(例如,每两分钟)传递该信息。这时,本地BG可以传递存储在其存储器中的最新信息。在实施方式中,可以基于系统条件来调整传递当前本地需求的频率。例如,如果需求更加不稳定,则可以增加报告的频率,而如果需求较少不稳定,则可以减少报告的频率。
在操作710处,全局BG可以从本地BG接收并且收集当前本地需求和源信息。在操作715处,基于收集到的信息,全局BG可以计算系统的当前需求(N个资源)。在实施方式中,计算的系统的当前需求N可以是本地BG的当前本地需求的总和。在实施方式中,N可以小于本地BG的当前本地需求的总和。例如,全局BG可以在其对系统的当前需求的计算中对数据和/或历史数据进行平滑处理。这可以防止基于需求的短持续尖峰请求太多资源,其中一旦需求尖峰耗散,资源可能未被完全利用。另外,全局BG可以检查来自不同查询请求的源信息,并且基于源的资源的配额或帐户限额,确定一个或更多个源可能没有资格接收与它们的请求有关的所有需求的资源。配额或帐户限额可以由源或管理员设置。
在操作720处,全局BG可以向云资源提供者请求N个资源。在操作725处,云资源提供者可以接收对N个资源的请求。云资源提供者还可以从其他源接收请求。在操作730处,云提供者可以向全局BG发送M个计算资源的分配以及M个计算资源的标识,并且在操作735处,全局BG可以接收该信息。在实施方式中,M可以等于或小于N。换言之,全局BG可以接收所请求的所有计算资源,或者可以接收比所请求的更少的计算资源。
在操作740处,全局BG可以使用公平分配算法(例如最大-最小公平算法)将M个计算资源或其至少一部分分配给不同的本地BG。全局BG可以为每个本地BG设置允许的计算资源数量。在实施方式中,全局BG可以采用分层的分级分类进行分配。例如,顶层可以是服务类型,其中全局BG可以基于服务类型来分配M个计算资源。一些服务可以优先于其他服务。在服务层下面,下一层可以是源。此处,然后可以基于查询请求的源来分配每种服务类型下分配的计算资源。在源层下面,下一层可以是GSes。也就是说,然后可以基于正在提交请求的GSes来分配每种源类型下的分配的资源。
在实施方式中,如果需要的话,源分类可以用于基于源的设置的配额或上限来实施限制和节流。例如,源可以设置其在例如一个月的时间段内可以使用多少资源的配额或上限。因此,全局BG可以基于该源的配额来限制或节制分配给该源的计算资源。
在操作745处,全局BG可以将其分配决定传递给本地BG。全局BG可以向每个本地BG传递其各自的允许的计算资源的数量。在实施方式中,全局BG可以传递M个计算资源的分配。在操作750处,本地BG可以接收其分配的通知,例如其被允许的计算资源的数量。
全局BG还可以维护要分配给本地BG的M个计算资源或M个计算资源的至少一部分的列表,例如作为持久列表。在实施方式中,全局BG可以基于每个本地BG允许的计算资源数量,将计算资源分配给本地BG。例如,全局BG可以将分配的计算资源的标识信息传递至每个本地BG。在另一实施方式中,全局BG可以维护M个计算资源的列表,并且可以允许每个本地BG要求达到其被允许的计算资源的数量的计算资源。全局BG可以维护分配给每个本地BG的计算资源的列表。在实施方式中,可以在元数据DB中维护计算资源及其分配的列表。例如,列表可以由全局BG在元数据DB中维护,并且不同的标识符可以用于识别计算资源是已分配还是空闲,如果是已分配的,则可以识别将其分配给哪个本地BG(或前台GS)。如下面进一步详细解释的,每个本地BG可以是能够释放计算资源,并且可以传递该释放的通知以更新列表。
图8A至图8B示出了根据一些示例实施方式的,用于由本地BG和全局BG动态分配计算资源的方法800的流程图。如图所示,方法800的部分可以由QC(例如,QC 512.1)、本地BG(例如,本地BG 514)、全局BG(例如,全局BG 550)执行。而且,如本文中所讨论的,本地BG与全局BG之间的通信可以至少部分地经由元数据DB来执行。为了清楚和简洁起见,图8A至图8B中未示出元数据DB,但应当理解,本地BG和全局BG之间的通信可以全部或部分地经由元数据DB来执行。
在操作802处,响应于从全局BG接收到本地BG被允许的计算资源的数量(例如,操作750),本地BG可以将计算资源分配给其QC。可以使用例如最大-最小公平算法的公平分配算法来实现该分配。在实施方式中,本地BG可以在其分配决策中考虑查询请求的源。例如,本地BG可以基于当前允许的资源数量和请求排序,将计算资源分配给每个源。
在操作804处,本地BG可以将计算资源分配传递给QC。该分配可以包括用于计算资源的标识信息。在操作806处,QC可以从本地BG接收其计算资源的分配。在操作808处,QC可以与其分配的计算资源进行协调以执行相应的查询结果。QC可以直接与其分配的计算资源进行通信以调度作业。例如,QC可以将文件或成批文件分发到计算资源以进行处理。QC可以跟踪其分配的计算资源的性能。
在操作810处,本地BG可以在QC处监视状况,并且可以根据需要将计算资源重新分配给QC。例如,可以对QC进行轮询以将信息发送至本地BG。在操作812处,响应于通过QC对性能的监视,本地BG可以在被全局BG轮询之间的时间内将计算资源动态地重新分配给其各个QC。例如,该重新分配可以由本地BG周期地执行,例如每10秒或每30秒(与全局BG的每两分钟相比)。因此,与全局BG相比,本地BG可以以更快的速率和更大的柔性来分配和重新分配计算资源,从而优化了分配的计算资源的使用。此外,由于本地BG可以将其分配的计算资源列表及其对QC的分配存储在本地存储器中(例如,与元数据DB中的持久列表相比),因此可以提高改变QC的分配的速度。本地BG和QC可以重复操作804至812,直到达到在本地BG生成下一个当前本地需求的时间为止。
如上所述,可以周期性地(例如,每两分钟)轮询本地BG关于其对计算资源的当前需求。在操作814处,基于来自QC的监视的状况(例如,操作610至615、操作810),本地BG可以计算其用于前台服务的计算资源的当前本地需求(例如,操作620)。在操作816处,本地BG可以将其当前本地需求传递至全局BG,全局BG可以在操作818处从本地BG接收当前本地需求。在操作820处,全局BG可以与云资源提供者交互并且生成当前分配(例如,每个本地BG的当前允许的计算资源数量),如以上参照图7所讨论,例如,执行方法700或方法700的部分。
在操作822处,全局BG可以将其当前(修改的)分配决策传递至本地BG。例如,全局BG可以向每个本地BG传递其各自允许的计算资源的数量。在操作824处,本地BG可以接收其分配的通知,例如其被允许的计算资源的数量。本地BG可以相应地同步其关于当前允许的计算资源的数量的存储的信息。如果当前允许的资源数量已增加,则本地BG可以从由全局BG维护的列表中要求其他的计算资源,并且使用这些其他的计算资源来调度其作业。在操作826处,本地BG可以向其QC分配计算资源(或修改先前的分配)。
接下来,考虑减少了本地BG的允许的计算资源的数量的示例。例如,先前为本地BG分配了十个计算资源,但现在由全局BG为本地BG分配了八个计算资源——减少了两个。在该示例中,本地BG必须向全局BG释放两个计算资源。在操作828处,本地BG可以向QC发送指令以释放一个或更多个计算资源,并且QC可以在操作830处接收指令。在操作832处,QC可以确定要释放哪个计算资源。QC可以允许所选择的计算资源完成其当前操作,例如对文件或成批文件进行操作,并且可以停止将任何更多文件分发至所选择的计算资源,从而结束其对所选择的计算资源的使用。在操作834处,QC可以通知本地BG它不再使用哪个(些)所选择的计算资源(例如,释放的计算资源的标识信息),并且本地BG可以在操作836处接收该通知,并且可以在操作838将该信息传递给全局BG。
接下来,在操作840处,响应于接收到释放资源的通知,全局BG可以进一步实现其当前分配(例如,操作818)。例如,如果释放的计算资源将被分配给其他本地BG,则全局BG可以将该分配的通知传递至那些其他本地BG(如本文讨论的)。如果释放的计算资源将被释放回云资源提供者,则全局BG可以将该释放的通知传递至云资源提供者。可以相应地修改计算资源分配的列表。
此外,在一个或更多个部件发生故障的情况下,则用于分配控制的网络系统可以实现恢复过程。如本文所讨论的,用于分配控制的网络系统可以包括至少三个主要部件:1)QC,2)局部BG(或前太GSe),以及3)全局BG。如果QC发生故障,则本地BG可以检测到故障并且相应地修改查询计划。这可以涉及重新分配查询和计算资源。如果本地BG(或前台GS)发生故障,则全局BG可以清除该本地BG的信息,直到该本地BG恢复。并且如果全局BG发生故障,则可以从先前的对话或通信中恢复分配状态(例如,每个本地BG的当前需求、每个本地BG的当前允许数量),直到全局BG恢复。
图9示出了根据示例实施方式的呈现计算机系统的形式的机器900的图形表示,在该机器900内可以执行一组指令以使机器900执行本文所讨论的方法中的任何一个或更多个。具体地,图9示出了呈计算机系统的示例形式的机器900的图形表示,在该机器900内可以执行用于使机器900执行本文讨论的任何一个或更多个方法的指令916(例如,软件、程序、应用、小程序、app或其他可执行代码)。例如,指令916可以使机器900执行方法600、700和800中的任何一个或更多个的任何一个或更多个操作。作为另一示例,指令916可以使机器900实现图1至图8中的任何一个或更多个中所示的数据流的一部分。以这种方式,指令916将通用的、未编程的机器转换成特定的机器900(例如,远程计算装置106、访问管理系统110、计算服务管理器112、执行平台114、访问管理系统118、Web代理120、远程计算装置106),该特定的机器900被特别配置成以本文描述的方式执行所描述和示出的功能中的任何一个。
在替选实施方式中,机器900作为独立装置操作或者可以耦接(例如,联网)到其他机器。在联网部署中,机器900可以在服务器-客户端网络环境中以服务器机器或客户端机器的身份进行操作,或者在对等(或分布式)网络环境中作为对等机器进行操作。机器900可以包括但不限于服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本、智能电话、移动装置、网络路由器、网络交换机、网桥或能够顺序地或以其他方式执行指令916的任何机器,该指令1016指定要由机器900采取的动作。此外,虽然仅示出了单个机器900,但是术语“机器”还应被认为包括单独地或联合地执行指令916以执行本文中讨论的任何一种或更多种方法的机器900的集合。
机器900包括被配置成例如经由总线902彼此通信的处理器910、存储器930和输入/输出(I/O)部件950。在示例实施方式中,处理器910(例如,中央处理单元(CPU)、精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、射频集成电路(RFIC)、另一处理器或其任何合适的组合)可以包括例如可以执行指令916的处理器912和处理器914。术语“处理器”旨在包括多核处理器910,该多核处理器910可以包括可以同时执行指令916的两个或更多个独立的处理器(有时被称为“核”)。虽然图9示出了多处理器910,但是机器900可以包括具有单个核的单个处理器、具有多个核的单个处理器(例如,多核处理器)、具有单个核的多个处理器、具有多个核的多个处理器或者其任何组合。
存储器930可以包括主存储器932、静态存储器934以及存储单元936,其均诸如经由总线902而可由处理器910访问。主存储器932、静态存储器934和存储单元936存储实施本文所述的方法或功能中的任何一种或更多种的指令916。在由机器900执行指令916期间,指令916还可以全部地或部分地驻留在主存储器932内、在静态存储器934内、在存储单元936内、在处理器910中的至少一个内(例如,在处理器的缓冲存储器内)或者在其任何合适的组合内。
I/O部件950包括用于接收输入、提供输出、产生输出、发送信息、交换信息、捕获测量结果等的部件。包括在特定机器900中的特定I/O部件950将取决于机器的类型。例如,诸如移动电话的便携式机器很可能包括触摸输入装置或其他这样的输入机构,而无终端服务器(headless server)机器很可能不包括这样的触摸输入装置。将理解的是,I/O部件950可以包括图9中未示出的许多其他部件。根据功能对I/O部件950进行分组仅出于简化以下讨论的目的,并且分组决不是限制性的。在各种示例实施方式中,I/O部件950可以包括输出部件952和输入部件954。输出部件952可以包括可视部件(例如,诸如等离子显示面板(PDP)、发光二极管(LED)显示器、液晶显示器(LCD)、投影仪或阴极射线管(CRT)的显示器)、声音部件(例如,扬声器)、其他信号发生器等。输入部件954可以包括字母数字输入部件(例如,键盘、被配置成接收字母数字输入的触摸屏、光学键盘或其他字母数字输入部件)、基于指向的输入部件(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器或另一指向仪器)、触觉输入部件(例如,物理按钮、提供触摸或触摸手势的位置和/或力的触摸屏或其他触觉输入部件)、音频输入部件(例如,麦克风)等。
可以使用各种各样的技术来实现通信。I/O部件950可以包括通信部件964,该通信部件964可操作成分别经由耦接982和耦接972将机器900耦接至网络980或装置970。例如,通信部件964可以包括与网络980对接的网络接口部件或另一合适的装置。在又一示例中,通信部件964可以包括有线通信部件、无线通信部件、蜂窝通信部件和经由其他方式提供通信的其他通信部件。装置970可以是另一机器或各种外围装置中的任何一种(例如,经由通用串行总线(USB)耦接的外围装置)。例如,如上所述,机器900可以对应于以下中的任何一个:远程计算装置106、访问管理系统110、计算服务管理器112、执行平台114、访问管理系统118、Web代理120、并且装置970可以包括这些系统和装置中的任何其他装置。
各种存储器(例如,930、932、934和/或处理器910的存储器和/或存储单元936)可以存储由本文描述的方法或功能中的任何一种或更多种实施或利用的一组或更多组指令916和数据结构(例如,软件)。这些指令916在由处理器910执行时使各种操作实现所公开的实施方式。
如本文所使用的,术语“机器存储介质”、“装置存储介质”、“计算机存储介质”意指相同的介质,并且可以在本公开内容中互换使用。这些术语指的是存储可执行指令和/或数据的单个或多个存储装置和/或介质(例如,集中式或分布式数据库和/或相关联的缓存和服务器)。相应地,这些术语应被视为包括但不限于固态存储器以及光学和磁性介质,包括处理器内部或外部的存储器。机器存储介质、计算机存储介质和/或装置存储介质的具体示例包括如下:非易失性存储器,包括例如半导体存储器装置,例如可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、现场可编程门阵列(FPGA)和闪存装置;磁盘,例如内部硬盘和可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM磁盘。术语“机器存储介质”、“计算机存储介质”和“装置存储介质”明确地排除了载波、调制数据信号和其他这样的介质,所述载波、调制数据信号和其他这样的介质中的至少一些被涵盖在下面讨论的术语“信号介质”中。
在各种示例实施方式中,网络980中的一个或更多个部分可以是自组网网络、内联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线局域网(WLAN)、广域网(WAN)、无线广域网(WWAN)、城域网(MAN)、互联网、互联网的一部分、公共交换电话网(PSTN)的一部分、普通老式电话服务(POTS)网络、蜂窝电话网络、无线网络、Wi-Fi网络、另一类型的网络或者两个或更多个这样的网络的组合。例如,网络980或网络980的一部分可以包括无线或蜂窝网络,并且耦接982可以是码分多址(CDMA)连接、全球移动通信系统(GSM)连接或者另一类型的蜂窝或无线耦接。在该示例中,耦接982可以实现各种类型的数据传输技术中的任何一种,例如单载波无线电传输技术(1xRTT)、演进数据优化(EVDO)技术、通用分组无线服务(GPRS)技术、增强型数据速率GSM演进(EDGE)技术、包括3G的第三代合作伙伴计划(3GPP)、第四代无线(4G)网络、通用移动电信系统(UMTS)、高速分组访问(HSPA)、全球微波访问互操作性(WiMAX)、长期演进(LTE)标准、由各种标准制定组织限定的其他标准、其他远程协议或其他数据传输技术。
可以经由网络接口装置(例如,包括在通信部件964中的网络接口部件)使用传输介质并且利用多个公知的传输协议中的任意一种传输协议(例如,超文本传输协议(HTTP))通过网络980来发送和接收指令916。类似地,可以使用传输介质经由耦接972(例如,对等耦接)将指令916发送或接收至装置970。术语“传输介质”和“信号介质”意指相同的介质,并且可以在本公开内容中互换使用。术语“传输介质”和“信号介质”应被视为包括能够存储、编码或携带由机器900执行的指令916的任何无形介质,并且包括有助于这样的软件的通信的数字或模拟通信信号或者其他无形介质。因此,术语“传输介质”和“信号介质”应被视为包括任何形式的调制数据信号、载波等。术语“调制的数据信号”意指具有以例如将信息编码在信号中的方式来设置或改变其特征中的一个或更多个的信号。
在本公开内容中,术语“机器可读介质”、“计算机可读介质”和“装置可读介质”意指相同的介质并且可以互换地使用。这些术语被限定为包括机器存储介质和传输介质二者。因此,这些术语包括存储装置/介质和载波/调制的数据信号。
本文中描述的示例方法的各种操作可以至少部分地由被临时配置(例如,由软件)或永久配置成以执行相关操作的一个或更多个处理器来执行。类似地,本文所述的方法可以至少部分地是处理器实现的。例如,可以由一个或更多个处理器执行方法600、700和800的操作中的至少一些。某些操作的执行可以分布在一个或更多个处理器中,不仅驻留在单个机器中,而且可以跨多个机器部署。在一些示例实施方式中,一个或更多个处理器可以位于单个位置(例如,在家庭环境、办公室环境或服务器群内),而在其他实施方式中,处理器可以跨许多位置分布。
尽管已经参照特定示例实施方式描述了本公开内容的实施方式,但是将明显的是,在不脱离本发明的主题的更宽范围的情况下,可以对这些实施方式进行各种修改和改变。因此,说明书和附图应被视为说明性的而非限制性的。形成本文中的一部分的附图通过说明而非限制的方式示出了可以实践主题的特定实施方式。足够详细地描述了示出的实施方式,以使得本领域技术人员能够实践本文所公开的教导。其他实施方式可以被使用并且从中得到,使得可以在不偏离本公开内容的范围的情况下进行结构和逻辑替换和改变。因此,该具体实施方式不应以限制性意义理解,并且各种实施方式的范围仅由所附权利要求连同这样的权利要求所赋予的等同方案的完全范围来限定。
本发明的主题的这些实施方式可以在本文中单独地和/或共同地由术语“发明”指代,这仅为了方便并且不旨在将本申请的范围自愿地限制于任何单个发明或发明构思(如果实际上公开了不止一个发明或发明构思)。因此,尽管已经在本文中示出和描述了具体实施方式,但是应当理解,可以用被计算以实现相同目的的任何布置来替换所示出的具体实施方式。本公开内容旨在涵盖各种实施方式的任何以及全部调整或变型。当对上述描述进行回顾时,上述实施方式以及本文未具体描述的其他实施方式的组合对于本领域技术人员而言将是明显的。
在本文献中,在专利文献中常见的无量词修饰术语用于包括一个或多于一个,其独立于“至少一个”或“一个或更多个”的任何其他实例或用法。在本文献中,除非另有指示,否则术语“或”用于指非排他性的或,使得“A或B”包括“A但不包括B”、“B但不包括A”以及“A和B”。在所附权利要求中,术语“包括(including)”和“其中(in which)”被用作相应术语“包括(comprising)”和“其中(wherein)”的普通英语等同物。此外,在所附权利要求中,术语“包括”和“包含”是开放式的;也就是说,包括除权利要求中的这一术语之后列出的元素之外的元素的系统、装置、物品或过程仍然被认为落在该权利要求的范围内。
以下所编号的示例是实施方式。
示例1。一种方法,包括:由本地后台服务的一个或更多个处理器从多个查询协调器接收与查询请求有关的信息;更新针对计算资源的当前本地需求;将更新的当前本地需求传递至全局后台服务;从所述全局后台服务接收更新的当前允许的计算资源数量;并且将当前允许数量的计算资源分配给所述多个查询协调器,使得查询协调器直接与所分配的计算资源通信以执行查询请求。
示例2。根据示例1所述的方法,还包括:合并每个源的所述查询请求以生成每个源的需求;以及将所述每个源的需求传递至所述全局后台服务。
示例3。根据示例1至2中任一个所述的方法,还包括:在所述查询协调器处监视状况;以及根据所监视的状况,将所述当前允许的数量的计算资源重新分配至所述多个查询协调器。
示例4。根据示例1至3中的任一个所述的方法,还包括:从所述多个查询协调器接收与查询请求有关的更新信息;更新对针计算资源的所述当前本地需求;将更新的当前本地需求传递至所述全局后台服务;从所述全局后台服务接收更新的当前允许的计算资源数量;将所述更新的当前允许数量的计算资源分配给所述多个查询协调器。
示例5。根据示例1至4中任一个所述的方法,还包括:响应于所述更新的当前允许的计算资源的数量小于所述当前允许的计算资源数量,将释放分配的计算资源的指令发送至所述多个查询协调器之一;从所述多个查询协调器之一接收包括释放的计算资源的标识信息的通知;并且将所述释放的计算资源的标识信息传递至全局后台服务。
示例6。根据示例1至5中的任一个所述的方法,其中,计算资源包括机器的处理核。
示例7。一种方法,包括:由全局后台服务的一个或更多个处理器从多个本地后台服务接收针对计算资源的当前需求;基于接收到的对计算资源的当前需求,计算系统对计算资源的当前需求;基于计算出的系统的当前需求,向云提供者请求N个计算资源,所述云提供者控制计算资源池;从所述云提供者接收M个计算资源的分配;并且至少部分基于公平分配算法,将所述M个计算资源的至少一部分分配给所述多个本地后台服务。
示例8。根据示例7所述的方法,还包括:从所述多个本地后台服务接收对计算资源的周期性更新的当前需求;以及基于所述更新的当前需求,修改对所述多个本地后台服务的计算资源的分配。
示例9。根据示例7至8中任一个所述的方法,还包括:减少所述多个本地后台服务中的第一本地后台服务的计算资源的分配;从第一本地后台服务接收与释放所述第一本地后台服务的分配的计算资源之一有关的通知;以及将释放的计算资源分配给所述多个本地后台服务中的第二本地后台服务。
示例10。根据示例7至9中的任一个所述的方法,其中,计算所述系统对计算资源的当前需求还基于历史数据。
示例11。根据示例7至10中任一个所述的方法,其中,M小于N。
示例12。根据示例7至11中的任一个所述的方法,其中,所述公平分配算法包括最大-最小公平算法。
示例13。根据示例7至12中的任一个所述的方法,还包括:从所述本地后台服务接收每个源的需求信息,其中,将计算资源分配给所述多个本地后台服务还基于所述每个源的需求信息。
示例14。一种系统,包括:机器的一个或更多个处理器;以及存储指令的存储器,该指令在由所述一个或更多个处理器执行时使所述机器执行实现示例方法1至13中的任何一个的操作。
示例15。一种具有指令的机器可读存储装置,所述指令在由机器执行时使所述机器执行实现示例方法1至13中的任何一个的操作。
Claims (27)
1.一种方法,包括:
由本地后台服务的一个或更多个处理器从多个查询协调器接收与查询请求有关的信息;
基于与查询请求有关的所述信息和历史数据,生成针对计算资源的当前本地需求;
通过网络将针对计算资源的所述当前本地需求传送至全局后台服务;
从所述全局后台服务接收当前允许的计算资源数量;
将当前允许数量的计算资源分配给所述多个查询协调器,以使所述查询协调器直接与分配的计算资源通信以执行所述查询请求;
将更新的当前本地需求传送至所述全局后台服务;
从所述全局后台服务接收更新的当前允许的计算资源数量;
将更新的当前允许数量的计算资源分配给所述多个查询协调器;以及
响应于所述更新的当前允许的计算资源数量小于所述当前允许的计算资源数量,将释放分配的计算资源的指令发送至所述多个查询协调器中的一个查询协调器。
2.根据权利要求1所述的方法,还包括:
合并每个源的所述查询请求以生成每个源的需求;以及
将所述每个源的需求传送至所述全局后台服务。
3.根据权利要求1所述的方法,还包括:
在所述查询协调器处监视状况;以及
基于监视的状况,将所述当前允许数量的计算资源重新分配给所述多个查询协调器。
4.根据权利要求1所述的方法,还包括:
从所述多个查询协调器接收与查询请求有关的更新的信息;以及
更新针对计算资源的所述当前本地需求。
5.根据权利要求4所述的方法,还包括:
从所述多个查询协调器中的所述一个查询协调器接收包括释放的计算资源的标识信息的通知;以及
将所述释放的计算资源的标识信息传送至全局后台服务。
6.根据权利要求1所述的方法,其中,计算资源包括机器的处理核。
7.一种方法,包括:
由全局后台服务的一个或更多个处理器从多个本地后台服务接收针对计算资源的当前需求;
基于接收的针对计算资源的当前需求,计算系统对计算资源的当前需求;
基于计算出的所述系统的当前需求,向云提供者请求N个计算资源,所述云提供者控制计算资源池;
从所述云提供者接收M个计算资源的分配;
至少部分地基于公平分配算法,将所述M个计算资源的至少一部分分配给所述多个本地后台服务;
从所述多个本地后台服务接收针对计算资源的周期性更新的当前需求;
基于所述更新的当前需求,修改对所述多个本地后台服务的计算资源分配;
减少对所述多个本地后台服务中的第一本地后台服务的计算资源的分配;以及
从所述第一本地后台服务接收与释放所述第一本地后台服务的分配的计算资源之一有关的通知。
8.根据权利要求7所述的方法,还包括:
将所释放的计算资源分配给所述多个本地后台服务中的第二本地后台服务。
9.根据权利要求7所述的方法,其中,计算所述系统对计算资源的当前需求还基于历史数据。
10.根据权利要求7所述的方法,其中,M小于N。
11.根据权利要求7所述的方法,其中,所述公平分配算法包括最大-最小公平算法。
12.根据权利要求7所述的方法,还包括:
从所述本地后台服务接收每个源的需求信息,其中,将计算资源分配给所述多个本地后台服务还基于所述每个源的需求信息。
13.一种具有指令的机器存储介质,所述指令在由机器执行时使所述机器执行包括以下的操作:
由全局后台服务的一个或更多个处理器从多个本地后台服务接收针对计算资源的当前需求;
基于接收的针对计算资源的当前需求,计算系统对计算资源的当前需求;
基于计算出的所述系统的当前需求,向云提供者请求N个计算资源,所述云提供者控制计算资源池;
从所述云提供者接收M个计算资源的分配;
至少部分地基于公平分配算法,将所述M个计算资源的至少一部分分配给所述多个本地后台服务;
从所述多个本地后台服务接收针对计算资源的周期性更新的当前需求;
基于所述更新的当前需求,修改对所述多个本地后台服务的计算资源分配;
减少对所述多个本地后台服务中的第一本地后台服务的计算资源分配;以及
从第一本地后台服务接收与释放所述第一本地后台服务的分配的计算资源之一有关的通知。
14.根据权利要求13所述的机器存储介质,还包括:
将所述释放的计算资源分配给所述多个本地后台服务中的第二本地后台服务。
15.根据权利要求13所述的机器存储介质,其中,计算所述系统对计算资源的当前需求还基于历史数据。
16.根据权利要求13所述的机器存储介质,其中,M小于N。
17.根据权利要求13所述的机器存储介质,其中,所述公平分配算法包括最大-最小公平算法。
18.根据权利要求13所述的机器存储介质,还包括:
从所述本地后台服务接收每个源的需求信息,其中,将M个计算资源分配给所述多个本地后台服务还基于所述每个源的需求信息。
19.一种系统,包括:
多个本地后台服务,每个本地后台服务包括:
第一机器的一个或更多个处理器;以及
第一存储器,所述第一存储器存储指令,所述指令在由所述一个或更多个处理器执行时使得所述第一机器执行操作,所述操作包括:
从多个查询协调器接收与查询请求有关的信息;
基于与查询请求有关的所述信息,生成针对计算资源的当前本地需求;以及
全局后台服务,所述全局后台服务包括:
第二机器的一个或更多个处理器;以及
第二存储器,所述第二存储器存储指令,所述指令在由所述一个或更多个处理器执行时使得所述第二机器执行操作,所述操作包括:
从所述多个本地后台服务中的每一个本地后台服务接收针对计算资源的当前需求;
基于接收的针对计算资源的当前需求,计算系统对计算资源的当前需求;
基于计算出的所述系统的当前需求,向云提供者请求N个计算资源,所述云提供者控制计算资源池;
从所述云提供者接收M个计算资源的分配;以及
至少部分地基于公平分配算法,将所述M个计算资源的至少一部分分配给所述多个本地后台服务;
从所述多个本地后台服务接收对计算资源的周期性更新的当前需求;
基于所述更新的当前需求,修改对所述多个本地后台服务的计算资源分配;
减少对所述多个本地后台服务中的第一本地后台服务的计算资源分配;以及
从所述第一本地后台服务接收与释放所述第一本地后台服务的分配的计算资源之一有关的通知。
20.根据权利要求19所述的系统,还包括:
元数据数据库,其中,所述多个本地后台服务和所述全局后台服务之间的通信至少部分地经由所述元数据数据库进行。
21.根据权利要求19所述的系统,所述多个本地后台服务中的每一个本地后台服务的操作还包括:
将该本地后台服务的分配的计算资源分配给所述多个查询协调器,使得所述查询协调器直接与其各自的计算资源通信以执行所述查询请求。
22.根据权利要求21所述的系统,所述多个本地后台服务中的每一个本地后台服务的操作还包括:
在所述查询协调器处监视状况;以及
基于监视的状况,将分配的计算资源重新分配给所述多个查询协调器。
23.根据权利要求19所述的系统,其中,计算资源是机器的处理核。
24.根据权利要求19所述的系统,所述全局后台服务的操作还包括:
将所述释放的计算资源分配给所述多个本地后台服务中的第二本地后台服务。
25.根据权利要求19所述的系统,其中,计算所述系统对计算资源的当前需求还基于历史数据。
26.根据权利要求19所述的系统,其中,所述公平分配算法包括最大-最小公平算法。
27.根据权利要求19所述的系统,所述全局后台服务的操作还包括:
从所述本地后台服务接收每个源的需求信息,其中,将计算资源分配给所述多个本地后台服务还基于所述每个源的需求信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/874,388 | 2020-05-14 | ||
US16/874,388 US10860381B1 (en) | 2020-05-14 | 2020-05-14 | Flexible computing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113672359A CN113672359A (zh) | 2021-11-19 |
CN113672359B true CN113672359B (zh) | 2023-05-30 |
Family
ID=73653816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110485047.1A Active CN113672359B (zh) | 2020-05-14 | 2021-04-30 | 柔性计算 |
Country Status (3)
Country | Link |
---|---|
US (5) | US10860381B1 (zh) |
EP (1) | EP3910473B1 (zh) |
CN (1) | CN113672359B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019245416A1 (en) * | 2018-06-20 | 2019-12-26 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and supporting node for supporting process scheduling in a cloud system |
US11558312B2 (en) | 2019-08-09 | 2023-01-17 | Oracle International Corporation | System and method for supporting a usage calculation process in a cloud infrastructure environment |
US11546271B2 (en) | 2019-08-09 | 2023-01-03 | Oracle International Corporation | System and method for tag based request context in a cloud infrastructure environment |
US11397621B2 (en) | 2019-08-30 | 2022-07-26 | Oracle International Corporation | System and method for service limit increase for a multi-tenant cloud infrastructure environment |
US10860381B1 (en) | 2020-05-14 | 2020-12-08 | Snowflake Inc. | Flexible computing |
US11057491B1 (en) | 2020-07-17 | 2021-07-06 | Snowflake Inc. | Remote execution using a global identity |
US20220075546A1 (en) * | 2020-09-04 | 2022-03-10 | Pure Storage, Inc. | Intelligent application placement in a hybrid infrastructure |
US20220100758A1 (en) * | 2020-09-30 | 2022-03-31 | Snowflake Inc. | Autoscaling external function requests |
US11741007B2 (en) * | 2021-01-15 | 2023-08-29 | Neo4J Sweden Ab | Memory guards for continuous load-adaptive processing of transactions in databases |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103858118A (zh) * | 2011-08-08 | 2014-06-11 | 国际商业机器公司 | 在网络计算环境中动态地获得计算资源 |
CN106664321A (zh) * | 2014-08-08 | 2017-05-10 | 甲骨文国际公司 | 基于放置策略的计算资源分配 |
Family Cites Families (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004103457A2 (en) | 2003-05-14 | 2004-12-02 | Washington University In St.Louis | Enhanced micro-radiation therapy and a method of micro-irradiating biological systems |
US20050081210A1 (en) * | 2003-09-25 | 2005-04-14 | International Business Machines Corporation | Dynamic adjustment of system resource allocation during query execution in a database management system |
US7810098B2 (en) * | 2004-03-31 | 2010-10-05 | International Business Machines Corporation | Allocating resources across multiple nodes in a hierarchical data processing system according to a decentralized policy |
JP4377369B2 (ja) * | 2005-11-09 | 2009-12-02 | 株式会社日立製作所 | リソース割当調停装置およびリソース割当調停方法 |
US8046767B2 (en) * | 2007-04-30 | 2011-10-25 | Hewlett-Packard Development Company, L.P. | Systems and methods for providing capacity management of resource pools for servicing workloads |
US8402469B2 (en) * | 2008-04-08 | 2013-03-19 | Infosys Limited | Allocating resources for parallel execution of query plans |
US8265676B2 (en) * | 2008-08-07 | 2012-09-11 | Verizon Patent And Licensing Inc. | Hybrid network resource and policy management with mobility support |
US20100115095A1 (en) * | 2008-10-31 | 2010-05-06 | Xiaoyun Zhu | Automatically managing resources among nodes |
US20110270850A1 (en) * | 2010-04-30 | 2011-11-03 | Microsoft Corporation | Prioritization of Resources based on User Activities |
US8782240B2 (en) * | 2010-10-18 | 2014-07-15 | Avaya Inc. | Resource allocation using shared resource pools |
US9298550B2 (en) * | 2011-05-09 | 2016-03-29 | Cleversafe, Inc. | Assigning a dispersed storage network address range in a maintenance free storage container |
CN102958166B (zh) * | 2011-08-29 | 2017-07-21 | 华为技术有限公司 | 一种资源分配方法及资源管理平台 |
US9009317B2 (en) * | 2011-10-10 | 2015-04-14 | Verizon Patent And Licensing Inc. | System for and method of managing network resources |
US9244742B2 (en) * | 2012-05-31 | 2016-01-26 | Vmware, Inc. | Distributed demand-based storage quality of service management using resource pooling |
US9162593B2 (en) | 2012-07-03 | 2015-10-20 | Kids Ii, Inc. | Infant carrier and car safety seat with no-rethread harness adjustment |
US9166913B1 (en) * | 2012-08-15 | 2015-10-20 | Google Inc. | Systems and methods for balancing max-min fairness and throughput objectives in traffic engineering |
US8972579B2 (en) * | 2012-09-06 | 2015-03-03 | Hewlett-Packard Development Company, L.P. | Resource sharing in computer clusters according to objectives |
US10169090B2 (en) * | 2012-09-12 | 2019-01-01 | Salesforce.Com, Inc. | Facilitating tiered service model-based fair allocation of resources for application servers in multi-tenant environments |
US20140089510A1 (en) * | 2012-09-27 | 2014-03-27 | Fang Hao | Joint allocation of cloud and network resources in a distributed cloud system |
WO2014114727A1 (en) * | 2013-01-25 | 2014-07-31 | Nokia Solutions And Networks Oy | Unified cloud resource controller |
US9251115B2 (en) * | 2013-03-07 | 2016-02-02 | Citrix Systems, Inc. | Dynamic configuration in cloud computing environments |
US10574748B2 (en) * | 2013-03-21 | 2020-02-25 | Infosys Limited | Systems and methods for allocating one or more resources in a composite cloud environment |
US9584435B2 (en) * | 2013-08-05 | 2017-02-28 | Verizon Patent And Licensing Inc. | Global cloud computing environment resource allocation with local optimization |
US9880883B2 (en) * | 2013-08-05 | 2018-01-30 | Nec Corporation | Virtual resource control system determining new allocation of resources at a hub |
US10248977B2 (en) * | 2013-08-24 | 2019-04-02 | Vmware, Inc. | NUMA-based client placement |
US9686207B2 (en) * | 2014-01-29 | 2017-06-20 | Vmware, Inc. | Application service level objective aware demand estimation |
US10325032B2 (en) * | 2014-02-19 | 2019-06-18 | Snowflake Inc. | Resource provisioning systems and methods |
US20150372881A1 (en) * | 2014-06-23 | 2015-12-24 | Synchronoss Technologies, Inc. | Apparatus, method and system for dynamic allocation of shared cloud-based resources |
US11307884B2 (en) * | 2014-07-16 | 2022-04-19 | Vmware, Inc. | Adaptive resource management of a cluster of host computers using predicted data |
US9961017B2 (en) * | 2014-08-08 | 2018-05-01 | Oracle International Corporation | Demand policy-based resource management and allocation system |
US10740732B2 (en) * | 2015-05-20 | 2020-08-11 | Ripple Luxembourg S.A. | Resource transfer system |
US10042660B2 (en) * | 2015-09-30 | 2018-08-07 | Amazon Technologies, Inc. | Management of periodic requests for compute capacity |
CN108369529B (zh) * | 2015-10-23 | 2022-04-08 | 瑞典爱立信有限公司 | 通过反关联规则为实例分配主机 |
WO2017106379A1 (en) | 2015-12-14 | 2017-06-22 | Pivotal Software, Inc. | Workload management in distributed database systems |
US20200034073A1 (en) * | 2016-02-22 | 2020-01-30 | Nutanix, Inc. | Accelerating background tasks in a computing cluster |
WO2017190058A1 (en) * | 2016-04-28 | 2017-11-02 | Snowflake Computing Inc. | Multi-cluster warehouse |
CN107360202A (zh) * | 2016-05-09 | 2017-11-17 | 腾讯科技(深圳)有限公司 | 一种终端的接入调度方法和装置 |
US20170337275A1 (en) * | 2016-05-17 | 2017-11-23 | International Business Machines Corporation | Allocating computing resources |
US11416528B2 (en) * | 2016-09-26 | 2022-08-16 | Splunk Inc. | Query acceleration data store |
US10726009B2 (en) * | 2016-09-26 | 2020-07-28 | Splunk Inc. | Query processing using query-resource usage and node utilization data |
US11232100B2 (en) * | 2016-09-26 | 2022-01-25 | Splunk Inc. | Resource allocation for multiple datasets |
US10491541B2 (en) * | 2016-10-10 | 2019-11-26 | International Business Machines Corporation | Quota management protocol for shared computing systems |
US10118538B2 (en) | 2016-12-07 | 2018-11-06 | Ford Global Technologies, Llc | Illuminated rack |
CN108234581B (zh) * | 2016-12-22 | 2020-10-09 | 腾讯科技(深圳)有限公司 | 一种资源的调度方法和服务器 |
US10831553B2 (en) * | 2017-01-23 | 2020-11-10 | Huawei Technologies Co., Ltd. | System and method for fair resource allocation |
US20190018710A1 (en) * | 2017-07-11 | 2019-01-17 | Nicira, Inc. | Managing resource allocation of a managed system |
US11989194B2 (en) * | 2017-07-31 | 2024-05-21 | Splunk Inc. | Addressing memory limits for partition tracking among worker nodes |
US20200050607A1 (en) * | 2017-07-31 | 2020-02-13 | Splunk Inc. | Reassigning processing tasks to an external storage system |
US11921672B2 (en) * | 2017-07-31 | 2024-03-05 | Splunk Inc. | Query execution at a remote heterogeneous data store of a data fabric service |
US11030016B2 (en) * | 2017-12-07 | 2021-06-08 | International Business Machines Corporation | Computer server application execution scheduling latency reduction |
US10979318B2 (en) * | 2018-02-06 | 2021-04-13 | Oracle International Corporation | Enhancing resource allocation for application deployment |
US10728091B2 (en) * | 2018-04-04 | 2020-07-28 | EMC IP Holding Company LLC | Topology-aware provisioning of hardware accelerator resources in a distributed environment |
US10841369B2 (en) * | 2018-11-26 | 2020-11-17 | International Business Machines Corporation | Determining allocatable host system resources to remove from a cluster and return to a host service provider |
US11030009B2 (en) * | 2019-03-28 | 2021-06-08 | Atlassian Pty Ltd. | Systems and methods for automatically scaling compute resources based on demand |
US11055225B2 (en) * | 2019-10-01 | 2021-07-06 | Microsoft Technology Licensing, Llc | Cache and I/O management for analytics over disaggregated stores |
US10860381B1 (en) | 2020-05-14 | 2020-12-08 | Snowflake Inc. | Flexible computing |
DE202021102315U1 (de) | 2021-04-29 | 2021-08-20 | Snowflake Inc. | Flexibles Computing |
-
2020
- 2020-05-14 US US16/874,388 patent/US10860381B1/en active Active
- 2020-10-30 US US17/084,861 patent/US11055142B1/en active Active
-
2021
- 2021-04-29 EP EP21171199.9A patent/EP3910473B1/en active Active
- 2021-04-30 CN CN202110485047.1A patent/CN113672359B/zh active Active
- 2021-06-09 US US17/342,713 patent/US11513859B2/en active Active
-
2022
- 2022-10-28 US US18/050,608 patent/US11687373B2/en active Active
-
2023
- 2023-04-27 US US18/140,086 patent/US12106149B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103858118A (zh) * | 2011-08-08 | 2014-06-11 | 国际商业机器公司 | 在网络计算环境中动态地获得计算资源 |
CN106664321A (zh) * | 2014-08-08 | 2017-05-10 | 甲骨文国际公司 | 基于放置策略的计算资源分配 |
Also Published As
Publication number | Publication date |
---|---|
EP3910473B1 (en) | 2024-09-04 |
US20230079405A1 (en) | 2023-03-16 |
EP3910473A1 (en) | 2021-11-17 |
US11687373B2 (en) | 2023-06-27 |
US20210357263A1 (en) | 2021-11-18 |
US11055142B1 (en) | 2021-07-06 |
US10860381B1 (en) | 2020-12-08 |
CN113672359A (zh) | 2021-11-19 |
US12106149B2 (en) | 2024-10-01 |
US11513859B2 (en) | 2022-11-29 |
US20240078135A1 (en) | 2024-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113672359B (zh) | 柔性计算 | |
US11960505B2 (en) | Export data from tables into partitioned folders on an external data lake | |
CN113474765A (zh) | 用于任务的被管理的虚拟仓库 | |
CN116472527B (zh) | 用于控制数据库系统中的信息访问的受限视图 | |
US11461150B1 (en) | Autoscaling and throttling in an elastic cloud service | |
US12101294B2 (en) | Secure message exchange between deployments | |
CN116158058A (zh) | 使用全局身份的远程执行 | |
WO2021247286A1 (en) | Scalable query processing | |
US11645232B1 (en) | Catalog query framework on distributed key value store | |
US20220100758A1 (en) | Autoscaling external function requests | |
US20240143565A1 (en) | Observability loop | |
US20240104082A1 (en) | Event driven technique for constructing transaction lock wait history | |
US11973748B1 (en) | Token-based secure database query result sharing | |
US20240281288A1 (en) | Recommendation system for gateway dispatch mechanism and autoscaler | |
US11748327B2 (en) | Streams using persistent tables | |
WO2024091893A1 (en) | Continuous ingestion of custom file formats |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |