多租户分布式系统中的基于工作流的调度和批处理的制作方法

文档序号:26743862发布日期:2021-09-23 00:57阅读:187来源:国知局
多租户分布式系统中的基于工作流的调度和批处理的制作方法
多租户分布式系统中的基于工作流的调度和批处理
1.背景
2.计算资源分配的可扩展性和公平性是多租户分布式应用的持续技术挑战。传统的分布式应用是单租户的,即每个部署服务于单个客户,并且因此公平性不是问题。而且,虽然可扩展性是顾虑,但由于具有单个客户的性质,单租户应用具有更可预测和更稳定的资源需求。
3.多租户应用(其中每个部署服务于多个客户)容易将资源过度分配给一个租户并使其余租户缺乏资源。这种缺乏公平性导致缺乏资源的租户的不良用户体验。同时,多租户应用往往具有比单租户应用更高的工作负载,并且因此扩展往往是更大的挑战。
4.多租户应用通常被部署到服务器场——计算节点、存储、网络带宽和其他计算资源的集合。为了高效地利用计算节点,应用可将工作项排队以供计算节点消耗。当计算节点完成工作项时,其向队列请求另一工作项。以此方式,可使计算节点保持忙碌,从而提高应用效率。
5.然而,一些租户可能在短时间段内请求数千甚至数百万次操作。将待处理的这些操作顺序地排队可能会一次拖延其余租户达数分钟或甚至数小时。这种不公平导致不良客户体验,并且取决于服务水平协定是否到位而可能具有财务后果。使其余租户缺乏资源还可能导致服务器场不太高效地执行,因为受拖延租户的用户可能会多次重试其受拖延的操作,从而消耗附加带宽和处理能力。在严重的情形中,重试可能会消耗过多的带宽和处理能力,以至于分布式应用崩溃并需要被重启。
6.扩展多租户应用的一项挑战是高效且正确地处理具有依赖关系的操作。例如,如果因应用而异的操作(例如,在电子邮件应用中重命名邮箱)在租户级操作(例如,重命名与电子邮件应用相关联的租户)正在进行的情况下被执行,则其可能导致数据损坏。同时,虽然按部就班地依次处理来自给定租户的每个操作可避免正确性问题,但性能以及因此可扩展性将被削弱。
7.本文所做出的本公开正是关于这些和其他考虑事项而提出的。本文中所要求保护的主题不限于解决任何缺点或仅在诸如以上所描述的环境那样的环境中操作的各实施例。相反,提供本背景仅用于解说其中可实践本文中所描述的一些实施例的一个示例性技术领域。
8.概述
9.所公开的配置的一个目标是对用户请求的操作进行负载平衡。负载平衡可部分地通过批处理所请求的操作来达成。通过民主地执行来自不同租户的批量操作,提高了资源利用公平性。
10.在一些配置中,从租户接收的操作请求被作为工作项添加到执行队列。工作项可被成批地添加。在一个或多个计算节点已处理完一批之后,另一批可被添加到执行队列。通过不对下一批进行排队直至当前批被处理,其他租户有时间使其操作添加到执行队列,从而促进对计算资源的公平访问。各批是按最大化吞吐量而不会冒数据损坏的风险的方式来被选择的。
11.例如,租户管理员可能希望重命名被托管在协作应用中的所有网页。为此,租户管理员可针对每个网页发送重命名操作请求。对于大型租户,这可能相当于数百万次重命名请求。如果这些操作在它们到达时被添加到应用的执行队列,则可能会消耗所有服务器场资源来为单个租户执行操作达令人无法接受的长时间段。随着数百万次操作被处理,其他租户将缺乏资源。
12.为了解决这个顾虑,在一种配置中,操作首先被作为工作项添加到因租户而异的工作项队列(下文称为“租户队列”)。已被添加到租户队列的操作被视为已调度,因为该操作被调度成在稍后时间执行。操作在租户队列中等待,直至它们一次一批地移动到执行队列以供处理。在一些配置中,租户队列和执行队列被存储在相同数据库表(使用“operationtype(操作类型)”列来区分给定工作项属于哪个队列)中。
13.可通过一种新颖工作项——租户调度工作项(下文称为“租户调度器”)将被调度操作从租户队列移动到执行队列。租户调度器可以与操作和其他工作项一起被放置在执行队列中。当由计算节点执行时,租户调度器从该租户的队列中选择一批被调度操作并将它们添加到执行队列。租户调度器随后将其自己重新添加到执行队列,从而导致其自己在该批中的所有操作都已开始之后被再次执行。以此方式,租户调度器迭代地将各批操作添加到执行队列。在租户调度器的迭代之间的干预时间内,其他租户有机会将其自己的操作排队,从而允许公平地访问服务器场资源。
14.在一些配置中,租户调度器可按照操作被添加到租户队列的顺序对操作进行批处理,即无需重新排序或跳过操作。租户调度器可将操作添加到批中,直至满足若干条件之一。一旦满足条件之一,租户调度器便可将这批操作移动到执行队列。
15.在一些配置中,当执行队列中的操作的数目加上批中已有的操作的数目大于或等于经定义的数目时,满足一个条件。当执行队列中的操作的数目加上正在进行的操作的数目加上批中已有的操作的数目大于或等于经定义的数目时,满足类似条件。经定义的数目可被校准以在以下两者之间进行平衡:批处理较大数目的操作的效率与使其他租户缺乏资源的缺点。实践中所使用的经定义的数目的一个值是100,尽管类似地设想了任何其他值。
16.在一些配置中,如果一操作与已在进行中的操作、经排队的操作或添加到批中的操作并行地执行可能导致数据损坏时,则满足一个条件。租户调度器可通过将租户队列头部的操作的类型与正在进行中的操作、在执行队列中的操作或已添加到批中的操作的类型进行比较来检测数据损坏的可能性。例如,如果因应用而异的操作(诸如重命名电子邮件应用中的文件夹)在租户级操作(例如,租户重命名、租户移动等)正在进行的情况下被执行,则其可能导致数据损坏。如此,如果租户调度器在租户级操作正在进行中、在执行队列中或已添加到批中的情况下遇到因应用而异的操作,则租户调度器可停止将操作添加到批中。
17.在一些配置中,每当租户级操作正在进行中——即租户级操作正由计算节点执行,便满足一个条件。通过在租户级操作正在进行时不批处理任何操作,租户级操作被序列化,即进行中的租户级操作被允许在另一租户级操作可被添加到执行队列之前完成。类似地,因应用而异的操作不被添加到执行队列,直至进行中的租户级操作完成。这防止数据损坏,因为因应用而异的操作可能被进行中的租户级操作无效。
18.附加地或替代地,当在执行队列中存在现有租户级操作并存在一个或多个进行中的因应用而异的操作时,满足另一条件。在该场景中,进行中的因应用而异的操作将被允许
完成,在这之后租户级操作将执行。根据上面描述的“当租户级操作正在进行时不做任何事”的规则,租户级操作随后将在任何类型的另一被调度操作被添加到执行队列之前完全地执行。
19.通过遵守上面列出的部分或全部条件,租户调度器可在吞吐量需求与数据完整性需求之间进行平衡。具体地,可被安全地并行执行的操作被允许这么做,而潜在的破坏操作则被串行执行。如此,除了确保跨租户的公平性之外,如本文所描述的对操作进行批处理以供执行提高了应用的可扩展性。还可根据所公开的技术的诸实现达成除在此描述的那些技术益处之外的技术益处。
20.应当理解,上述主题也可被实现为计算机控制的装置、计算机进程、计算系统或诸如计算机可读介质等制品。通过阅读下面的详细描述并审阅相关联的附图,这些及各种其他特征将变得显而易见。提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的概念的选集。
21.本概述既不旨在标识所要求保护的主题的关键特征或必要特征,本概述也不旨在被用来限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开的任一部分中提及的任何或所有缺点的实现。
附图说明
22.参考附图来描述具体实施方式。在附图中,附图标记最左边的(一个或多个)数位标识该附图标记首次出现的附图。不同附图中的相同的附图标记指示类似或相同的项。对多个项中的个体项做出的引用可使用带有字母序列的字母的附图标记来指代每个个体项。对项的一般引用可使用不带字母序列的特定附图标记。
23.图1是解说如本文所公开的包含工作流调度器的分布式协作应用的框图。
24.图2是解说与分布式协作应用相关联的示例租户列表的框图。
25.图3a是在站点重命名操作和/或租户重命名操作已发生之前由协作服务器生成的网页的图解。
26.图3b是在站点重命名操作和/或租户重命名操作已发生之后由协作服务器渲染的网页的图解。
27.图4是解说工作流调度器将从多个租户接收的操作排队的示例的框图。
28.图5是解说存储在相同工作项队列中的工作项执行队列和因租户而异的工作项队列的框图。
29.图6a是解说工作流调度器将所请求的操作添加到因租户而异的队列的框图。
30.图6b是解说工作流调度器将租户调度器工作项添加到执行队列的框图。
31.图7a是解说计算节点取回并执行租户调度器的框图。
32.图7b是解说计算节点执行租户调度器以将被调度操作从租户队列复制到执行队列的框图。
33.图7c是解说计算节点执行租户调度器以将其自己重新添加到执行队列的框图。
34.图7d是解说计算节点执行经排队的操作的框图。
35.图8a是解说工作流调度器在计算节点处理经排队的操作的情况下将所请求的操作添加到另一因租户而异的工作项队列的框图。
36.图8b是解说工作流调度器在计算节点处理经排队的操作的情况下将租户调度器添加到执行队列的框图。
37.图8c是解说计算节点在前一批操作已完成执行之后执行从执行队列取回的租户调度器的框图。
38.图8d是解说计算节点执行租户调度器以将被调度操作从租户队列复制到执行队列的框图。
39.图8e是解说计算节点执行租户调度器以将其自己重新排队到执行队列中的框图。
40.图8f是解说计算节点执行来自执行队列的另一租户调度器的框图。
41.图8g是解说计算节点执行另一租户调度器以将被调度操作添加到执行队列的框图。
42.图8h是解说计算节点执行另一租户调度器以将其自己重新添加到执行队列的框图。
43.图9是解说根据所描述的诸实现的示例操作规程的流程图。
44.图10是解说根据所描述的诸实现的示例操作规程的流程图。
45.图11是解说根据所描述的诸实现的示例操作规程的流程图。
46.图12是解说用于能够实现本文中所呈现的技术和技艺的各方面的计算设备的计算设备架构的计算机架构图。
47.详细描述
48.本文公开的技术提供了在多租户分布式应用中基于工作流的调度和批处理的实现中的改进。在一些实施例中,分布式应用在数据中心、服务器场或其他联网环境(包括提供虚拟化服务的那些)中实现。所公开的技术可提高对计算资源的访问的公平性。所公开的技术还可通过以不会导致数据损坏的方式增加并行化来增加性能和可扩展性。所公开的技术还可提供不同于本文描述的那些技术益处的其他技术益处。
49.图1是解说包含工作流调度器108的分布式协作应用106的框图100。分布式协作应用106被描绘为在位于计算云104a内的服务器场102a上执行。除了工作流调度器108之外,分布式协作应用106还可包括一个或多个租户110和工作项队列114。
50.图1解说了在世界范围主控多个服务器场104的多个计算云104。分布式协作应用106被描绘为部署到服务器场104a,但是分布式协作应用106可以与其他服务器场102中的分布式协作应用106的其他部署协作。分布式协作应用106是分布式的,因为其跨服务器场102中的多个计算设备执行——与其他服务器场中的其他部署协作是附加的分布层,但不是实现本文公开的一些技术所必需的。
51.图1还解说了用户114,其中的每个用户与分布式协作应用106的特定部署相关联。虽然没有物理限制阻止世界任何地方的用户与任何服务器场102中的部署相关联,但用户经常同处于与服务器场102相同的地理区域中的租户相关联。这种布置可被做出以满足不同司法管辖区的监管要求、用于行政管理便利等。
52.在一些配置中,分布式协作应用106被用来共享文档和文件、主控网站,并实现部署它的组织的法律、信息管理和过程要求。协作应用的示例包括microsoft sharepoint
tm
、google drive
tm
、atlassian confluence
tm
、box for business
tm
和drupal
tm
。然而,类似地设想了其他类型的分布式应用,包括分布式电子邮件服务器、web服务器、应用服务器、或可在
分布式环境中运行的任何其他类型的应用。
53.在一些配置中,分布式协作应用106是多租户的,因为单个部署服务于多个租户。这与其中单个部署服务于单个租户的单租户部署形成对比。多租户部署在通常在相同计算云104或服务器场102中的租户之间共享资源,而单租户部署为一个租户使用专用资源并且更有可能被安装在预置(on

premise)位置。多租户部署具有若干优点,包括归因于资源共享的更好的资源利用率。相比而言,单租户部署通常被过度置备以计及大量需求的罕见时段、在其他方面被浪费的容量。多租户部署的其他益处包括降低的行政管理开销、降低电力成本和专业地管理的安全性。
54.在一些配置中,租户指的是公司、政府或非营利实体、或已寻求使用分布式协作应用106的个体的任何其他集合。分布式协作服务器106的每个租户可以与名称(例如,“negacorp”)相关联。租户名称可出于行政管理职能的目的而用于标识租户。租户名称也可被并入租户的地址(诸如统一资源定位符(url))和存储在租户中的任何项中。
55.图2是解说与分布式协作应用106相关联的租户110的示例列表的框图200。在一些配置中,每个租户202表示使用分布式协作应用106的不同实体,例如“negacorp”、“posiindustries”、“antigroup”和“spinpartners”。虽然列出了四个租户,但这仅用于解说目的——分布式协作应用106的单个部署可支持数十万或数百万个租户。
56.在一些配置中,协作应用允许租户建立多个站点204。每个站点可表示可供租户组织内的团队使用的自包含功能性单元。例如,“negacorp”具有站点204a1“humanresources”、站点204a2“sales”、以及站点204a3“research”。每个站点可独立于其他站点操作。例如,为“humanresources”站点204a1存储的文档、文件、列表、网站和其他项可在逻辑上或物理上独立于为“sales”站点204a2存储的文档、文件、列表、网站和其他项。
57.在一些配置中,每个站点将项存储在不同数据库中。在另一配置中,来自租户内的不同站点的项被存储在相同数据库中,但基于站点名称而被分片到不同数据库分区中。在一些配置中,站点操作是区别于租户级操作的因应用而异的操作的一个示例,如下面结合图3b所讨论的。
58.图3a是在站点重命名操作和/或租户重命名操作已发生之前由协作服务器106生成的网页302的图解300。url 304a是用户可采用以导航到特定租户的特定站点的url的示例。在该示例中,站点被命名为“humanresources”,并且租户被命名为“negacorp”。
59.图3b是在站点重命名操作和/或租户重命名操作已发生之后由协作服务器106生成的网页302的图解300。具体地,租户名称“negacorp”已被名称“omnicorp”替换,并且站点名称“humanresources”已被“hrweb”替换。这些操作可彼此独立地执行,例如租户重命名操作本该在没有站点重命名操作的情况下被执行,且反之亦然。
60.分布式协作应用106可支持租户重命名和站点重命名以外的操作。一些操作可能是行政管理性的,如置备租户、置备站点、删除租户、删除站点、添加/更新用户等。其他操作可反映用户操作,诸如重命名文件、移动文件、更新联系人列表、编辑文档等等。
61.如上面简要讨论的,操作也可被分类为租户级或因应用而异。租户级操作与租户及其操作相关。租户级操作跨不同类型的应用即便不相同也通常是类似的。例如,租户置备、租户重命名和租户移动都同样适用于分布式协作应用,因为它们适用于分布式电子邮件应用、分布式源控制服务器应用等等。另一方面,因应用而异的操作是特定于应用类型
的。电子邮件服务器应用可支持文件夹重命名、日历操作和其他因电子邮件而异的操作,而协作服务器可允许站点被重命名或移动、或虑及文件、文档、列表和其他项被创建、删除、重命名等。
62.在一些配置中,分布式协作应用106支持给定租户内的多个站点。用户可能有权访问租户内的不同站点,但来自不同站点的文件、文档、列表和其他项可被存储在分开的贮仓中。例如,由租户置备的每个站点可具有相异的数据库、数据存储或用于存储数据的其他机构。在其他配置中,由租户置备的每个站点可使用单个数据库,但根据站点名称对项进行分片——即,将来自每个站点的项存储在相异的物理存储位置。
63.图4是解说工作流调度器108将从多个租户202接收的操作404排队的示例的框图400。在一些配置中,租户202的用户将操作404发送到工作流调度器108。单个用户(例如,管理员)可一次发送许多操作。例如,租户管理员可通过用单个命令删除租户内(或作为租户的一部分的站点内)的数百、数千或数百万个文档来强制执行文档保留策略。在其他情形中,并发地操作的许多租户用户可各自发送操作。使用结合图6

8描述的技术,工作流调度器108将来自不同租户的操作请求分成各批,从而将它们交织到工作项队列112中以供处理。
64.在一些配置中,工作项队列112处理由分布式协作应用106支持的任何类型的工作项。工作项的最直截了当的示例是所请求的操作,例如租户重命名、文档移动、准予用户访问权等。在一些情形中,所请求的操作可利用多个工作项来实现。例如,用于将用户迁移到不同地理区域的操作可涉及冻结用户的账户、恢复用户在目的地区域的账户、以及最后删除用户在始发区域的账户。这些动作中的每一者可由不同工作项执行,冻结和删除动作由本地分布式协作应用106执行,而恢复动作将由远程分布式协作应用执行。利用多个工作项实现的操作可包括租户调度器在将工作项添加到批之前将检查的每个工作项的条件。
65.另一类型的工作项是新颖的租户调度工作项,例如租户调度器408。租户调度器408由工作流调度器108创建以达成租户之间的公平性和改进的性能,如本文所讨论的。例如,取代将操作404b直接添加到工作项队列112以供计算节点执行,工作流调度器108已将租户调度器408b排入工作项队列112中。当由计算节点执行时,工作流调度器108可选择要添加到工作项队列112的一批被调度操作406b。以此方式,取代在从特定租户接收数千或甚至数百万个操作时将它们添加到工作项队列112从而提高使其他租户缺乏资源的可能性,租户调度器408迭代地将一批操作添加到工作项队列112,并且随后将其自己添加到工作项队列112以便在稍后时间被再次执行。
66.图5是解说存储在相同工作项队列112中的工作项执行队列502和因租户而异的工作项队列504b的框图500。在一些配置中,每个租户被指派因租户而异的工作项队列504,例如租户202a对应于因租户而异的工作项队列504a,租户202b对应于因租户而异的工作项队列504b等。
67.在一些配置中,工作项队列112被存储为数据库表。工作项数据库表中的每个条目可具有操作类型列(例如“operationtype”),该操作类型列可被用来确定工作项是工作项执行队列502(下文称为“执行队列”502)的一部分还是因租户而异的工作项队列504(下文称为“因租户而异的队列”504)之一。例如,如果工作项是在因租户而异的队列504中排队的操作,则“operationtype”列的值可以是“tenantqueue(租户队列)”。相反,如果
operationtype是“executionqueue(执行队列)”,则工作项当前在执行队列502中。
68.在一些配置中,作为工作项队列112底层的数据库表包括指示工作项与哪个租户相关联的父id列(例如

parentid(父id)’)。在一些情形中,“parentid”列是指已经、正在或将调度要执行的工作项的租户调度器。当

operationtype’列的值为

tenantqueue’时,

parentid’列可被用来确定工作项与哪个因租户而异的队列504相关联。
69.图6a是解说将所请求的操作404a添加到因租户而异的队列604a的工作流调度器108的框图600。可从租户202a的一个或多个用户接收所请求的操作404a。所请求的操作404a可全部在单个请求中到达、每请求一个操作地到达、或者每请求不止一个操作地到达。如所描绘的,工作流调度器108已接收到1,000,003个所请求的操作,并且已将它们全部排入对应的因租户而异的队列604a中。
70.图6b是解说工作流调度器108将租户调度器工作项608a1添加到执行队列602的框图600。图6b将租户调度器608a1解说为“negacorp租户调度器工作项608a1”。“negacorp”在图6b中被描绘以阐明租户调度器608a1与租户202a之间的关系——名称“negacorp”不一定被存储在执行队列602或底层工作项表中。
71.图7a是解说计算节点702b取回并执行租户调度器608a1的框图700。图7和图8延续了从图6开始的相同示例。在一些配置中,计算节点702是服务器场102a内的取回并执行来自执行队列602的头部的工作项的计算设备。在一些配置中,计算节点702是虚拟机,而在其他情形中,计算节点702是真实的物理机。计算节点702可迭代地检查执行队列602以获得可用的工作项并在可能的情况下执行它。以此方式,计算节点702可执行由租户请求的操作、租户调度器和其他工作项类型。
72.图7b是解说计算节点702b执行租户调度器108以将被调度操作406a从租户队列604a复制到执行队列602的框图700。在一些配置中,多达经定义的数目的被调度操作406a被取回并作为批被添加到执行队列602。如所描绘的,租户调度器608a1从因租户而异的队列604a取回100个被调度操作并将它们作为一批操作710a1(x100)复制到执行队列602。
73.图7c是解说计算节点702b执行租户调度器608a1以将其自己重新添加到执行队列602的框图700。在一些配置中,租户调度器608a1制作其自己的副本作为执行队列602中的租户调度器608a2。在其他配置中,租户调度器608a1创建与租户202a相关联的租户调度器608a的新实例。
74.在一些配置中,通过将租户调度器608a2重新添加到执行队列602,租户调度器608a2将被第二次执行。当其被执行时,租户调度器608a2将附加的被调度操作406a添加到执行队列602并且如果租户202a具有剩余未处理的操作,则可再次将其自己重新添加到执行队列602。以此方式,被调度操作406a被迭代地添加到执行队列602,从而允许其他租户访问执行队列602而不会缺乏资源。
75.图7d是解说计算节点702执行经排队的操作404a的框图700。如所描绘的,正被执行的经排队的操作404a是一批经排队的操作710a的一部分。如所描绘的,计算节点702a、702b和702c中的每一者已经下载并且正在执行经排队的操作404a1、404a2和404a3之一。原始的100个经排队的操作中的97个保留在该批操作710a中。
76.图8a是解说工作流调度器108在计算节点702处理经排队的操作404a的情况下将所请求的操作404b添加到因租户而异的工作项队列406b的框图800。在一些配置中,类似于
操作404a的接收,可从执行500,000个操作的单个用户接收操作404b、通过各自执行一个操作的500,000个用户接收操作404b,或者通过各自请求至少一个操作的某个更少数目的用户接收操作404b。
77.在一些配置中,操作404b被存储在因租户而异的工作项队列604b(下文称为“因租户而异的队列”406b)中。像因租户而异的队列604a一样,因租户而异的队列604b可被存储在与执行队列602相同的物理数据库表中。
78.在一些配置中,当所请求的操作404b正在因租户而异的队列604b中被排队时,计算节点702继续处理来自一批操作710a1的经排队的操作404a。在解说的时候,65个经排队的操作404a保留在这批操作710a1中。
79.图8b是解说工作流调度器108在计算节点702处理经排队的操作404a的情况下将租户调度器608b1添加到执行队列602的框图800。在一些配置中,工作流调度器108创建租户调度器608b1来调度操作404b的执行。
80.在一些配置中,当工作流调度器正在创建租户调度器608b1并将其添加到执行队列602时,计算节点702继续处理来自一批操作710a1的经排队的操作404a。在解说的时候,42个经排队的操作404a保留在这批操作710a1中。
81.图8c是解说计算节点702a在一批操作710a已完成执行之后执行从执行队列602取回的租户调度器608a2的框图800。
82.图8d是解说计算节点702a执行租户调度器608a2以将被调度操作406a从租户队列604a复制到执行队列602的框图800。在一些配置中,多达经定义的数目的被调度操作406a被从租户队列604a复制到执行队列602。如图8d中所解说,经定义的数目可以是100,并且由此100个被调度操作406a被选择为一批操作710a2。租户调度器608a2将这批操作710a2添加到执行队列602。
83.在一些配置中,如果一些经排队的操作404a保留在执行队列602中,则为这批操作710a2所选择的被调度操作406a的数目将减少,使得活跃的经排队的操作404的总数小于或等于经定义的数目。在一些配置中,活跃操作404或者正在进行中(即正由计算节点702之一执行),或者在执行队列602中排队。
84.在一些配置中,经排队的操作404a可从最后一批操作710a1起保持活跃,因为它们花费很长时间来完成执行。例如,如果来自一批经排队的操作710a1的操作404a之一完成执行所花费的时间比该批操作710a1的所有操作开始执行和租户调度器608a2开始选择下一批所花费的时间更久,则租户调度器608a2可为下一批选择99个被调度操作406。
85.图8e是解说计算节点702a执行租户调度器608a2以将其自己重新排队到执行队列602中的框图800。如上文结合图7c所讨论的,租户调度器608a2可将其自己复制到执行队列602中来作为租户调度器608a3,或者租户调度器608a2可创建类似的租户调度器608a3并将其添加到执行队列602。通过将其自己重新添加到执行队列602,租户调度器608a迭代地将被调度操作406a成批添加到执行队列602。
86.图8f是解说计算节点702c执行从执行队列602取回的另一租户调度器608b1的框图800。通过执行租户调度器608b1,由租户202b请求的操作404b能够被排队以供执行而无需首先执行从租户202a接收的所有1,000,003个操作。
87.图8g是解说计算节点702c执行租户调度器608b1以将被调度操作406b添加到执行
队列602的框图800。在一些配置中,被调度操作406b被添加到执行队列602来作为包括操作404b的一批操作710b1。当租户调度器608b1将被调度操作406b添加到执行队列602时,其他计算节点702正开始取回并处理位于执行队列602顶部的经排队的操作404a。
88.图8h是解说计算节点702c执行租户调度器608b1以将其自己重新添加到执行队列602的框图800。在一些配置中,至少计算节点702a和702b继续执行经排队的操作404a。
89.参考图9,操作900开始规程。操作900可由在服务器场102的计算节点702之一上执行的工作流调度器108来实现。操作900之后可以是操作902。操作902解说从租户接收要执行操作的请求。操作902之后可以是操作904。操作904解说将所接收的操作添加到因租户而异的工作项队列。
90.操作904之后可以是操作906。操作906解说决定租户调度工作项对于租户而言是否存在。如果答案为是,则操作906之后是操作910,其中操作900结束。如果答案为否,则操作906之后可以是操作908。操作908解说为租户创建租户调度工作项并将其添加到执行队列602。操作908之后可以是操作910,其中操作900结束。
91.参考图10,解说了根据本公开的示例操作规程。参考图10,操作1000开始该规程。操作1000可由在计算节点702上执行的租户调度工作项608来执行。操作1000之后可以是操作1002。操作1002解说取回并执行来自执行队列602的头部的租户调度工作项。
92.操作1002之后可以是操作1004。操作1004解说确定在因租户而异的队列604中调度的任何操作是否可被添加到执行队列602。如果答案为是,则操作1004之后可以是操作1006。如果答案为否,则操作1004之后可以是操作1010。操作1006解说将多达经定义的数目的被调度操作从因租户而异的队列604复制到执行队列602。
93.操作1008之后可以是操作1008。操作1008解说将租户调度工作项406重新添加到执行队列602。操作1008之后可以是操作1014,其中操作1000结束。操作1010解说确定从租户接收的任何操作是否仍正被执行。如果答案为是,则操作1010之后可以是操作1008。如果答案为否,则操作1010之后可以是操作1012。
94.操作1012解说将租户调度工作项标记为完成,因为从租户接收的所有操作都已完成执行。如果租户调度工作项完成,则其可被删除、释放或被允许进行垃圾回收。操作1012之后可以是操作1014,其中操作1000结束。
95.参考图11,解说了根据本公开的示例操作规程。参考图11,操作1100开始该规程。操作1100可由在计算节点702上执行的租户调度工作项608来执行。在一些配置中,操作1100执行决定框1004。
96.操作1100之后可以是操作1102。操作1102解说确定经排队的操作(和/或进行中的操作)的数目是否大于经定义的操作数目。如果是的话,则操作1102之后可以是操作1110。如果不是的话,则操作1102之后可以是操作1104。
97.操作1104解说确定针对租户的租户级操作是否已在进行中。如果是的话,则操作1104可行进到操作1106。如果不是的话,则操作1104可行进到操作1100。操作1106解说确定执行队列602是否包括经排队的租户级操作、以及一个或多个站点级操作是否在进行中。如果答案为否,则操作1106可行进到操作1108。如果答案为是,则操作1106可行进到操作1100。
98.操作1108解说按时间顺序将来自因租户而异的队列604的多达经定义的数目的被
调度操作添加到执行队列602——即,被调度操作按照它们被接收的顺序被添加到执行队列602。操作1108可行进到操作1112,其中过程1100结束。操作1110解说什么都不做——即忽略任何请求。通过什么都不做,操作1110允许已在执行队列602中的操作被处理。
99.还应当理解,所解说的方法可在任何时间结束且不必完整地执行。这些方法的部分或全部操作和/或基本等效的操作可通过执行计算机存储介质上所包括的计算机可读指令来执行,如在下文中所定义的。如在说明书和权利要求书中使用的术语“计算机可读指令”及其变型,在本文被用来广泛地包括例程、应用、应用模块、程序模块、程序、组件、数据结构、算法等等。计算机可读指令可以在各种系统配置上被实现,包括单处理器或多处理器系统、小型计算机、大型计算机、个人计算机、手持式计算设备、基于微处理器的可编程消费电子产品、其组合等等。
100.因此,应当理解,本文所描述的逻辑操作被实现为:(1)一系列计算机实现的动作或运行在计算系统上的程序模块;和/或(2)计算系统内的互连的机器逻辑电路或电路模块。该实现是取决于计算系统的性能及其他要求的选择问题。相应地,本文中所描述的逻辑操作被以不同方式称为状态、操作、结构设备、动作、或模块。这些操作、结构设备、动作和模块可以用软件、固件、专用数字逻辑及其任何组合来实现。
101.例如,所描述的方法的操作在本文中被描述为至少部分地由系统组件来实现,该系统组件可以包括应用、组件和/或电路。在一些配置中,系统组件包括动态链接库(dll)、静态链接库、由应用编程接口(api)实现的功能性、经编译的程序、经解释的程序、脚本或任何其它可执行指令集。数据可以以一种数据结构被存储在一个或多个存储器组件中。数据可通过对数据结构的链接或引用进行寻址来从数据结构检索。
102.尽管以下解说涉及图1

11的各组件,但是能够领会所描述的方法的操作也可按许多其他方式来实现。例如,方法可至少部分地由另一远程计算机或本地电路的处理器来实现。另外,方法的一个或多个操作可替换地或附加地至少部分地由单独工作的芯片组或与其他软件模块协同工作的芯片组来实现。适合于提供本文公开的技术的任何服务、电路或应用可被用于本文描述的操作中。
103.图12示出了能够实现上文描述的各实施例的各个方面的示例计算机架构的附加细节。图12所示的计算机架构例示了系统的各个方面,诸如传统服务器计算机、工作站、台式计算机、膝上型计算机、平板、嵌入在设备(诸如可穿戴设备、汽车、家庭自动化等)或其他计算设备中的计算或处理系统,并可被用于执行本文呈现的任何软件组件。例如,图12所示的计算机架构可用于执行上述任一软件组件。
104.计算机架构包括基板1202或“母板”,其是大量组件或设备可通过系统总线或其他电子通信路径所连接到的印刷电路板。在一个说明性实施例中,一个或多个中央处理单元(“cpu”)1204结合芯片组1206一起操作。cpu 1204可以是执行计算架构的操作所需的算术和逻辑操作的标准可编程处理器。
105.cpu 1204通过从一个分立的物理状态转换到下一状态来执行操作,该转换是通过操纵在各状态之间进行区分并改变这些状态的切换元件来实现的。切换元件一般可包括维持两个二进制状态之一的电子电路,诸如触发电路(flip

flop),以及基于一个或多个其他切换元件的状态的逻辑组合来提供输出状态的电子电路,诸如逻辑门。这些基本切换元件可被组合以创建更复杂的逻辑电路,包括寄存器、加法器

减法器、算术逻辑单元、浮点单元
等等。
106.芯片组1206提供cpu 1204与基板1202上的其余组件和器件之间的接口。芯片组1206可提供对用作计算机架构中的主存储器的ram 1208的接口。芯片组1206还可提供对诸如只读存储器(“rom”)1210或非易失性ram(“nvram”)之类的用于存储有助于启动计算设备并在各种组件和器件之间传送信息的基本例程的计算机可读存储介质的接口。rom 1210或nvram还可存储根据本文描述的实施例的计算架构的操作所必需的其他软件组件。
107.计算机架构可以使用通过诸如局域网之类的网络1214到远程计算设备和计算机系统的逻辑连接来在联网环境中操作。芯片组1206可包括用于通过诸如千兆比特以太网适配器等网络接口控制器(nic)1288提供网络连通性的功能性。nic 1288能够通过网络1214将计算机架构连接到其他计算设备。应当理解,多个nic 1288可存在于计算机架构中,以将该计算机连接到其他类型的网络和远程计算机系统。网络允许计算机架构与远程服务和服务器(诸如远程计算机1201)通信。如能够领会的,远程计算机1201可以是计算节点702或作为服务器农场102的一部分的任何其他计算设备。另外,如上所述,远程计算机1201可镜像和反映出存储在可以为本文描述的技术提供数据或处理的计算机架构和主机服务上的数据。
108.计算机架构可被连接到为计算设备提供非易失性存储的大容量存储设备1226。大容量存储设备1226可储存已经在本文更详细地描述的系统程序、应用程序、其他程序模块和数据。大容量存储设备1226可以通过连接到芯片组1206的存储控制器1215连接到计算机架构。大容量存储设备1226可由一个或多个物理存储单元构成。存储控制器1215可以通过串行附连scsi(“sas”)接口、串行高级技术附连(“sata”)接口、光纤通道(“fc”)接口或用于在计算机和物理存储单元之间物理地连接和传送数据的其他类型的接口与物理存储单元对接。还应理解,大容量存储设备1226、其他存储介质和存储控制器1215可包括多媒体卡(mmc)组件、emmc组件、安全数字(sd)组件、pci高速组件等等。
109.计算机架构可通过变换物理存储单元的物理状态以反映出被存储的信息来将数据存储在大容量存储设备1226上。在本说明书的不同实现中,物理状态的具体变换可取决于各种因素。这些因素的示例可以包括,但不仅限于:用于实现物理存储单元的技术,大容量存储设备1226被表征为主存储还是副存储等等。
110.例如,计算机架构可通过经由存储控制器1215发出以下指令来将信息存储至大容量存储设备1226:更改磁盘驱动器单元内的特定位置的磁特性、光存储单元中的特定位置的反射或折射特性,或者固态存储单元中的特定电容、晶体管或其他分立组件的电特性。在没有偏离本说明书的范围和精神的情况下,物理介质的其他变换也是可能的,前面提供的示例只是为了便于此描述。计算机架构可进一步通过检测物理存储单元内的一个或多个特定位置的物理状态或特性来从大容量存储设备1226中读取信息。
111.除了上述大容量存储设备1226之外,计算机架构还可访问其他计算机可读介质以存储和检索信息,诸如程序模块、数据结构或其他数据。尽管操作系统1227、工作流调度器108、其他数据和其他模块被描绘为存储在大容量存储设备1226中的数据和软件,但应当理解,这些组件和/或其他模块可至少部分地存储在计算机架构的其他计算机可读存储介质中。虽然对此处包含的计算机可读介质的描述引用了诸如固态驱动器、硬盘或cd

rom驱动器之类的大容量存储设备,但是本领域的技术人员应该明白,计算机可读介质可以是可由
计算机架构访问的任何可用计算机存储介质或通信介质。
112.通信介质包括诸如载波或其他传输机制等已调数据信号中的计算机可读指令、数据结构、程序模块或其他数据并且包含任何传递介质。术语“已调制数据信号”意指使其一个或多个特性以在信号中编码信息的方式被更改或设置的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、rf、红外及其他无线介质之类的无线介质。上述的任意组合也应包括在计算机可读介质的范围之内。
113.作为示例而非限制,计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。例如,计算机介质包括但不限于,ram、rom、eprom、eeprom、闪存或其他固态存储器技术、cd

rom、数字多功能盘(“dvd”)、hd

dvd、蓝光(blu

ray)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或能用于存储所需信息且可以由计算机架构访问的任何其他介质。为了声明的目的,短语“计算机存储介质”、“计算机可读存储介质”及其变型不包括波或信号本身和/或通信介质。
114.大容量存储设备1226可存储用于控制计算机架构的操作的操作系统1227。根据一个实施例,操作系统包括游戏操作系统。根据另一实施例,操作系统包括来自微软公司的操作系统。根据其他实施例,操作系统可包括可以从其相应的制造商获得的unix、android、windows phone或ios操作系统。应理解,也可利用其他操作系统。大容量存储设备1226可存储计算机架构所使用的其他系统或应用程序和数据,诸如上文描述的任何其他软件组件和数据。大容量存储设备1226还可存储本文未具体标识的其他程序和数据。
115.在一个实施例中,大容量存储设备1226或其他计算机可读存储介质用计算机可执行指令来编码,这些计算机可执行指令在被加载到计算机架构中时将计算机从通用计算系统变换成能够实现本文描述的实施例的专用计算机。这些计算机可执行指令通过如上所述地指定cpu 1204如何在各状态之间转换来变换计算机架构。根据一个实施例,计算机架构可访问存储计算机可执行指令的计算机可读存储介质,当由计算机架构执行时,该计算机可执行指令执行上文参考图12和其他图描述的各种例程。计算设备可能还包括用于执行本文描述的任意其他计算机实现的操作的计算机可读存储介质。
116.计算机架构还可包括用于接收并处理来自诸如键盘、鼠标、话筒、耳机、触摸垫、触摸屏、电子触控笔、图像处理和姿势识别设备、或任何其他类型的输入设备之类的数个输入设备的输入的一个或多个输入/输出控制器1216。输入/输出控制器1216与输入/输出设备1225进行通信。输入/输出控制器1216可向诸如计算机监视器、平板显示器、数字投影仪、打印机、绘图仪或其他类型的输出设备等显示器提供输出。输入/输出控制器1216可提供与诸如话筒、扬声器、游戏控制器和/或音频设备等其他设备的输入通信。
117.例如,输入/输出控制器1216可以是编码器并且输入/输出设备1225可包括具有多个扬声器的全扬声器系统。编码器可使用空间化技术,并且编码器可处理从应用1229接收的音频输出音频或输出信号。编码器可利用所选空间化技术来生成适当地渲染给输入/输出设备1225的空间编码流。
118.可鉴于以下条款来考虑本文提出的公开。
119.示例1:一种用于调度操作的计算机实现的方法,该方法包括:从分布式计算应用的多个租户之一接收要执行操作的多个请求;将多个操作添加到因租户而异的队列来作为
多个被调度操作;将租户调度工作项添加到执行队列,其中该租户调度工作项导致多个计算节点之一:通过从该多个被调度操作中选择多达经定义的数目的被调度操作来创建一批操作,将该批操作添加到执行队列,并将租户调度工作项重新添加到执行队列;并且其中多个计算节点中的至少一者执行该批操作。
120.示例2:示例1的计算机实现的方法,该方法进一步包括:从该多个租户的第二租户接收第二多个操作;将该第二多个操作在第二因租户而异的队列中排队来作为第二多个被调度操作;在租户调度工作项将该多个被调度操作的全部添加到执行队列之前,将第二租户调度工作项在执行队列中排队。
121.示例3:示例1的计算机实现的方法,其中执行队列和因租户而异的队列被存储在相同数据库表中。
122.示例4:示例3的计算机实现的方法,其中存储在因租户而异的队列中的被调度操作、存储在执行队列中的经排队的操作、和存储在执行队列中的租户调度工作项用相同数据库表中的列来表示,这些列包括:站点标识符列、指代租户调度器的父标识符列、指代操作是在因租户而异的队列中还是在执行队列中被调度的操作类型列、以及指代操作是否被调度、排队、开始或完成的处理状态列。
123.示例5:示例4的计算机实现的方法,该方法进一步包括:查询数据库表以标识来自该多个租户之一的操作,按操作类型列和处理状态列来编群;以及查询数据库表以标识来自该多个租户之一的操作,按站点标识符列来编群。
124.示例6:示例5的计算机实现的方法,其中租户调度工作项通过将被调度操作添加到该批直至执行队列中的经排队的操作的数目加上已添加到该批的被调度操作的数目等于经定义的数目,来选择多达经定义的数目的被调度操作。
125.示例7:示例5的计算机实现的方法,其中该多个操作包括对租户执行行政管理操作的租户级操作,并且其中该多个操作包括执行特定于分布式计算应用的功能性的因应用而异的操作。
126.示例8:示例7的计算机实现的方法,其中当租户级操作正由该多个计算节点之一执行时,租户调度工作项停止将被调度操作添加到该批。
127.示例9:示例7的计算机实现的方法,其中当租户级操作在执行队列中被排队并且一个或多个因应用而异的操作正由该多个计算节点中的一者或多者执行时,租户调度工作项停止将被调度操作添加到该批。
128.示例10:一种计算设备,包括:一个或多个处理器;与该一个或多个处理器通信的存储器,该存储器具有存储于其上的计算机可读指令,该计算机可读指令在由该一个或多个处理器执行时使计算设备执行包括以下的操作:从分布式计算应用的多个租户中的第一租户接收对操作的第一多个请求;将第一多个操作添加到第一因租户而异的队列来作为第一多个被调度操作;将第一租户调度工作项添加到执行队列,其中第一租户调度工作项导致多个计算节点之一:通过从第一多个被调度操作中选择多达经定义的数目的被调度操作来创建第一批操作,将第一批操作添加到执行队列,以及将第一租户调度工作项重新添加到执行队列;从分布式计算应用的该多个租户中的第二租户接收第二多个操作;将第二多个操作在第二因租户而异的队列中排队来作为第二多个被调度操作;在第一批操作已被执行之前,将第二租户调度工作项添加到执行队列。
129.示例11:示例10的计算设备,其中被重新添加的第一租户调度工作项由该多个计算节点之一执行,从而导致从第一租户接收的另一批操作被添加到执行队列。
130.示例12:示例10的计算设备,其中被选择以供包括在第一批操作中的被调度操作是按照它们被分布式计算应用接收的顺序来被选择的。
131.示例13:示例10的计算设备,其中执行队列包括来自第一租户的操作混合来自第二租户的操作。
132.示例14:示例10的计算设备,其中该多个计算节点中的两者或更多者并行地执行第二租户调度工作项和第一多个操作中的一者或多者。
133.示例15:一种其上编码有计算机可执行指令的计算机可读介质,该计算机可执行指令在被执行时使计算设备的一个或多个处理单元执行一种方法,该方法包括:从分布式计算应用的多个租户之一接收对操作的多个请求;将多个操作添加到因租户而异的队列来作为多个被调度操作;将租户调度工作项添加到执行队列,其中该租户调度工作项导致多个计算节点之一:通过从因租户而异的队列中的多个被调度操作中进行选择直至满足多个条件中的至少一者来创建一批操作,将该批操作添加到执行队列,并将租户调度工作项重新添加到执行队列;并且其中该多个计算节点中的至少一者执行该批操作。
134.示例16:示例15的计算机可读介质,其中该批操作是通过按照操作被从该多个租户之一接收的顺序从该多个被调度操作中进行选择来创建的。
135.示例17:示例16的计算机可读介质,其中操作可以与交付日期和时间相关联,并且其中操作不被添加到该批直至当前日期和时间至少是交付日期和时间。
136.示例18:示例17的计算机可读介质,其中被重新添加的租户调度工作项与交付日期和时间相关联,该交付日期和时间是租户调度工作项被重新添加到执行队列之后的经定义的时间量。
137.示例19:示例15的计算机可读介质,其中被调度操作包括租户级操作和因应用而异的操作,并且其中被调度操作按照它们被接收的顺序来被选择以供包括在该批中,直至:租户级操作正由该多个计算节点之一执行,或者
138.租户级操作存在于执行队列中,并且一个或多个因应用而异的操作正由该多个计算节点中的一者或多者执行。
139.示例20:示例15的计算机可读介质,其中操作包括租户级操作和因站点而异的操作,并且其中执行该批操作包括串行地执行任何租户级操作,而来自不同站点的操作可被并行地执行。
140.以上章节中描述的过程、方法以及算法中的每一个可被全部或部分自动地实例化在由一个或多个计算机或计算机处理器执行的代码模块中。代码模块可被存储在任意类型的非瞬态计算机可读介质或计算机存储设备上,诸如硬盘、固态存储器、和/或光盘等。过程和算法可被部分或全部地以专用电路来实现。所公开的过程和过程步骤的结果可被持久地或以其它方式存储在任意类型的非瞬态计算机存储中,诸如举例而言易失性或非易失性存储。
141.以上所描述的各特征和过程可被彼此独立地私钥,或以各种方式被组合。所有可能的组合和子组合被预期落在本公开的范围内。另外,在一些实现中,某些方法或过程块可被省略。本文描述的方法和过程也不被限于任何特定的顺序,并且各个块以及与其有关的
状态可以适当的其它顺序来执行。例如,所描述的块或状态可以不同于具体公开的顺序来执行,或者多个块或状态可被组合成单个的块或状态。示例块或状态可被顺序地、并行地或以其它形式来执行。块或状态可相对于所公开的示例实施例被添加或移除。本文描述的示例系统和组件可被与所描述地不同地配置。例如,相对于所公开的示例实施例,各元素可被添加、移除或重新排列。
142.还将理解,各个项被例示为在被使用是被存储在存储器或存储中,并且存储器管理和数据完整性的目的,这些项目或其部分可在存储器和其它存储设备之间转移。替代地,在其它实施例中,软件模块和/或系统的一些或全部可在另一设备上的存储器中执行并且经由跨计算机通信与所例示的计算系统通信。此外,在一些实施例中,系统和/或模块的一些或全部可以其它方式被实现或提供,诸如至少部分地以固件和/或硬件的形式,硬件包括但不限于专用集成电路(asic)、标准集成电路、控制器(例如,通过执行恰当的指令、并且包括微控制器和/或嵌入式控制器)、现场可编程门阵列(fpga)、复杂可编程逻辑器件(cpld)等。因此,本发明可以其他计算机系统配置来实现。
143.除非另外具体声明,或者否则在如所使用的上下文中可以理解的,本文使用的条件语言(诸如“能”、“能够”、“可能”或“可以”、“例如”等)一般意图表达特定实施例包括而其他实施例不包括特定特征、元素和/或步骤。因此,这样的条件语言一般并非旨在暗示对于一个或多个实施例需要特征、元素和/或步骤,或者一个或多个实施例必然包括用于决定的逻辑、具有或不具有用户输入或提示、在任何特定实施例中是否要包括或要执行这些特征、元素和/或步骤。术语“包括”、“包含”、“具有”等是同义词并且被以开放形式包括性使用,而不排除其它元素、特征、动作、操作等等。此外,术语“或”被以其包括含义来使用(而不是以其排除含义),使得当被使用时,例如用于连接元素列表时,术语“或”表示该列表中的元素中的一个、一些或全部。
144.虽然某些示例实施例已被描述,但是这些实施例是仅作为示例来提供的,而不旨在限制本文公开的发明的范围。因此,前述描述中没有任何旨在暗示任何特定的特征、特性、步骤、模块或块是必需或不可替代的。事实上,本文描述的新的方法和系统可以各种其它形式来实现;此外,本文描述的方法和系统的形式上的各种省略、替换和改变可在不背离本文公开的发明的精神的情况下进行。随附的权利要求及其等同体旨在覆盖这类形式或修改,如将会落在本文公开的发明的某些的范围和精神内的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1