具体实施方式
附图示出了不同的计算环境和***实施方式。每个不同的计算环境和***通常称为DRM***。
图1示出了可以应用本发明各方面的一种示例分布式计算环境10。
在计算环境10中,一个或多个客户端设备103连接到计算***100,以便访问或使用计算***100中的一个或多个资源。计算***100可以是分布式计算***。在一些实施例中,DRM***为基础平台中间件,可以运行于分布式环境顶层。分布式环境可以包括不同种类的硬件和软件。示例DRM***包括IBMTM平台负载共享设施(Load Sharing Facility,LSF)、ApacheTMHadoop、Hadoop资源管理框架(Yet Another Resource Negotiator,YARN)、便携式批处理调度器(Portable Batch Scheduler,PBS)、OpenStackTM、HuaweiTMFusionSphereTM、FusionCubeTM和FusionInsightTM。
计算***100在一个组织中的用户和用户组之间分布共享计算资源,这些用户和用户组称为租户。拥有多个租户使资源管理器或管理员能够支持跨计算资源共享池、组或集群的各种工作负载。共享多租户环境可以具有多层租户结构,用于根据资源分布策略在应用、应用框架、不同用户和组,甚至不同业务线之间共享计算资源。
在一些实施例中,计算***100为DRM***配置基于规则的工作负载管理引擎。基于规则的工作负载管理引擎在DRM***的运行时环境中提供动态租户结构调整。
计算***100包括硬件和软件组件。例如,计算***100包括计算设备、处理器、网络、存储器、存储设备、网络设备、电源、许可证服务器(例如软件许可证服务器)、交换空间等等的组合。计算***100可以为异构或同构环境,并且可以具有运行不同或相似操作***的不同或相似硬件组件。在一些实施例中,计算***100可以是单个物理或逻辑设备,例如拥有一个或多个资源的单个计算设备或单个服务器。
计算***100包括一个或多个资源105,这些资源可以在多个工作负载或任务之间分享或者由多个工作负载或任务使用。一些资源105可以物理上或逻辑上关联于单个设备。其它资源105为可供计算***100中的多个设备使用的共享资源。
无论计算***100中的设备、网络、硬件、软件和/或其它资源的数量或配置如何,在一些实施例中,可以配置计算***100呈现为客户端设备103的单个图像或接口。计算***100用于运行来自客户端设备103和来自计算***100自身组件的工作负载。
计算***100将一个或多个处理器101包含在单个设备中或在计算***100中任意数量的设备之间分布。这些处理器101可以用于管理计算***100中的资源105。
在一些实施例中,计算***100向客户端设备103提供单个***图像,并且能够处理资源管理、工作负载管理和调度。
工作负载关联于DRM***中的不同租户。将用于运行工作负载的资源分配给关联租户。例如,工作负载包括批量作业(例如高性能计算(high performance computing,HPC)批量作业)、消息传递接口(Message Passing Interface,MPI)进程、串行和/或并行批量工作负载、实时分析、弹性应用(例如MapReduce)、长期运行服务、虚拟机、容器等。工作负载可以指将要在计算***100上运行或执行的任何任务、进程、作业、服务。
图2示出了计算资源在租户之间分布的另一示例***110。***110在分层队列中配置租户结构。***110包括分布式硬件和软件组件。还参照图1中的计算***100描述示例组件。
DRM***在多个租户之间分布、共享或分配资源。分配给租户的资源可以在其子租户之间分布。没有子租户的租户可以称为“叶租户”。
分层队列组织或构建一个组织中的租户,以管理租户工作负载的资源分布和分配。将分层队列配置并管理为资源分布策略或策略配置的一部分。例如,分层队列的资源分布策略指示资源池中资源的共享策略。示例资源分布策略包括用于分层队列的预留资源、最小保证资源分配、共享策略和最大资源分配。
分层队列为一个组织中的租户集群或群之间的资源共享策略定义了节点结构或节点图。一个租户映射到定义分层队列的数据结构中的一个节点。分层队列永久存储在数据存储设备中。租户节点连接到它们各自子租户的节点。分层队列提供一种租户结构,该租户结构可以关联于特定资源池以支持资源分布策略。
租户通过子租户直接或间接关联于任务或工作负载。属于特定高级租户的子租户称为高级租户的子级。具有子租户的高级租户称为子租户的父级。
分层队列租户映射到节点结构,其中每个节点代表一个租户。将关联于租户的工作负载或任务提交给分层队列中的节点,以便使用分配好的资源进行执行和部署操作。更新和修改分层队列中的租户节点,这需要对分层队列和工作负载进行对应更新或修改。DRM***110配置基于规则的工作负载管理引擎在DRM***的运行时环境中进行动态租户结构调整。
图3A示出了一种DRM***的示例分层队列111a。策略配置指示如何在租户的子租户之间分布租户的资源。可以将工作负载提交给叶租户或非叶租户。
分层队列111a表示一个公司109-1,其划分为表示为三个租户的三个部门:租户研发109-2、租户人力资源109-3和租户财务109-4。租户研发109-2进一步划分为两个团队或组:租户多伦多109-5和租户渥太华109-6。将工作负载107-1、107-2、107-3提交给叶租户,叶租户在示例分层队列111a中分别是租户多伦多109-5、租户渥太华109-6、租户人力资源109-3和租户财务109-4。示例叶租户多伦多109-5链接到示例工作负载107-1。示例非叶租户为具有子租户多伦多109-5的租户研发109-2。
分层队列111a在租户有更新时发生改变。可以根据需要更新和修改分层队列,例如为了响应公司109-1中的组织变化。这些更新的结果是叶租户可以变为非叶租户或者非叶租户变为叶租户。在更新租户组织时,希望有效重分配已经修改的租户的工作负载。
为了与公司运营一致,可以根据需要更新和修改分层队列中的租户。例如,内部部门最初可能只有一个团队,并且只有一个部门作为叶租户足以支撑来自该团队的所有工作负载。该部门可以扩大和开设新的办事处。分配给该部门的计算资源可以在团队之间共享。该部门的叶租户变为该部门的非叶租户,其中团队有三个叶租户。再例如,一个部门可能会从多个团队减少到只有一个团队。该部门的非叶租户可以更新到该部门和其仅一个团队的叶租户。
图3B示出了从修改图3A中的分层队列111a所得的示例分层队列111b。具体而言,租户109-5现在是一个非叶租户,并且具有两个子租户109-7、109-8。这两个子租户109-7、109-8为叶租户。先前关联于租户109-5的工作负载107-1作为工作负载107-1a、107-1b重新分布在两个叶租户109-7、109-8之间。
在一方面,本文描述的实施例使用计算***100、主服务器102和/或资源服务器104中的一个或多个来实施DRM***。DRM***具有基于规则的工作负载管理引擎,以便支持动态租户结构调整。该方法改善了现有DRM***的局限性。本文描述的实施例提供了一种设备、***和过程,从而在DRM***的运行时环境中动态调整分层队列并且重新分布关联于租户更新的工作负载。当修改租户组织时,基于规则的工作负载管理引擎查找具有字段“租户事件”的规则并返回查找到的规则,其中,该字段对应于租户更新。这些规则具有针对工作负载的预定义动作。DRM***可以应用针对各个工作负载的动作,以便调整租户结构。如果没有针对修改的预定义规则,则可能不会将工作负载重新分布给分层队列中的租户。这些工作负载称为孤立工作负载。默认规则具有将孤立工作负载移动到Lost&Found队列来运行的动作。Lost&Found队列是一个类似于分层队列中的租户的节点并且通过分布策略来分配资源。Lost&Found队列被视为分层队列中的租户节点。此外,DRM***定义了允许Lost&Found队列中的工作负载移回到租户节点的规则。DRM***能够定义关联于Lost&Found队列的规则。当有租户更新时,DRM***能够将工作负载从Lost&Found队列移回到租户节点。
本文描述的实施例提供了灵活性,因为这些实施例不需要重启DRM***,不需要中断工作负载来调整租户组织。孤立工作负载被保留下来并且在Lost&Found队列中运行。用于工作负载管理的预定义规则可以有效管理DRM***。
为了进行说明,将结合图2描述DRM***。***110包括主服务器102和多个资源服务器104。***110还包括一个或多个客户端计算设备106。资源服务器104提供的计算资源在客户端计算设备106之间共享。客户端计算设备106请求资源来执行工作负载,主服务器102分配资源来执行这类工作负载。
主服务器102根据支持灵活分布的分布策略来分配资源。***110的特点和分布策略支持可扩展性和进行调整。
主服务器102、资源服务器104和客户端计算设备106可以通过一个或多个网络107互连,这些网络可以是IPv4、IPv6、X.25、IPX兼容或类似网络,包括一个或多个有线或无线接入点。网络可以是局域网(local-area network,LAN)或广域网(wide-area network,WAN),例如互联网,并且可以与其它通信网络(例如GSM、GPRS、3G、4G、LTE网络)连接。
示例客户端计算设备106包括运行Microsoft Windows、苹果OS X或iOS、安卓、Linux或其它合适的操作***的个人计算机、平板电脑、智能电话,等等。客户端计算设备106被组织在关联计算设备的一个或多个租户组108中。租户组108均可以是,例如属于客户端***106中的特定客户端、部门、网络(例如LAN)或其它物理或逻辑分组的一组客户端设备106。如图所描绘,计算***106有三个租户组108,示为包括2个、3个和1个客户端计算***106的组。可以有更多或更少租户组108。
图4为示例计算***100、主服务器102、资源服务器104或客户端计算设备106中组件的框图。如图所描绘,计算***100、主服务器102、资源服务器104和客户端计算设备106中的每个包括一个或多个处理器120、存储器112、永久性存储设备114、网络接口116和输入/输出接口118。
每个处理器120可以为,例如任意类型的通用微处理器或微控制器、中央处理器(central processing unit,CPU)或图形处理器(graphics processing unit,GPU)、数字信号处理(digital signal processing,DSP)处理器、集成电路、现场可编程门阵列(fieldprogrammable gate array,FPGA)、可重构处理器、可编程只读存储器(programmableread-only memory,PROM)或者它们的任意组合。处理器120可以在软件的控制下操作,该软件存储在永久性存储设备114等中并且加载到存储器112中。网络接口116将主服务器102、资源服务器104或客户端计算设备106连接到网络107。I/O接口118还将主服务器102、资源服务器104或客户端计算设备106连接到一个或多个***设备,例如键盘、鼠标、USB设备、磁盘驱动器、GPU等等。
存储器112和存储设备114为非瞬时性计算机可读介质,可以包括位于内部或外部(例如联网或***)的任何类型的计算机内存中的一个或其组合,例如:硬盘、固态存储器(例如闪存、随机存取存储器(random-access memory,RAM))、只读存储器(read-onlymemory,ROM)、蓝光TM或只读光盘(compact disc read-only memory,CD-ROM)、电光存储器、磁光存储器、可擦除可编程只读存储器(erasable programmable read-only memory,EPROM)和电可擦除可编程只读存储器(electrically-erasable programmable read-onlymemory,EEPROM)、铁电RAM(Ferroelectric RAM,FRAM),等等。这些设备提供的存储器和存储设备可以是计算***100管理的资源。
在一些示例中,存储器112包括用于实施、控制或指示DRM组件、工作负载和/或资源的数据或指令集。存储器112包括用于配置一个或多个处理器来执行本文描述的任一方法和功能的指令或代码。
输入/输出(input/output,I/O)接口118可以使设备能够与一个或多个输入设备互连。网络接口116使设备能够:与其它组件(例如其它设备、DRM组件或资源)通信、与其它组件交换数据、访问和连接到网络资源,以为应用服务并执行其它计算应用。网络接口116连接到一个或多个有线或无线网络,这些有线或无线网络能够携带数据并且包括互联网、以太网、传统电话业务(plain old telephone service,POTS)线路、公共交换电话网络(public switched telephone network,PSTN)、综合业务数字网(integrated servicesdigital network,ISDN)、数字用户线(digital subscriber line,DSL)、同轴电缆、光纤、卫星、移动手机、无线电(例如Wi-Fi、WiMAX)、SS7信令网络、蓝牙TM、近场通信(near fieldcommunication,NFC)、固定线路、局域网、广域网、总线和其它,同时包括这些项的任意组合。
在一些示例中,一个或多个I/O接口118使设备能够与资源105(图1)或另一设备或***通信或互连,或者指示、控制或监控资源105(图1)或另一设备或***。
计算***100、主服务器102、资源服务器104和客户端计算设备106中的每一个可以是单独的物理设备。在其它实施例中,计算***100、主服务器102、资源服务器104和客户端计算设备106中的一个或多个及其组件为驻留在另一计算设备处的软件中的虚拟设备。虚拟机通过网络107可由计算***100、主服务器102、资源服务器104和客户端计算设备106中的其它设备接入。
图5更详细地描绘了示例资源服务器104中的组件。服务器104有两个处理器160。每个处理器160有10核。服务器104也有两个4GB内存模块112和带宽为32Gb/s的8TB存储设备114。服务器104也有两个GPU 120,命名为GPU1和GPU2,每个GPU有1024核和两个2GB内存模块。软件从***设备或从网络107加载到服务器102上。这种软件通过处理器160来执行。
图6描绘了用于计算***100、主服务器102、资源服务器104或客户端计算机106的这种说明性示例的操作***122和应用软件124。应用软件124在操作***软件122内运行以提供具体功能。
在一些示例中,运行于客户端计算设备106处的应用软件124包括一个或多个应用,例如文字处理器、电子制表程序、互联网浏览器、邮件客户端、数据库程序或数据库前端、照片或视频编辑器、2D或3D图形程序,等等。应用软件124还可以包括一个或多个模块,用于将主服务器102分配的工作负载引导至其中一个资源服务器104。这类组件可以是,例如应用程序接口(application program interface,API)或后台程序的形式,其将程序指令引导至主服务器102。后台程序软件应用运行在计算设备的后台中,以便在用户没有直接明确控制的情况下采取动作。例如,后台程序可以拦截对本地运行应用的调用并将该调用引导至主服务器102。
从租户计算设备引导至主服务器102的调用为通过网络107发送的消息或通知,包括标识待执行的工作负载和该工作负载所需资源的一个或多个数据字段。例如,工作负载会对中央处理器(central processing unit,CPU)的数量、存储器、存储设备、软件许可证、网络能力等有具体(例如最小)需求。
运行在资源服务器104处的应用软件124可以包括DRM代理。DRM代理监控资源可用性并报告给主服务器102。DRM代理可以用于接受来自租户或客户端计算设备106(例如通过主服务器102)的请求,以便执行和控制资源服务器104处的工作负载,和/或监控工作负载的生命周期。
图7示出了用于多租户工作负载的示例DRM***126,例如计算***100、主服务器102、资源服务器104和客户端计算设备106。
DRM***126包括资源收集单元128和资源调度器130。资源收集单元128通过网络107在资源服务器104处与DRM代理132通信并且在资源服务器104处接收工作负载。资源调度器130在客户端计算设备106处与DRM后台程序134通信以接收资源分配请求来运行工作负载。
资源可以包括,例如处理器或处理器核、存储器、存储设备、图形处理器、网络带宽、***设备,等等。资源服务器包括插件,用于配置资源服务器104来处理具体工作负载,例如来自具体应用或租户的工作负载。DRM代理132向资源收集单元128传送消息,这些消息指示这类插件的工作负载。
DRM代理的一些实例传送资源状态,而不是资源服务器104的计算资源。例如,DRM代理132包括许可证服务器加载器,用于传送软件许可证的状态(例如可用性)。DRM代理132包括存储服务器加载器,用于传送数据库等存储库的状态(例如可用性、写保护状态)。DRM代理132包括网络交换机加载器,用于传送带宽、网络交换机或网络交换机端口等网络资源的状态。DRM代理132驻留在资源服务器104处或主服务器102处。
资源收集单元128维护包含分层队列的资源分布策略的策略配置文件。资源分布策略是资源的记录,这些资源基于从DRM代理132接收的消息和用于管理租户的资源分配的分层队列而可用于计算***100中。在一些实施例中,策略配置文件还包含标识资源位置和租户位置的策略配置文件。例如,资源可以标识为驻留在网络107中的特定位置,例如在具体资源服务器104处,与特定网络交换机通信,或者驻留在特定服务器机架或集群、地理区域等中。
资源调度器130通过网络107从客户端计算设备106接收消息,这些消息指示资源需求或请求用户在客户端计算设备106处执行工作负载。消息标识,例如待运行的应用、待处理、待检索或待存储的数据,等等。客户端计算设备106为具有工作负载和关联资源请求的租户。
图8示出了另一示例DRM***,其中租户构建为分层队列144以表示资源分布策略。分层队列永久地存储在数据存储设备146中。
工作负载管理代理142或工作负载管理单元140检测到对多个租户中的一个租户进行动态更新,多个租户构建为分层队列144。该更新涉及具有至少一个工作负载的租户,该至少一个工作负载关联于该租户的资源请求。基于规则的工作负载管理引擎140用于检索针对关联于该租户的资源请求的工作负载的动作。工作负载管理代理142基于动态更新通过应用针对关联于该租户的资源请求的工作负载的动作来更新分层队列144的数据结构。该动作涉及将任务或工作负载传递到Lost&Found队列148。工作负载管理代理142在不中断执行工作负载的情况下进行更新。工作负载管理单元140基于更新后的分层队列来运行或调度工作负载。
图9描绘了一种示例分层队列。根租户包括属于特定组织的所有客户端计算设备106。根租户150占据顶部分层并对应于该组织。第二层包括两个子租户152,每个子租户对应于该组织内的业务单元。每个租户有一个或多个叶租户111,每个子租户包括一个或多个客户端计算设备106。
在一些实施例中,DRM***110支持多个组织。一个组织对应于一个根租户并且拥有根据自身租户层级进行分组的用户。例如,一个组织对应于第一根租户,并且可能具有对应于业务单元的第二层租户、对应于业务单元内部门的叶租户和部门内的各个用户。另一组织对应于第二根租户并且可能具有对应于城市或建筑物等地理位置的第二层租户、对应于每个位置处的部门的叶租户和属于各部门的各个用户。
客户端计算设备106可以通过连接到特定网络等方式永久地指配给租户。另外或可选地,租户可以定义为包含具有特定用户证书的特定用户集。在这类情况下,客户端计算设备106可以在输入用户证书时关联到组或子组。
图10A示出了DRM***的过程400A的流程图,图10B示出了基于规则的工作负载管理引擎的过程400B的流程图。过程400A、400B在DRM***的运行时环境中实施动态租户结构调整。为了进行说明,将结合计算***100来描述过程400A。然而,过程400A(或其方面)可以由图2的计算***110和其组件来实施。
在402处,计算***100处理租户组织的一个或多个更新。租户组织可以通过添加或移除租户等方式发生动态变化。例如,叶租户可能变为分层队列中的非叶租户,或者非叶租户变为叶租户。
租户结构变化可以通过将租户添加到分层队列中或从分层队列中移除租户来实现。例如,对于从叶租户到非叶租户的租户更新,计算***100可以将叶租户从分层队列中删除、将新的非叶租户添加到分层队列中以及将子租户添加到分层队列中。再例如,对于从非叶租户到叶租户的租户更新,计算***100可以删除子租户和非叶租户并且添加新的叶租户。
在一些实施例中,当修改租户组织时,租户更新对一个或多个工作负载产生影响。工作负载基于资源请求执行。分层队列定义了资源策略,用于分配资源来运行工作负载,从而响应于对应的资源请求。响应于租户更新,计算***100重新分布分层租户队列中的一个或多个工作负载并且基于修改后的分层队列来运行租户的工作负载。
参考图10A,在404处,计算***100通过向基于规则的工作负载管理引擎发出命令来确定更新动作。这些更新动作指示为了响应于租户更新而应该如何处理或重新分布工作负载。计算***100从基于规则的工作负载管理引擎接收对应动作。在406处,计算***100执行针对分层队列中的工作负载调整的动作,从而响应于租户组织更新。在408处,计算***100基于调整后的分层队列定义的资源分配来调度或运行工作负载。
如果存在对分层队列的租户组织的更新,则计算***100利用最新的租户组织更新和工作负载信息来生成对基于规则的工作负载管理引擎的警报。
参考图10B,在410处,基于规则的工作负载管理引擎从计算***100接收警报或租户更新通知。在412处,基于规则的工作负载管理引擎检索针对租户修改或更新所涉及的租户或工作负载的预定义规则。这些规则基于规则的任务匹配表达式字段来匹配租户更新。这些规则包括用于调整分层队列的动作。在414处,基于规则的工作负载管理引擎将动作从规则返回给计算***100。计算***100执行或应用针对每个工作负载的动作以调整分层队列。
基于规则的工作负载管理引擎可以针对租户使用预定义规则。例如,管理员或DRM***可以为每个租户定义规则。作为说明性示例,预定义规则可以有三个字段:租户事件、任务匹配表达式和动作。字段“租户事件”可以由DRM***用来评估该规则是否适用于租户修改。规则的任务匹配表达式可以用于过滤租户更新涉及的租户的目标工作负载。这些规则包括一个动作字段,该字段定义针对工作负载的动作以响应于租户修改的通知。
一个规则可以包括将租户修改映射到分层队列的多个租户的字段。例如,在402处删除或添加特定租户。当发生基于租户事件字段匹配规则的事件时,工作负载管理引擎将在412处检索该规则。匹配表达式定义工作负载的属性。工作负载的属性可以是,例如工作负载的用户、工作负载的ID、工作负载的创建时间,等等。管理员或计算***100可以定义应用于通过规则的匹配表达式选择的工作负载的多个动作。示例动作可以包括但不限于终止工作负载、移动工作负载、暂停工作负载,等等。
例如,基于规则的工作负载管理引擎定义了以下规则:
Company.R&D.Ottawa:<onEvent="delete company.R&D.Ottawa",User=John&&ID<1000",action="move to Company.R&D.Toronto"&&action="suspend">
示例规则具有将所有John的ID小于1000的工作负载移动到company.R&D.Toronto的动作以及当company.R&D.Ottawa从租户组织移除时暂停这些工作负载的动作。
再例如,基于规则的工作负载管理引擎定义了以下规则:
Company.R&D.Toronto:<onEvent="configuration updates Company.R&D.Toronto",User=Bob&&Status=PENDING",action="kill">
当管理员更新租户company.R&D.Toronto的配置时,示例规则终止所有Bob的处于待处理状态的工作负载。
另一示例示出了Lost&Found队列中的工作负载如何移回到正常租户队列。Lost&Found队列的示例规则为<onEvent="add company.R&D.Toronto.Markham",User=Charley,action="move to Company.R&D.Toronto.Markham">。
示例规则在添加company.R&D.Toronto.Markham队列时将用户Charley在Lost&Found队列中的所有工作负载移动到Company.R&D.Toronto.Markham。
图11示出了由计算***100实施的示例过程500的流程图。
在502处,发生分层队列的租户更新或修改。计算***100确定存在租户修改。示例租户更新包括添加新租户、移除现有租户、将现有租户移动到分层队列中的新位置,等等。租户更新涉及具有资源请求的一个或多个工作负载。一旦发生租户更新,计算***100就会向工作负载管理引擎发送通知。例如,计算***100可以检测到该更新并且生成该更新的对应通知以传输给基于规则的工作负载管理引擎。
在504处,基于规则的工作负载管理引擎标识适用于租户更新的租户规则。如上所述,每个规则具有一个用于评估特定规则是否适用于租户更新的“租户事件”字段。例如,该规则可以包括涉及工作负载以响应于租户更新的动作。该规则具有对应于租户更新以触发针对工作负载的动作的“租户事件”字段。
在506处,基于规则的工作负载管理引擎标识基于规则的任务匹配表达式来匹配工作负载的规则。“租户事件”字段用于标记适用于租户修改的规则。如上所述,每个规则可以具有用于过滤租户更新所涉及的租户的目标工作负载的“任务匹配”字段。
在508处,基于规则的工作负载管理引擎确定多个规则是否适用于租户更新所涉及的工作负载。如果多个规则适用于工作负载,则在510处,(例如策略配置中的)优先级配置或顺序可以定义规则的优先顺序。例如,规则的优先级顺序可以基于租户更新。作为示例优先级顺序,来自子租户的工作负载的规则可以替代来自其父租户的工作负载的规则。
在512处,基于规则的工作负载管理引擎返回针对有关租户更新的每个工作负载的动作。基于规则的工作负载管理引擎可以将每个工作负载的动作返回DRM***。基于规则的工作负载管理引擎可以是DRM***的插件或者可以具有与DRM***的通信链路。
图12示出了当从分层队列中删除租户时由计算***100中的组件和基于规则的工作负载管理引擎实施的示例过程的流程图。
在602处,从分层队列中删除租户。计算***100检测到租户删除操作并向基于规则的工作负载管理引擎发送通知。基于规则的工作负载管理引擎接收该通知。例如,计算***100可以检测到该删除操作并且生成该租户删除操作的对应通知以传输给基于规则的工作负载管理引擎。该通知可以标识一个或多个租户以及租户更新所涉及的一个或多个工作负载。
在604处,基于规则的工作负载管理引擎检索适用于租户删除的租户规则。基于规则的工作负载管理引擎可以处理规则的“租户事件”字段以评估特定规则是否适用于租户删除。基于规则的工作负载管理引擎查找适用于租户删除的所有规则。
在606处,基于规则的工作负载管理引擎确定是否存在适用于租户删除的任何规则。如果存在,在608处,基于规则的工作负载管理引擎基于规则的任务匹配表达式来检索匹配的工作负载,这些规则标记为适用于租户删除。基于规则的工作负载管理引擎可以使用规则的“任务匹配”字段,该字段用于过滤有关租户删除的租户的目标工作负载。如果不存在,在610处,基于规则的工作负载管理引擎应用默认规则将有关租户删除的所有工作负载移动到Lost&Found队列进行处理。如果管理员或基于规则的工作负载管理引擎没有定义租户删除的规则,将触发默认规则。该默认规则将已删除租户下的工作负载移动到Lost&Found队列。
在612处,基于规则的工作负载管理引擎确定多个规则是否适用于有关租户删除的工作负载。如果多个规则适用于工作负载,则在614处,(例如策略配置中的)优先级配置或顺序可以定义规则的优先顺序。
在616处,基于规则的工作负载管理引擎返回针对有关租户删除的每个工作负载的动作。
图13示出了由DRM***实施的示例过程700的流程图。
在702处,DRM***检测对分层队列中的租户的动态更新。该租户具有至少一个工作负载,该至少一个工作负载具有对重分布的资源请求。
在704处,DRM***接收一个规则,该规则定义针对关联于该租户的资源请求的工作负载的动作。如上所述,基于规则的工作负载管理引擎可以基于租户事件和任务匹配字段将该规则返回给DRM***。
在706处,DRM***基于动态更新来更新分层队列的数据结构。DRM***在没有终止或消除工作负载的情况下应用针对关联于该租户的资源请求的工作负载的动作。
在708处,DRM***使用更新后的分层队列所分配的资源来调度工作负载。
本文描述的实施例提供了与基于规则的工作负载管理引擎进行交互的DRM***,从而在租户结构动态变化或更新的情况下管理工作负载。管理员能够使用具有租户事件、工作负载和动作的字段的规则来动态更新队列层级。如果租户结构变化(例如将租户添加到优先级队列或从优先级队列中移除租户),基于预定义规则自动将一种动作应用到工作负载。基于规则的工作负载管理引擎为管理员管理工作负载。
如果基于规则的工作负载管理引擎没有针对工作负载的按优先级排列的多个规则的预定义规则或优先级排序,则Lost&Found队列可以用于保存孤立工作负载。Lost&Found队列可以由DRM***进行配置来运行工作负载。
本文描述的实施例提供了一种具有改进的Lost&Found队列的DRM***。在一方面,所有租户中,Lost&Found队列可能具有资源分配的最低优先级。只要有空闲资源分配给Lost&Found队列,仍然可以调度Lost&Found队列中的孤立工作负载。DRM***将Lost&Found队列中的孤立工作负载移回到正常的分层队列。例如,当发生某些租户事件时自动将孤立工作负载移回到分层队列中的租户节点。Lost&Found队列也被认为是分层队列中的节点,并且具有关联规则和分配资源。当发生租户更新时,规则触发工作负载移回到正常的租户队列。
本文描述的实施例提供了一种灵活的DRM***,使得可以更新分层队列同时使用分层队列分配的可用资源来运行工作负载。
在一方面,本文描述的实施例可以实施Lost&Found队列,用于关于租户更新的工作负载。例如,无法找到匹配动作的孤立工作负载的默认行为可以用于DRM***以将工作负载移动到DRM***100中的Lost&Found队列。如果所需资源可用,则Lost&Found队列中的工作负载可以继续运行。在一些示例中,管理员可以为Lost&Found队列配置规则。DRM计算***100将工作负载移出Lost&Found队列并且移回到关联租户。
在另一方面,本文描述的实施例可以提供一种基于规则的工作负载管理引擎和DRM***100,其在运行有关对分层队列中的租户进行更新的工作负载时支持动态租户结构调整。基于规则的工作负载管理引擎和DRM***100可以在运行时环境中更新租户组织。
在一方面,本文描述的实施例可以提供一种基于规则的工作负载管理引擎和DRM***100。当发生租户事件时,自动将为租户定义的规则应用于对应工作负载。自动调整有助于减少管理员的管理工作量。例如,管理员不需要手动将孤立工作负载移回到正常分层队列。也可以使用预定义规则实现相同目标。
本文描述的实施例可以提供一种基于规则的工作负载管理引擎和DRM***,其可以在运行时环境中更新租户组织。本文描述的实施例可以提供一种基于规则的工作负载管理引擎和DRM***,其可以在运行工作负载时移除或添加租户。本文描述的实施例可以提供一种基于规则的工作负载管理引擎和DRM***100,其支持预定义规则并且可以将预定义动作应用到对应工作负载。这有助于减少管理员的维护工作量。
本文中所公开的实施例可通过使用硬件或软件或其某一组合而实施。基于此类理解,技术方案可以软件产品的形式实施。软件产品可以存储在非易失性或非瞬时性存储介质中,非易失性或非瞬时性存储介质可以是只读光盘(compact disk read-only memory,CD-ROM)、USB闪存盘、移动硬盘、闪存、硬盘等。软件产品包括使计算设备(计算机、服务器、大型主机或网络设备)能够执行本文所提供的方法的多个指令。
可将程序代码应用于输入数据以执行本文描述的功能并生成输出信息。该输出信息应用于一个或多个输出设备。在一些实施例中,通信接口可以是网络通信接口。在组合元件的实施例中,通信接口可以是软件通信接口,例如用于进程间通信的软件通信接口。在其它实施例中,可存在实施为硬件、软件和/或其组合的通信接口的组合。
每个计算机程序可存储在存储介质或设备(例如,ROM、磁盘、光盘)上,可由通用或专用可编程计算机读取,用于在计算机读取该存储介质或设备时配置且操作所述计算机以执行本文描述的过程。***的实施例也可以考虑实施为配置有计算机程序的非瞬时性计算机可读存储介质。如此配置的存储介质使计算机以特定和预定方式进行操作,从而执行本文描述的功能。
此外,所描述的实施例的***和方法能够分布在包含物理非瞬时性计算机可读介质的计算机程序产品中,该介质带有针对一个或多个处理器的计算机可用指令。该介质可以各种形式提供,包含一个或多个磁盘、光盘、磁带、芯片、磁性和电子存储介质、易失性存储器、非易失性存储器等等。非瞬时性计算机可读介质可包含所有计算机可读介质,除了瞬时传播信号。术语“非瞬时性”并不旨在排除主存储器、易失性存储器、RAM等计算机可读介质。存储其上的数据可仅进行临时存储。计算机可用指令还可呈各种形式,包含编译的和非编译的代码。
本发明可能大量提及服务器、服务、接口、端口、平台或由硬件设备形成的其它***。应了解,此类术语的使用被认为表示具有用于执行软件指令的至少一个处理器的一个或多个设备,所述软件指令存储在计算机可读的有形的非瞬时性介质上。应进一步了解,所公开的基于计算机的算法、过程、方法或其它类型的指令集可实施为包括非瞬时性有形的计算机可读介质的计算机程序产品,所述计算机可读介质存储致使处理器执行所公开的步骤的指令。
本文描述了各种示例实施例。虽然每个实施例表示发明元件的单个组合,但发明主题视为包含所公开的元件的所有可能组合。因此,如果一个实施例包括元件A、B和C,第二实施例包括元件B和D,则还要考虑发明主体包括A、B、C或D的其它剩余组合,即使未明确公开。
本文描述的实施例通过物理计算机硬件实施例实施。本文描述的实施例提供适用的物理机器,尤其是计算设备、服务器、处理器、存储器、网络等配置好的计算机硬件布置。举例来说,本文描述的实施例是针对计算机装置以及由计算机通过电子数据信号的处理和转换而实施的方法。
本文描述的实施例可涉及通过特别配置以实施各种动作的计算设备、服务器、接收器、发射器、处理器、存储器、显示器、网络。本文描述的实施例是针对用于处理和转换表示不同类型的信息的电磁信号的电子机器。本文描述的实施例普遍地且一贯地涉及机器及其用途;且本文描述的实施例在与计算机硬件、机器、各种硬件组件一同使用之外没有意义或实际可应用性。
使用心理步骤等把通过特别配置以实施各种动作的计算设备、服务器、接收器、发射器、处理器、存储器、显示器、网络替换成非物理硬件可能极大影响所述实施例起作用的方式。
此类硬件限制明显是本文描述的实施例的必要元件,且其在对本文描述的实施例的操作和结构没有实质影响的情况下无法省去或替换成期望装置。所述硬件对于本文描述的实施例是必要的,且并非仅用于迅速地以有效方式执行步骤。
虽然已详细地描述了本发明及其优点,但是应理解,可以在不脱离如所附权利要求书所界定的本发明的情况下对本发明做出各种改变、替代和更改。
此外,本发明的范围并不局限于说明书中所述的过程、机器、制造、物质组分、构件、方法和步骤的特定实施例。所属领域的一般技术人员可从本发明中轻易地了解,可根据本发明使用现有的或即将开发出的,具有与本文所描述的相应实施例实质相同的功能,或能够取得与所述实施例实质相同的结果的过程、机器、制造、物质组分、构件、方法或步骤。相应地,所附权利要求范围旨在包括这些流程、机器、制造、物质组分、构件、方法或步骤。