多租户数据库应用的遵守服务等级协议的布局的制作方法

文档序号:6578635阅读:132来源:国知局
专利名称:多租户数据库应用的遵守服务等级协议的布局的制作方法
技术领域
本发明涉及多租户数据库(multi-tenant database)应用的布局。
背景技术
软件作为服务(Software as a service, SaaS)通常指的是由提供商向用户提供 软件应用的功能,经常是通过网络远程提供。例如,这样的提供商维护实现软件应用所需要 的硬件、人力资源和其它基础设施,从而降低总成本和用户为了访问软件和从软件中受益 所需要做出的努力。这样的场景的例子可能涉及数据库应用。例如,提供商可以维护多个服务器、相关 联的存储空间和其它计算资源,并且可以使用这些计算资源将数据库应用作为服务提供给 多个用户。可能常常是这样的情况,这样的提供商可能期望在同一时间或重叠时间向多个 用户提供这样的数据库应用,而不同的用户则对于他们希望如何访问和使用数据库应用有 着不同的需求和/或偏好。与此同时,提供商可能在将数据库应用作为服务来提供方面面 临着各种约束条件,并且尤其是,可能面临着与计算资源相关的各种约束条件,这些计算资 源可用于在不同用户之间进行分配。结果是,对于提供商来说难以在仍然维持用户方所期望的服务体验的同时以最优 化提供商的资源的方式将软件作为服务来提供。

发明内容
根据一个基本方面,一种包括记录在计算机可读介质上的指令的计算机系统可以 包括布局管理器,其被配置为确定多个租户数据库中每一个数据库到多个服务器中一个 服务器的布局,其中,所述多个租户数据库包括原始租户数据库和从原始租户数据库复制 的复制租户数据库。所述布局管理器可以包括输入处理器,其被配置为确定掌控所述多个 租户数据库与所述多个服务器的关联的服务等级协议(SLA)的约束条件,并且被配置为确 定与所述多个服务器相关联的计算约束条件;并且,所述布局管理器可以包括染色体比较 器,其被配置为将多个染色体进行比较,每个染色体包括所述多个租户数据库中每一个数 据库到所述多个服务器中一个服务器的潜在布局,并且被配置为在符合SLA约束条件的的 基础上和相对于计算约束条件将所述多个染色体中的每一个进行比较,以由此输出多个染 色体的选定子集。所述布局管理器可以包括染色体组合器,其被配置为将多个染色体的选 定子集的染色体进行组合,以得到下一代染色体,用于输出到所述染色体组合器以及用于 针对SLA约束条件和计算约束条件将下一代染色体的染色体进行后续比较,作为在所述染 色体比较器和染色体组合器之间的多个染色体的进化循环的部分。所述布局管理器可以包 括布局选择器,其被配置为监控所述进化循环以及从其中选择选定的染色体用于实施基于 该染色体的布局。实施方式可以具有一个或多个以下特征。例如,所述SLA约束条件可以对于多个 服务器指定针对相应租户的多个租户数据库的负载均衡和容错二者,这二者通过将相应租户的多个租户数据库的至少两个租户数据库安装到所述多个服务器的至少两个上来提供。 所述SLA约束条件可以指定与所述多个租户数据库相关联的租户的至少两个级别,所述至 少两个级别包括相较于普通级别具有对多个服务器的资源优先访问权的高级级别。对于后者,所述SLA约束条件可以指定所述优先访问权根据这样的布局来指定 相较于普通租户的租户数据库的布局来说,高级租户的租户数据库布置在多个服务器中具 有相对较低负载的服务器上。所述SLA约束条件还可以规定所述优先访问权包括优先容 错,该优先容错根据这样的布局来指定相较于普通租户的租户数据库在所述多个服务器 的布置来说,高级租户的租户数据库布置在所述多个服务器中较多的服务器上。所述输入处理器可以被配置为输入至少一个与租户相关联的租户情况,该租户与 多个租户数据库相关联,所述至少一个租户情况指定相关联的租户数据库的数据大小和作 业请求特征,并且其中,所述染色体比较器被配置为使用所述至少一个租户情况,相对于 SLA约束条件和计算约束条件来评价所述多个比较器。所述输入处理器可以被配置为输入 偏好参数,该偏好参数是从偏好调节器接收到的,并且表示所述染色体比较器评价至少一 个SLA约束条件的方式。所述布局管理器可以包括染色体生成器,该染色体生成器被配置为生成初始染色 体种群,用于所述染色体比较器进行评价,该初始染色体种群各自由大小为T的阵列组成, 该阵列的元素编号为1到S,其中T是所述多个租户数据库的数量,S是所述多个服务器的 数量。所述染色体组合器可以被配置为将多个染色体对进行组合,包括将每对的每个成员 分成多个部分,然后将来自每对的至少某些部分组合到新的染色体中。所述染色体比较器可以被配置为评价每个染色体,包括创建多个染色体变种,其 中每个染色体变种都与所述多个服务器的相应服务器的潜在故障相关联。所述染色体比较 器可以被配置为评价每个染色体,包括将所述多个服务器的每个服务器的负载进行归一化 并且计算服务器的负载的标准偏差。所述染色体比较器可以被配置为针对多个时间段的每 个时间段评价所述多个染色体中的每一个,然后将最终的多个评价组合以得到针对相应染 色体的总评价。所述布局选择器可以被配置为在预定数量代的进化循环之后、或者在确定选定的 染色体在预定程度上满足SLA约束条件之后,选择选定的染色体。根据另一个一般方面,一种计算机实施的方法可以包括确定多个租户数据库中 的每个和多个服务器中的至少一个,其中所述租户数据库包括原始租户数据库和从原始租 户数据库复制的复制租户数据库。该方法可以包括确定掌控所述多个租户数据库对所述 多个服务器的访问的服务等级协议SLA的约束条件;确定与所述多个服务器相关联的计算 约束条件;在符合SLA约束条件的基础上和相对于计算约束条件评价多个染色体,每个染 色体包括所述多个租户数据库中每一个数据库到所述多个服务器中一个服务器的潜在布 局。所述方法可以包括输出选定的多个染色体的子集;将选定的多个染色体的子集的染 色体进行组合,以得到下一代染色体,用于输出到所述染色体组合器以及用于针对SLA约 束条件和计算约束条件将下一代染色体的染色体进行后续比较,作为所述多个染色体的进 化循环的部分;以及从该进化循环中选择选定的染色体用于实施基于该染色体的布局。实施方式可以具有一个或多个以下特征。例如,所述SLA约束条件可以对于多个 服务器指定针对相应租户的多个租户数据库的负载均衡和容错二者,这二者通过将相应租户的多个租户数据库的至少两个租户数据库安装到所述多个服务器的至少两个上来提供。 所述SLA约束条件可以指定与所述多个租户数据库相关联的租户的至少两个级别,所述至 少两个级别包括相较于普通级别具有对多个服务器的资源优先访问权的高级级别。确定所 述SLA约束条件可以包括接收偏好参数,该偏好参数表示所述染色体比较器评价至少一个 SLA约束条件的方式。根据另一个一般方面,一种计算机程序产品可以有形地具体实现在计算机可读介 质上并且可以包括当运行时被配置为执行如下操作的指令确定多个租户数据库中的每个 到多个服务器中的一个的布局,其中所述租户数据库包括原始租户数据库和从原始租户数 据库复制的复制租户数据库。当运行时所述指令还可以被配置为将所述多个租户数据库 在所述多个服务器上的潜在布局表达为染色体,该染色体用大小为T的阵列表达并且还被 配置为确定连续代的染色体,以及监控所述连续代并且从其中选择选定的染色体用于实施 基于该染色体的布局,该阵列的元素编号为1到S,其中T是所述多个租户数据库的数量,S 是所述多个服务器的数量。实施方式可以具有一个或多个以下特征。例如,所述确定连续代可以通过相对 于服务等级协议(SLA)的约束条件以及相对于与所述多个服务器相关联的计算约束条件 评价当前代染色体,所述SLA约束条件掌控所述多个租户数据库与所述多个服务器的关联 性。所述确定所述连续代可以通过基于所述评价确定选定的当前代的子集,将选定的子集 对进行组合来得到下一代,然后对该下一代重新执行所述评价,以得到其另一个选定的子 集。下面在附图和说明书中阐述了一个或多个实施方式的细节。从说明书和附图中以 及从权利要求中其它特征将变得明显。


图1是布置(place)多租户数据库应用的布局系统(placement system)的框图。图2是示出图1的系统中所使用的染色体(chromosome)的示例组合的框图。图3是将容错(fault tolerance)并入图1的系统中的示例染色体的框图。图4是图示图1的系统的示例操作的流程图。图5是可以用于图1的示例中的示例染色体比较器的框图。图6是示出图1和图5的系统的示例操作的第一流程图。图7是示出图1和图5的系统的示例操作的第二流程图。图8是示出图1和图5的系统的示例操作的第三流程图。图9是示出图1和图5的系统的示例操作的第四流程图。
具体实施例方式图1是布置(place)多租户数据库应用的布局系统(placement system) 100的 框图。在系统100中,布局管理器102被配置为在向租户104提供期望等级的个人定制 服务的同时,以最优化服务器106a-106n的计算资源的方式分配关于服务器组(server farm) 106的多个服务器的多个租户104的布局。而且,布局管理器102可以以快速、有效、可 重复的方式并且针对各种不同租户的数量、类型和工作需求的大范围示例实现这些目标。
更加具体来说,如上所述,可以理解的是,服务器组106可以由第三方托管商提 供,该第三方托管商(host)例如将数据库应用提供给租户104。也就是说,如已知的那样, 为了以节省成本的方式将数据库应用作为SaaS提供物(offering)来托管(host),拥有服 务器组106的提供商/托管商可以部署常用的多重租用(multi-tenancy)部署策略,其中 数据库应用的一个实例(instance)被许多企业(business)(即,租户104)共享。这种多 重租用不仅有助于节省诸如用于硬件、软件和数据中心的基本建设费用,还有助于节省诸 如用于人力和电力的运作费用。但是,多重租用也会造成软件部署的高成本,例如由于针对 租户104定制数据库应用的部署所需要的高复杂度和必要条件而造成的高成本。如下面将 详细描述的那样,这些针对一个或多个租户104提供数据库应用的定制的需求常常被记录 在众所周知的服务等级协议(SLA)中。租户104中的每一个都可以有这样的SLA,该SLA掌控(govern)租户104对服务 器106a-106n托管的数据库应用的访问。在这方面,可以理解的是,租户104可以分别代表 例如使用托管服务的企业或公司,其中,每个这样的租户将由此典型地具有使用同一个租 户账户访问所托管的应用的多个用户。特定租户账户的这多个用户可以被称为租户实例。SLA的一个方面涉及关于租用级别(tenancy class)的每个租户的识别 (identification),在该上下文中,术语“级别”指的是提供给一个租户的服务等级或服务 类型,该服务等级或服务类型优于或者不同于提供给另一个租户的服务等级或服务类型。 在图1的示例中,并且在这里通常来说,虽然可以理解的是,级别的数量可以大于2,但是示 例中假设存在两个级别,称为高级(premium)租户108和普通(regular)租户110。在图1 的示例中,可以给高级租户108提供比普通租户110更高等级的容错和/或更加快速的响 应时间(例如,对特定数据库查询做出响应所需要的时间)。下面将更加详细地描述掌控租 户104对服务器106的访问的SLA的其它方面。如上所述,“多重租用”本身用于托管的数据库应用这一概念是众所周知的。在该 意义上,虽然在图1中没有专门示出,但是已知这种托管的数据库应用一般有两层运行在 (例如,网络和应用)服务器上的应用层和运行在数据库系统上的数据库层。为了本说明书 中示例的目的,将假设多重租用发生在服务的数据库层上。实现多租户数据库应用的一种已知方法被称为数据库空间方法(database space approach),其一般适用于例如这样的租户,其具有相对较大数据和计算负载,和/或对数 据隔离和安全性具有高等级需求。在数据库空间方法中,允许多个用户运行在同一个数据 库系统上,同时它们的数据被分别存储在分离的数据空间中。该方法具有用户数据隔离的 优点,并且通常几乎不需要或者完全不需要对应用进行修改。可能对于系统级资源带来开 销,诸如系统表格和其它所应用的程序,因为每个数据库空间都需要这些资源。通过用于多重租用的数据空间方法,租户的数据库可以被复制到多个服务器(例 如,完全复制),以便既实现容错又实现负载均衡。例如,高级租户108a可以具有一定大小 的数据并且这些数据与每小时涉及访问该数据的一定数量的作业相关联。如果相应的数据 库被复制,那么就可以将原始数据库存储在第一服务器(例如,服务器106a)上,同时可以 将复制的数据库存储在第二服务器(例如,服务器106b)上。然后,当关于访问数据库的请 求(例如,数据库查询)到达时,可以将请求路由到租户数据库和复制的租户数据库中任意 一个或者路由到它们二者。当这两个数据库都可用时,这样的配置对于服务器106a/106b提供了负载均衡,这是因为查询可以被交替地路由至服务器106a/106b中的每一个,所以 不需要两个服务器中的任何一个对所有查询都做出响应。而且,在服务器106a/106b中的 一个出故障或者不可用的情况下,更多查询仍然可以被路由到服务器106a/106b中的剩余 一个,从而在系统100中提供容错水平(a level of fault tolerance)。已知的是,以最优方式相对于服务器106a-106n分配或布置租户104是个难题。例 如,如果一个或多个租户数据库被分配给一个服务器并且只消耗了那个服务器相对较小部 分的计算资源,那么所谈论的租户就可能会接收到高等级的服务,但是服务器组106的托 管商将经历低效率并且浪费地使用服务器资源。另一方面,如果租户104(或多个租户)被 分配给一个服务器并且消耗了那个服务器所有或者近乎所有的计算资源,那么这可能充分 利用托管商/提供商的资源,但是可能会为所谈论的一个或多个租户提供较慢或者不能令 人满意的体验。甚至对于相对较小数量的服务器和租户来说,可能也难以通过匹配租户的 预期同时最优化托管商的资源的方式给每个租户数据库布置相应的服务器。对于较大数量的服务器和租户来说,由于将T个租户分配到S个服务器的解空间 大小为ST,因而给租户布置服务器的问题被扩展地相当大。在多租户数据库应用的上下文 中将租户分配到服务器这个一般问题是已知的,正如对该问题的许多可能解也是已知的一 样。图1的系统100 (具体说来,布局管理器102)通过快速并且有效的方式超出了这些已 知的解,以找出租户104到服务器106的合适的布局。系统100还允许租户104和服务器 106遵守基本(Underlying)SLA,该SLA可以包括例如容错和负载均衡并且考虑服务器106 的(可用)计算资源(例如,处理资源和存储资源)之间的可能的异类性。具体说来,系统100可以实现被称为遗传算法(Genetic Algorithm, GA)的随机化 算法方法,该遗传算法一般指的是达尔文自然选择的计算机模拟,达尔文自然选择通过连 续代(successive generations)的迭代来向问题/解空间中的最优解收敛。这种遗传算 法被系统100用来将SLA的要求并入到布局最优化过程中。而且,系统100能够提出租户 104到服务器106的“可用最佳(best-available) ”布局,即使在没有完全匹配所有SLA要 求的已知解的时候也是如此。因此,在图1中,布局管理器102可以被配置为确定租户104的多个租户数据库中 的每一个到多个服务器106中的一个服务器的布局,其中,多个租户数据库包括原始租户 数据库和从原始租户数据库复制的复制租户数据库(例如,为了这里所提到的容错和/或 负载均衡的目的)。在这点上,可以理解的是,作为术语,“租户104”可以指代相应的租户 数据库或者与相应的租户数据库互换使用。例如,图1中示为租户108a的Tp,el可以指代所 谈论的租户的租户数据库,其可以被复制用于利用服务器106的相应服务器来存储。以此 方式,可以以简明扼要的形式来表示和描述租户(数据库)到服务器的示例布局,诸如下面 关于图2和图3所描述的那样。当然,应当理解的是,在实践中,给定租户实际上可能具有 多于一个待复制/存储的数据库。在系统100中,上述遗传算法方法可以例如通过创建“染色体”来实现,“染色体” 代表上述将“T”个租户布置到“S”个服务器上的问题的可能解。下面提供这种租户-服务 器染色体的特定示例并且将例如参照图2和图3详细进行讨论。可以使用多个输入来创建这些染色体并且最终进行评价。例如,如图1所示,可以 存在SLA约束条件112,当创建/评价染色体(可能解)时可以将这些约束条件考虑在内。下面将提供这些SLA约束条件的具体示例,但是一般说来,应当理解,这些约束条件反映的 是要提供给给定租户的数据库服务的必要特征和/或期望特征。为此,SLA约束条件112可 以包括对于负载均衡和/或容错的最低要求,并且可以定义对于高级(相较于普通)租户 在这些及其它方面在服务上的差别。这样的SLA约束条件112中的某些条件可以是必需的 /必不可少的,而其它条件可以是可选的,同时还有一些条件可以被并入以基于用户的偏好 来改变程度(degree)。计算约束条件114指的是关于服务器106a-106n的计算资源的输入。例如,每个 这样的服务器在处理能力(例如,可以在给定时间单位内处理的作业请求的最大数量或大 小)或存储容量方面可能多少有一点不同。有点类似地,租户情况(context) 116可以指代 每个租户104的特定需求或特征。仅仅举两个例子来说,例如,某些租户可能需要大型数据 库,但是可能相对不频繁地访问数据库,而相反地,其它租户可能具有较小的数据库,这些 数据库被较为频繁地访问。应当理解,可以相对于计算约束条件114和/或租户情况116来定义SLA约束条 件112。例如,SLA约束条件112可能要求每个租户104的应用数据都必须适应于服务器 106a-106n中的一个(例如,必须至少适应于服务器106a-106n的最小存储空间)。因此, 这样的SLA约束条件可能被一个租户满足但可能不被另一个(具有较大应用数据大小的) 租户满足。如上所述,可能需要满足SLA约束条件112中的一些条件,以便布局解(placement solution)(被表示为染色体)被视为是可行的,而同时放宽或去除其它SLA约束条件112。 因此,示出偏好调节器118,其可以用于提供这种在必要的SLA约束条件和可选的SLA约束 条件之间的指示(designation),而且针对非必要的SLA约束条件还提供在何种程度上可 以放宽或去除这些约束条件。对于后者,例如,SLA约束条件可以规定布置给高级租户108 的服务器的负载应当比提供给普通租户110的服务器的负载少(这意味着对高级租户 有更快的响应时间)。因此,偏好调节器118可以用于要求维持的差,或者可以用于通 过只要求维持加/减来放宽该约束条件,其中,偏好调节器118允许值的调整。 下面将详细提供偏好调节器118的这一示例用途及其它示例用途。因此,在布局管理器102中,输入处理器(handler) 120可以被配置为确定某些或 全部输入112-118,例如,包括掌控多个租户数据库与多个服务器的关联的SLA约束条件 112和多个服务器106a-106n相关联的计算约束条件114。然后,遗传算法管理器112可 以被配置为使用所接收到的输入来创建表示租户104到服务器106a-106n的布局的可能 解的多个染色体,其中可以对照例如SLA约束条件112来评价这些可能解。根据遗传算 法,这些经过评价的染色体中最好的一个可以被“再生”以创建新一代染色体或新一种群 (population)的染色体,然后新一代染色体或新一种群(population)的染色体本身可以 被评价,从而选择其子集以供进一步再生和后续评价。通过这样的方式,每一代/每一种群 的染色体都将趋于向将租户104布置到服务器106a-106n的最优解收敛。最终,布局选择 器124可以用于选择解(染色体)中的特定一个,用于执行租户104到服务器106a-106n 的实际分配或布局。更加具体说来,遗传算法管理器122可以包括染色体生成器126,其被配置为生成 租户-服务器染色体。这样的生成过程可以随机发生,或者可以包括关于将特定租户布置或不布置给特定服务器的一些初始方针或限制。如上所述,下面将针对图2和图3来提供这 种染色体的示例。但是一般说来,可以理解的是,染色体只是对于上述的租户-服务器布局 问题的潜在的解,其可以被实施为数据结构,该数据结构包括大小为租户总数T的阵列(包 括原始租户数据库和复制的租户数据库)并且具有从1到S的元素值,其中S代表可用服 务器的总数。例如,这样的染色体的简单示例可以是这样情况两个租户Tl和T2以及两个 服务器Sl和S2。然后,可能的布局解(染色体)可以包括[T1/S1,T2/S2]、或[T2/S1,T1/ S2]、或[T1/S1,T2/S1](也即没有租户在S2上)、或[T1/S2,T2/S2](也即,没有租户在Sl 上)。当然,如上所述,较大数量的租户和服务器导致可用的染色体池呈指数增长,因而 难以或不可能生成,更别说评价,所有的可能解。许多因素可能加剧这一困难。例如,可 能存在时间约束条件,该时间约束条件可能出现在计算布局解/分配时,诸如出现在新租 户或新服务器可能变为可用或不可用时(例如,服务器故障)。而且,如上所述,各种输入 112-118可能是复杂的,这是因为,仅仅给出几个例子来说,SLA约束条件112可能在类型和 程度上有所不同,服务器106a-106n在它们的计算资源方面可能是异类的,并且租户情况 116也可能相当不同并且可能随着时间而改变。因此,染色体生成器126生成初始染色体种群或集合,而非尝试产生并评价所有 可能解,然后该初始染色体种群或集合被染色体比较器128评价,所述染色体比较器128被 配置为在符合SLA约束条件112的基础上并且相对于计算约束条件114 (并且还有例如租 户情况116和/或从偏好调节器118接收到的用户偏好)将染色体种群进行比较,以便由 此输出选定的多个染色体的子集,该子集代表租户104对服务器106a-106n的可用最佳匹 配/布局。下面将提供染色体比较器128的比较和评价过程的细节和示例。然后,染色体组合器130可以接收选定的多个染色体的子集并且可以被配置为将 选定的多个染色体的子集的染色体进行组合,以便得到下一代(下一种群)染色体,作为在 染色体比较器128和染色体比较器130之间连续代的多个染色体的进化循环的一部分,下 一代染色体用于输出到染色体比较器128,染色体比较器128接着可以针对输入处理器120 的输入执行对下一代染色体的其它后续比较,所述输入包括例如输入112-118。对于连续代 中的每一代,新的染色体种群代表或包括租户104相对于服务器106a-106n的可能的改进 布局或最优布局。从而,新的代/种群可以被迭代地创建,直到遇到最优解(例如,直到满 足包括SLA约束条件的所有输入),或者直到遇到达到某个预定义满足等级的输入,或者直 到计算新的代/种群的时间被用完(在该时间点,可以选择当前代的最佳解)。因此,假定如上所述的SLA约束条件112的情况下,可以理解,系统100能够找出 租户104到服务器106a-106n的最优分配,以使得绝对满足必要SLA约束条件,同时按照用 户所提供的优先级满足可选SLA约束条件,并且使得贯穿所有租户作业的最大完成时间最 小化。对于后者,这种贯穿所有作业的最大完成时间可以被称为完工时间(makespan)。从 而,系统100可以被配置为最小化给定测量周期期间的完工时间。举几个例子来说,这样的 测量周期可以是每小时、每天或每周。在这里所提供的示例中,假定租户104代表这样的业 务,其在一般的一天24小时中在使用中经历重大并且相当(somewhat)可预测的变化。从 而,在下面的示例中,使用一小时作为时间单位,以使得可以使用每小时平均负载来在24 小时时间序列上均衡服务器106a-106n上的负载分布。
如上所述,可以相对于作为判断布局成功的方法的完工时间的最小化,来定义已 知的将T个租户分配到S个服务器上的负载均衡问题。但是,这样的结果可能在许多情况 下都不令人满意。例如,仅最小化完工时间的解可以产生这样的分配高级租户103面临的 响应时间不能够满足它们区别于普通租户110的SLA要求。相反,系统100能够将更多因 素而不仅仅是完工时间并入到布局过程中,作为判断最终布局的方法,并且可以以灵活快 速的方式这样做,这样的方式在实际最佳解不可得到时提供可用最佳解。如上所述,布局选择器124可以被配置为监控进化循环并且从中选择选定的染色 体,以基于该染色体实现布局。如刚才所述的那样,选定的染色体/解可以代表最佳(最 优)解,或者可以代表可用最佳解。从而,布局选择器124可以通过确定是否、在何时以及 如何中断或者终止进化循环并且提取最佳或可用最佳解。然后,布局选择器124可以输出 选定的染色体和/或在合适的服务器中执行实际发送和/或安装租户数据。在图1中,可以理解的是,系统100被示为使用代表或多或少的离散功能的各种功 能块或模块。提供这样的图示是为了清楚和方便,但是可以理解的是,各种功能可以重叠或 者在所描述的模块中组合,或者可以由未专门示出在图1中的一个或多个模块来实现。当 然,根据需要,也包括对图1的系统100有用的传统功能,诸如例如复制租户数据库的功能。 再有,为了清楚和方便起见,没有明确示出这些传统元件。从而,系统100可以将服务器106a-106n的状态在为空和被一个或多个租户数据 库填充至不同程度二者之间进行变换。同时,系统100可以将租户数据库从第一状态变换 为第二状态,第一状态为被存储在第一服务器中(服务器106a-106n中的任何一个或者其 它离线服务器,例如,所谈论的租户的服务器),第二状态为被存储在服务器106a-106n的 另一个(不同的)服务器中。如上所述,租户数据库可以存储近乎所有类型的数据,诸如例 如商业界中的数据类型,其中数据可以包括物理事物,包括用户、雇员或待售商品。如所示的那样,系统100可以与计算设备132相关联,从而将计算设备132变换为 设计用于确定和实现如这里所述的布局过程的专用机器。在这种意义上来说,可以理解的 是,计算设备132可以包括所有标准元件,其包括未在图1中具体示出的处理器、存储器、电 源、外围设备以及其它计算元件。系统100还可以与显示设备134相关联(例如,监视器或 其它显示器),其可以用于提供图形用户界面(GUI) 136。GUI136可以用于例如接收使用偏 好调节器118的偏好,输入或修改SLA约束条件112或者管理或利用系统100。可以添加或 包括将对实现系统100有用的系统100的其它元件,如对于本领域普通技术人员来说明显 可见的那样。图2是示出图1的系统100中所使用的染色体202、204的示例组合的框图。也 就是说,染色体202、204可以是由染色体比较器128确定的多个染色体或染色体种群中的 一对染色体,其将被输出到染色体组合器130,如这里所描述的那样。这样的染色体对可 以被输入到染色体组合器130,然后以亲本(parent)染色体的角色被组合,来执行性别交 叉(sexual crossover)的模拟,以得到新的子染色体206,如上所述,新的子染色体206因 此而成为可以与同一代的其它成员一起作为进化循环的一部分被输入回染色体比较器128 以优化租户104到服务器106a-106n的布局的新一代染色体的一部分。因此,遗传算法管 理器122将遗传算法作为达尔文自然选择的计算机模拟来提供,其通过各个代的迭代来向 问题空间的最佳解收敛。
在图2的示例中,染色体202-206分别代表大小为T = 7的阵列(具有被标记为 208-220的租户数据库T1-T7)的部分,该阵列的元素值在1到S = 5之间(具有被标记为 222-230的服务器S1-S5)。可以假设图2是只具有一个级别租户的简化示例,并且在图2 中,没有为容错而复制租户数据库。因此,图2只示出了一个或多个租户数据库208-220可 以布置在服务器222-230中的服务器上的概念,尽管不是每个服务器都需要用于一个具体 的解(例如,子染色体206不使用服务器S4228)。图2还示出了遗传重组的概念,如遗传算法管理器122中所执行的那样。在图2 中,图2示出了使用两点交叉方案,通过染色体组合器130将施加到亲本双方202、204以产 生新的子染色体206的染色体重组。使用该方法,第一亲本202的随机选择的连续分段(由 随机切口 1和2来限定)被复制到子体206,然后再加上第二亲本204中的尚未从第一亲本 的分段中拿开的所有剩余项。在图2中,由随机切口 1和2限定的亲本染色体202、204的 部分以阴影线表示并且被相应的箭头指示为在子染色体206内组合,并保持与亲本中一样 的出现次序。这样的组合只是可能的重组技术的一个示例。一般说来,从遗传算法的已知特征 中可以理解,亲本染色体可以通过模拟性别交叉来重组以产生子染色体,并且在子染色体 内可能出现偶然引起的突变,这将产生两个亲本中都没有的新特征。这样的突变可以随机 生成,或者根据预定义的技术由染色体组合器130生成。然后,子染色体可以被传递回染色体比较器128,如所述的那样,染色体比较器 128可以被配置为评价子染色体并且然后将其分级,之后选择子染色体的最佳子集作为下 一代的亲本染色体,从而再次模拟自然选择。世代循环(generational loop)或进化循环 (evolutionary loop)可以在例如满足某最优条件之后或者在满足某停止条件之后终止。 对于后者举例来说,布局选择器124可以被配置为监控遗传算法管理器122,并且在经过了 100代之后或者到遗传算法管理器122在预设数量的代之后没有产生更好的解时,终止进 化循环。为了比较并评价染色体,染色体比较器可以实现评价函数,该函数合并或反映例 如各种输入112-118。可以在24小时期间每小时应用该评价函数,以得到总得分,然后该总 得分被用于选择子染色体的最佳子集以作为下一代的亲本染色体。下面更加详细地提供评 价函数的特定示例。图3是将容错并入图1的系统中的示例染色体的框图。更加具体说来,图3示出 了根据2等级方案提供的不同服务,该方案既包括高级租户302,又包括普通租户304,并且 合并了如这里所描述的容错。在本示例中为了提供容错,为每个高级租户302 (包括高级租户306、308)创建了 两个完全复制数据库(full replica database),并且针对每个普通租户304(包括普通租 户310、312、314、316)创建了一个完全复制数据库。于是,如图所示,高级租户306与原始 租户数据库和复制租户数据库318、320、322相关联,高级租户308与原始租户数据库和复 制租户数据库324、326、328相关联。类似地,普通租户310与原始租户数据库和复制租户 数据库330、332相关联,普通租户312与原始租户数据库和复制租户数据库334、336相关 联,普通租户314与原始租户数据库和复制租户数据库338、340相关联,普通租户316与原 始租户数据库和复制租户数据库342、344相关联。
因此,原始租户数据库和复制租户数据库318-344可以被分配/布置到在图3中 示为346、348、350、352的四个服务器S1-S4。在没有服务器发生故障的第一个例子中,租 户数据库如图所示在四个服务器346-352中分配,租户数据库318-344分别分布到服务器 346、348、350、346、348、350、348、352、350、352、352、348、352 和 346。例如,分别与普通租户 312,314关联的租户数据库336和338都被分配给服务器S4352。在另一个示例中,与高级 租户306相关联的原始租户数据库和复制租户数据库318-322被分别分配给服务器346、 348、350。这样,可以通过将原始租户数据库和复制租户数据库在不同服务器346-352中分 布来实现负载均衡。而且,因为如果服务器346-352其中之一发生故障,那么出故障的服务器上的每 个租户数据库的至少一个其它副本会存在于较大系统中,所以可以提供容错。例如,正如刚 刚提到的,与高级租户306相关联的原始租户数据库和复制租户数据库318-322被分别分 配到服务器346、348、350。因此,如果服务器Sl 346发生故障而使得租户数据库318不可 用(如图3中块354所示),那么剩余的租户数据库320和322仍然可用。类似地,租户数 据库324和344也将是不可用的,此时这些租户数据库的副本应当在相应的无故障服务器 上继续可用。图3示出了更多的示例,S卩,其中服务器S2 348发生故障(如块356所示) 的示例,其中服务器S3 350发生故障(如块358所示)的示例,以及其中服务器S4 352发 生故障(如块360所示)的示例。因此,图3示出了这样的示例其中,两个高级租户306、308被分别复制两次、同 时四个普通租户310-316被分别复制一次,从而总共(二)X(三)+ (四)X( 二)或总共 十四个原始租户数据库和复制租户数据库要分布在四个可用服务器上。如图所示,结果是 阵列大小为14的染色体362,该阵列的值关于S1-S4 (346-352)而定义,如上面针对图2已 提到的那样。在图3中,可以理解的是,表示容错与为每个可能的服务器故障创建新的染色体 364、366、368、370 —样简单,如所示的那样。然后,可以以与标准染色体362 —样的方式,使 用图1的系统100评价最终得到的染色体364-370。应当清楚的是,虽然为了简单和简要起 见,图3限于一个服务器故障的示例,但是,可以用同样的方式来表示多个同时发生的服务
器故障。图4是示出图1的系统的示例操作的流程图400。具体说来,如上面针对图1-3所 提到的那样,图1的系统100可以被配置为将租户数据库(也即,为了负载均衡和容错的目 的的原始租户数据库和复制租户数据库)到可用服务器的潜在布局表示为遗传算法的染 色体。图1的各个输入112-118对于产生和评价染色体是可用的。然后,第一代染色体的选 定的染色体可以组合形成第二代染色体,在第二代染色体上可以重复基于输入112-118评 价染色体的过程,从而可以选择第二代的子集用于再生第三代染色体。这样的进化循环的 后续迭代或重复使得能够发生其中代的成员向最优布局解收敛的自然选择的过程。如这里 的示例中所示,各个输入112-118中的某些或全部可以隐式地或直接地并入这样的遗传算 法中,从而确保结果得到的最优化的解在期望的程度上(也即,完全地或部分地)满足SLA 约束条件112和其它输入满足。然后,在图4中,可以确定多个租户数据库中的每一个以及多个服务器中的至少 一个(402)。租户数据库包括原始租户数据库和从原始租户数据库复制得来的复制租户数据库,如所述的那样。例如,这些租户数据库可以包括租户104或者与租户104有关,租户 104包括高级租户108和普通租户110。上面针对图3提供并讨论了这些租户数据库的复 制的示例,诸如,当用原始/复制租户数据库318、320、322来表示租户306时。服务器可以 包括服务器组106的服务器106a-106n。可以确定掌控多个租户数据库到多个服务器的访问的服务等级协议(SLA)的约 束条件(404)。例如,输入处理器120可以确定SLA约束条件112。如所述的那样,SLA约 束条件112可以包括所要求的且必须被满足的约束条件和/或可以包括放宽的和/或可 选的SLA约束条件。SLA约束条件112可以指定例如用于服务器106a-106n之间的负载均 衡的参数,或者用于包括针对与普通租户110相对的高级租户108的区别服务等级的租户 104之间的负载均衡的参数。SLA约束条件112还可以指定针对高级租户和/或普通租户 108/110所需要的容错等级,以及提供给与普通租户相对的高级租户的区别服务的其它特 征。这里描述了 SLA约束条件的其它示例。可以确定与多个服务器相关联的计算约束条件(406)。例如,输入处理器120可以 确定计算约束条件114,其可以与服务器106a-106n的能力有关。例如,服务器106a-106n 可以具有异类计算能力(例如,不同的处理速度或存储容量)。这些计算约束条件114可以 与评价SLA约束条件112相关。例如,如果SLA约束条件指定每个租户数据库必须完整地 装入其所分配的服务器,则如果计算约束条件114说明给定服务器的存储容量太小而无法 容纳整个租户数据库,那么该服务器就可以被排除作为针对所谈论的租户数据库的布局候 选服务器。在这点上,应当理解,输入处理器120也可以输入租户情况116,租户情况(tenant context) 116可以指定诸如给定租户的数据库的大小、或者该租户多久输出一次向租户数 据库请求数据的作业请求之类的内容。与此同时,偏好调节器118允许系统100的用户指定 根据计算约束条件114和租户情况116来匹配SLA约束条件112的方式或者程度。例如, 偏好调节器118可以允许用户指定放宽的SLA约束条件实际上被放宽到何种程度。例如, 虽然SLA约束条件112可以指定在用于给定租户/租户数据库的三个服务器之间完全相等 的负载均衡。然而,偏好调节器118可以指定在完全相等(completely equality)的给定 百分比差内的实际负载均衡是可以被接受的,其中,偏好调节器118可以用于提高或降低 可接受的百分比差。这里提供了有关输入112-116的可调节偏好的其它示例。然后,可以在符合SLA约束条件基础上并且相对于计算约束条件来评价多个染色 体,其中,每个染色体可以包括多个租户数据库中每一个到多个服务器中的一个服务器的 潜在布局(408)。例如,遗传算法管理器122的染色体生成器126可以用于随机生成将租 户104 (包括原始租户数据库和复制租户数据库)布置到服务器106a-106n的染色体,如在 图2中针对染色体202、204所示的那样。如在图3中针对染色体362-370进一步所示,可 以简单地通过创建从中去除了特定服务器以表示其(潜在)故障的染色体来表示以及合并 容错的等级。评价可以基于一个或多个评价函数进行。下面针对图5-9提供这些评价函数的具 体示例。如上所述,评价可以基于输入112-118中的任意一个或全部来进行。执行评价的 结果可以包括将得分分配给所生成的多个染色体中的每个染色体。然后,可以输出多个染色体的选定的子集(410)。例如,染色体比较器128可以执行评价,然后将选定的染色体子集输出到染色体组合器130。作为多个染色体的进化循环的一部分,多个染色体的选定子集中的染色体可以被 组合以得到下一代染色体,以便相对于SLA约束条件和计算约束条件对该下一代染色体中 的染色体进行后续评价(412)。例如,染色体组合器130可以执行这样的选定的染色体子集 的组合,诸如按照上面针对图2所讨论的示例,或者使用遗传算法领域已知的其它(重新) 组合技术。然后,染色体比较器128对于新一代染色体可以简单地重新执行上述的评价函 数,从而将选定的染色体子集重新输出回染色体组合器130。可以从选定的染色体中选择染色体以利用其来实现布局(414)。例如,布局选择 器124可以被配置为基于某预设准则,从染色体比较器128或染色体组合器130选择特定 染色体。例如,布局选择器130可以在充分满足SLA约束条件112之后或者在执行了特定 数目的进化循环之后选择染色体。有利的是,布局选择器130可以在遗传算法期间的几乎 任意时刻选择解(染色体),该解然后将代表可用最佳解并且不需要等到算法完成的时候。图5是可以用于图1的示例中的示例染色体比较器128的框图。更加具体说来, 图5示出了染色体比较器128的示例,该染色体比较器128被配置为通过执行与特定SLA 约束条件112相对的特定评价函数来评价/评分/比较染色体。在这点上,应当理解的是, 这些特定示例仅仅为了示出各种实施例以帮助理解更多相关概念,并且不受限于本领域技 术人员所清楚的其它实施例。为了下面的示例,如上面针对图1-3所描述的假定在服务器组106中使用多租户 数据库应用,并且每个高级租户被复制到三个服务器上,并且以轮询(round robin)方式将 请求路由到这些服务器。类似地,每个普通租户使得其数据被复制到两个服务器上。于是, 高级租户和普通租户分别可以经受住两个服务器和一个服务器故障。在图5-9的示例中,假定(例如,被要求或规定的指定程度上)实施下列六个SLA 约束条件,如下面详细描述的那样。具体说来,第一约束条件可以指定在经过校准以归一化 异类计算能力之后在服务器之间均衡负载。可以将负载均衡管理器502包括在内以管理该 约束条件。第二约束条件可以指定在相同等级的所有租户(以及相同租户的所有租户实例) 之间均衡负载,即使在发生服务器故障时(容错)也是如此。可以将负载分布管理器504 包括在内以实施该约束条件。第三约束条件可以指定提供给高级租户的服务器的负载比提供给普通租户的服 务器的负载少X%。在这点上,可以理解,分配较多的服务器给高级租户不一定确保更好的 响应时间,这是因为例如响应时间还可能依赖于高级租户的负载等级、分配给相同服务器 的普通租户的数量和普通租户的负载。可以将高级负载分布管理器506包括在内以实施该 约束条件。当提到这些示例中的负载时,基于这样的认知来考虑日常的负载分布租户的负 载在一天之中可能极为不同。例如,租户可能在其业务时间期间负载较重,而对于不同租 户、不同行业和不同地理区域来说业务时间本身可能有所不同。因此,可以考虑流量模式的 时间局部性(temporal locality of traffic patterns),并且对于较高精度的负载均衡, 可以将负载分布看作每小时平均负载的时间序列。对于这前三个约束条件,可以遵守下列规定这些约束条件可以以不同的期望程度被实施,并且不代表要施加到最终得到的布局上的绝对的或极端的(all-or-nothing) 要求。例如,系统管理员可以配置与系统故障发生时相对的正常工作期间负载均衡的重要 性(importance)。在另一个示例中,如上所述,不需要严格均勻地均衡负载,而是可以是在 给定的误差范围或幅度(a certain window or margin of error)内均勻地均衡负载并且 仍然是可接受的。可以由偏好调节器118来指定可以在何种程度上实现或调整这些参数。第四SLA约束条件可以指定既用于高级租户数据库又用于普通租户数据库的数 据应当被复制,其中经由复制的容错的程度可以随租户级别不同而有所不同。一般地,对于 同一租户级别中的所有租户来说,容错等级可以相同,与普通租户级别相比通过在更多的 服务器上进行复制来向高级租户提供更高等级的容错,这里的示例假设对高级租户进行两 次复制而对普通租户进行一次复制。可以将容错管理器508包括在内以实施该约束条件。第五SLA约束条件可以指定相同的租户数据库的复制本不应当布置在相同的服 务器上,这是因为这样的分配没有任何好处。可以将复制管理器510包括在内以实施该第 五约束条件。第六SLA约束条件可以承认(recognize)每个服务器都具有一个存储容量限制 (如计算约束条件114所指定的那样),并且每个租户具有“固定”大小的应用数据(在一 个时间段内)(如租户情况116所指定的那样)。租户数据库的应用数据必须装入一个服务 器。为了简便起见,假定系统100不会为了一天中不同小时的负载等级变化而到处移动租 户数据的复制本以进行调整。可以将容量管理器512包括在内以实施该第六约束条件。上面所述的第四、第五和第六约束条件可以被视为绝对约束条件,也即,为了使特 定布局(染色体)将被视为是可行的而必须满足的约束条件。换句话说,不满足这些特定 约束条件的染色体会被立即丢弃。最后,在图5中,可以根据需要使用得分编译器(score compiler) 514,以便在计 算正在进行的得分参数时跟踪它们,然后合计或者编译与染色体比较器(128)的评价函数 相关联的一个或多个得分。图6是示出图1和图5的系统的示例操作的第一流程图600。在图6的示例中, 输入处理器120可以确定正如上面所描述的六个SLA约束条件所表示的那些SLA约束条件 112中的某些或全部约束条件、与服务器106a-106n的处理和存储限制相关的计算约束条 件114、与各个租户104的工作负荷要求和数据库大小相关的租户情况116以及与通过偏好 调节器118接收的与上述某些或全部相关的偏好(602)。然后,染色体生成器126可以产生第一或初始染色体种群(604)。例如,染色体生 成器126可以简单地通过随机分配租户给服务器来产生预定数量的染色体。然后,染色体 比较器128可以针对每个染色体执行评价函数,以便将得分与每个染色体相关联(606)。可 以使用组件502-504来执行评价函数,并且下面针对图7-9提供评价函数的特定示例。基于评价和评分,可以通过染色体比较器128得到选定的染色体子集。然后,可以 将该选定的染色体子集传递到染色体组合器130,染色体组合器130然后可以将染色体对 进行组合,以得到下一代染色体(610)。图2提供了如何执行这些组合的示例,很显然,也那 样可以使用其它技术。于是,通过将下一代染色体返回到染色体比较器128,迭代的进化循环可以进行下 去,如图1和图6中所示。总体说来,每一代都将大体上向可接受的或优化的解前进。可以在预定数目的迭代/代之后、或者当SLA约束条件在所要求程度上全部得到满足时、或者在 到达时限或某其它停止指标(indicator)之后,终止该循环。可以由布局选择器124进行 这些确定,布局选择器124接着可以选择可用最佳染色体来用作布局解(612)。图7是示出图1和图5的系统的示例操作的第二流程图700。具体说来,图7示出 了由图1和图5的染色体比较器128所使用的评价函数的某些方面的执行。在图7中,从染色体种群中选择染色体(702)。染色体比较器128可以首先检查必 要的SLA约束条件以及可以被容易地检验的SLA约束条件。例如,可以由复制管理器510 检查第五SLA约束条件以便确保租户数据库没有在同一服务器上被重复(被复制)(704), 这是因为,如所述的那样,从容错的观点来看这样的布局毫无用处。因此,如果发生了这样 的重复,那么可以将所谈论的染色体丢弃(706)。如果不是这样的话,容量管理器512可以检验第六SLA约束条件,该条件要求租户 数据库(各自作为一个整体)必须装入其可能被布置到的至少一个服务器(708)。如果任 何租户数据库在该意义上太大了,那么可能又一次丢弃相关染色体(706)。容错管理器508可以检查染色体以确保该染色体包括总共三个租户数据库(一个 原始的和两个复制的)用于每个高级租户,以及总共两个租户数据库(一个原始的和一个 复制的)用于每个普通租户。如果不是这样的话,那么可以丢弃该染色体(706)。通过这样 的方式,可以保持所要求的容错等级上的差别。然后,负载均衡管理器502和负载分布管理器504可以执行它们各自的功能,以实 施上述第一和第二 SLA约束条件,同时高级负载分布管理器506可以用于监控和/或实施 第三SLA约束条件。可以使用下面的符号和惯例(notation and convention)来进行这些计算以及下 列计算。具体说来,每个服务器Si被称为具有计算能力C0mpP0WerSi,其以每小时处理的作 业数量来度量。每个服务器还具有存储容量StorageCapsi。T= U^t2,... ,tj表示复制 后(post-implication)租户的集合,其中每个租户t」每小时的负载为Loadtj的作业并且 具有DataVolumetj的数据量。Tlffe是高级租户集合,Tms是普通租户集合,以使得(TlffeU Treg =T 并且 Tpre Π Treg = null (至))。服务器106a-106n可以在它们的计算能力/约束条件方面是相异的。从而,每个 服务器都具相对于其计算能力的归一化负载(normalized load),其中服务器S的这种归 一化负载可以表示为Ls。高级租户的服务器和高级租户的副本的服务器可以被定义为集 合Spre = {spl,sp2,. . . SpJ,而Sreg = {srl, sr2,. . . srJ}表示普通租户的服务器和普通租户的 副本的服务器。如可以理解的那样,Spre和Sreg可以有重叠。使用上述符号,负载均衡管理 器502和/或负载分布管理器504可以命令(mandate)和/或执行关于得到具有高级租户 (714)和普通租户(716)的服务器的负载的运算。然后,σpre 可以是{Lspl,Lsp2,. . . LspJ 的标准偏差,而 σ reg 可以是{Lsrl,Lsr2,· ·., LsrjI的标准偏差。然后,一般说来,较小的σρΜ表示容纳高级租户的所有服务器上的负载 分布较恒定,从而高级租户的体验更为流畅。相同的推理也适用于普通租户的Oreg,尽管 对于具有普通租户而没有高级租户的服务器来说可以容忍较大的Oreg值。一般说来,可以 理解的是,优选的布局应当在可能的程度上最小化σρΜ和二者,以提供更好的用户体 验。因此,负载均衡管理器502可以计算参数Qme(720)和Ome(722)。
如上所述,第三约束条件可以指定高级租户可以被提供具有比提供给普通租户的 服务器少的负载的服务器。该约束条件反映了向高级租户提供更好服务的商业价值 (business value)与轻负载服务器相关联。例如,如果期望高级租户被提供以负载比提供 给普通租户的服务器的负载少的服务器,并且布局产生对于高级租户的平均负载AVGpm 和对于普通租户的平均负载AVG,eg,那么差(differential) (AVGreg-AVGpre) /AVGreg越接近于
,第三SLA约束条件越接近于被满足。从而,如图7中所示,负载分布管理器504可以被 配置为计算AVGpm (720)和AVGreg(724)。然后,高级负载分布服务器506可以被配置为确定 这些参数之间的百分比差(percent difference) (726),如上所述。然后,可以将该百分比 差与参数比较,以便确定参数Odiff (728),该参数用于判断对于所谈论的染色体在何种 程度上实现第三SLA约束条件。然后,一般说来,在图7中被评分的染色体可以具有如公式1所示的初始得分CJ pre+ O reg+① diff,公式1其中,在表示相对于第三SLA约束条件的约束条件的较小标准偏差和较小百 分比差时优选较小的得分。但是,除此这外,并且如上所述,例如针对图6,可以通过偏好调 节器118来接收偏好参数,这些参数定义上述得分组件取值的范围和方式。具体说来,α可以表示可以由用户配置的权重,用于表示他们在使高级租户占用 的服务器的负载或普通租户占用的服务器的负载更加均衡时的偏好(preference)。与此同 时,β表示用于调节实现区别负载要求Odiff的期望程度的参数。然后,可以如公式2中所 示更加充分地表示染色体得分,其可以由得分编译器来确定(730)α σ pre+(l-a) σ reg+β Odiff公式 2图8是示出图1和图5的系统的示例操作的第三流程图800。具体说来,图8示出 了用于在出现服务器故障时提供包括负载均衡在内的容错的特定技,诸如上面针对图3所 述的那些技术,以及诸如可以由图5的容错管理器508连同负载均衡管理器502和/或负 载分布管理器504 —起执行的技术。如从上面的描述理解的那样,如这里所描述的用于多租户数据库应用的数据库空 间方法可以使用内容已知(content-aware)路由器或其它已知技术,将相同租户的请求分 布到多个服务器(每个服务器容纳该租户的原始版本的数据库或复制版本的数据库)。当 服务器发生故障时,诸如上面针对图3所述的那样,路由器必须将发送到故障服务器的请 求重新引导到其它工作着的服务器。为了即使在发生服务器故障时也确保负载均衡,还必 须评价在正常工作期间的布局。因此,对于正在被评分的给定染色体(诸如图3的染色体 362),可以确定多个染色体变种(variant)(诸如染色体变种364-370),在这些染色体变种 中的每一个,服务器中的不同服务器被假定发生了故障。然后,可以根据上面针对图6和图 7所描述的评价函数来对染色体和染色体变种评分。而且,如下面所描述的那样,可以针对 在较大评价函数的给定实现中要求这样的容错负载均衡的程度来接收和包括用户偏好。然后,在图8中,对于正在被评分的染色体,从染色体中去除服务器Si,以创建第一 染色体变种(802),在该第一染色体变种中服务器Si发生故障并且未来所有对该服务器的 请求都必须被重新路由到其它服务器。然后,针对染色体变种重新计算上面的参数σρΜ、 σ @和Cdiff (804)。如果Si不是该染色体中的最后一个服务器,那么该过程接下来去除下 一个服务器(802)。
如果不是这样的话,可以得到染色体的负载均衡得分(808)。也就是说,可以计算 或从存储器中检索如图7中所确定的得分(730)。然后,可以重新执行如上面针对图7的描 述的相同技术,以得到针对每个染色体变种和相关联的服务器故障的负载均衡得分(810)。结果是使用上面的公式1和公式2,得到(诸如针对图3的染色体362)正常负载 均衡得分(没有服务器发生故障),以及若干各自对应于染色体变种(例如,如图3的染色 体变种364-370)的得分。可以按染色体变种的数目将染色体变种的得分平均,以得到容错 得分 ScoreFt (814)。可以理解的是,可以将服务器组106中的服务器故障视为相对可能或相对不可 能,或者给定租户或其它用户可以具有相对较高或相对较低的承受服务器故障的风险容 限。由于这些和其它相关或类似原因,对于特定租户来说容错得分和相关联的分析可以相 对重要或相对不重要。因此,偏好调节器118可以使得用户可以根据容错得分的权重输入 偏好,其中该偏好在本说明书中表示为λ。因此,在使用该权重因子λ时,可以理解,较小 的λ值表明正常情况下(也即,没有服务器崩溃的情况下)布局的高得分是首选的。另一 方面,较小的λ表示相对于负载均衡的更好容错能力的偏好。因此,可以使用公式3,例如由得分编译器514得到最终得分(814)(1-λ ) Score+λ (ScoreFt)公式 3再次,术语Score和Sc0reFt应当被理解为表示例如根据图7和图8的操作所计算 的上面公式2的输出。图9是示出图1和图5的系统的示例操作的第四流程图900。如上所述,为了解决 租户和/或服务器的负载和其它特征每小时都不同的问题,按小时来进行布局决策可能有 用。因此,在图9中,针对小时h来计算最终得分,以得到每小时的得分(902)。如果不是 例如24小时周期/日的最后一小时(904),那么就可以计算下一个小时的得分(902)。如 果不是这样的话,可以将每小时的得分平均,以得到总的染色体得分(906)。为此,最终得分可以用于所谈论的染色体,并且类似地,可以对于给定种群/代中 的每一个染色体计算最终得分。然后,如所述的那样,染色体比较器128可以相应地为这些 染色体分等级并且将染色体的选定子集作为如上所述的遗传算法的进化循环的一部分转 送到染色体组合器130,。这样,图1和图5将这一事实考虑在内在一天的一个小时内,可能一个或多个服 务器会具有高负载。正如针对图9所描述的那样,这里所描述的系统和方法能够在一天的 24小时内实施负载均衡。如果所描述的算法只知道租户每天的负载并且相应地计算布局,那么可用的最佳 布局终究会导致服务器的过大的最大负载。但是,如果所描述的算法被提供了一天之间每 个小时的租户负载,然后如所描述的那样通过将24小时内的这些布局得分进行平均来评 价布局,那么每个服务器24小时内的服务器最大负载就可以被最小化。图6-9描述了可以用于图1和图5的系统的特定评价函数的操作,并且在传达其 所包括的功能和特征的程度上对其进行描述。但是,应当理解,在图1和图5的系统的实际 操作或执行中,可以采用许多变形和优化。例如,当在图9中计算每小时的得分时,许多没 有按小时变化的参数(诸如是否在一个服务器上复制特定租户数据,如上面的第五SLA约 束条件所禁止的)不需要重新计算。应当清楚,在实际实施图1和图5的系统中可以包括其它效率和优化。 在下文中,将给出代码或伪码的实际部分,它们提供了这些实际实施方式的示例。 具体说来,下面给出算法1,其中变量t代表当前代的染色体,P(t)代表该代的种群。如这 里所描述的那样,染色体通过多代的适应和选择而进化。另外,如算法1中所示,某些实施 方式中的染色体组合器130可以将一个或多个突变包括到染色体种群中。也就是说,可以 随机变更或突变一个或多个染色体的具体方面,以探索解空间的多个部分,这些解空间的 部分在遗传算法的正常运行期间将不会被碰到。因此,类似于上面的图4和图6的示例,算 法1表示遗传算法和相关联操作的总体运行。注意在下面的算法中,第一到第六SLA约束 条件被分别称为REQ1-REQ6。
算法1 遗传搜索算法_ 如算法1中可见的那样,实际评价函数在其第8行发生。算法2提供了可以怎样 实施这样的评价函数的进一步的细节。具体说来,例如,在第5行,类似于图7的操作,它在 没有服务器故障的正常工作情况下计算每个染色体的得分。为了这样做,算法2调用如下 所述的算法3。然后,从第7行到第10行,类似于图8的操作,它再次使用算法3,对当服务 器发生故障时相同布局的性能进行评价。在每一次迭代中,都假定服务器中的一个服务器 发生故障并且布置在故障服务器上的原始负载被重新引导(redirect)至包含与故障服务 器相同的租户数据库副本的其它服务器。在第11行中,通过应用参数λ来计算染色体的 最终得分,以考虑相对于负载均衡的容错能力的偏好。 算法2中所引用的评价布局函数在下面的算法3中示出。在算法3中,如上面所 述,示出了图7和图8的操作以及图9的操作。具体说来,第6-10行检查是否存在布置在同 一服务器的相同租户的副本。如果是的话,这样的布局就将得到无穷大(infinite)或有效 无穷大(effective infinite)的得分,因为这种情况违犯了所要求的第五SLA约束条件。类似地,从第12行到第17行,关于服务器的硬盘空间是否足够容纳所分配的副本 来对每个服务器进行检查,如第六SLA约束条件所要求的那样。所有不能接纳所分配的租 户数据库的服务器将再次导致无穷大或有效无穷大的得分。如果满足上面两个条件,那么就在24小时内逐小时地评价布局,如图9所示。更 新高级租户和普通租户所占用的服务器的统计数字(第20-29行)并且通过在第30行将 用户偏好并入来计算该小时的得分。最后,将24小时内的平均得分返回作为该染色体的最 终得分。
图1-9以及上面所描述的公式和算法提供了可以怎样通过隐含地并入SLA约束条 件112和其它输入114-118的方式,将租户数据库分配到服务器组106中的多个服务器的 一般性示例和特定示例。从而,可以明确地并入潜在的必要约束条件,同时可以在不同程度 上并入其它约束条件,所述程度可以由用户根据期望使用偏好调节器118修改。
下面的描述提供了如何针对关于图5-9的示例具体描述的不同偏好参数使用偏 好调节器118的附加示例和说明。如上面一般所述的那样,偏好参数α可以用于表示对于 均衡高级租户和普通租户所占用的服务器的负载的用户偏好,因此较大的α表示均衡高 级租户的负载更加重要,而相对较小的α表示均衡普通租户的负载更加重要。偏好参数β 用于实施不同级别的租户之间的区别负载(differential load),也即,用于确定实际的区 别负载可以与所指定的或所期望的区别负载偏离的程度。最后,偏好参数λ可以如所描述 的那样使用,以使得该参数的较大的值表示用户对罕有服务器故障的正常情况关注较少而 对服务器故障较普遍的情况关注较多,而该参数的较小的值表示用户对罕有服务器故障的 正常情况关注较多而对服务器故障较普遍的情况关注较少。一般说来,在各种实施例中,除 了参数β可以如上所述被设置为无穷大或有效无穷大以从考虑对象中有效去除给定染色 体之外,参数α、β和λ可以被设置为0到1之间不同的值。对于参数α,可以理解,用户可以指定他们期望怎样均衡高级租户或普通租户所 占用的服务器负载的偏好(也即,他们想要均衡哪个级别的租户负载)。较大的α表示用于 高级租户的负载均衡更加重要,反过来较小的α表示均衡普通租户的负载更加重要。上面 的示例算法能够返回非常接近于用户偏好的解,因此,如果α较大,那么算法将得出这样 的解其中,高级租户的负载比普通租户的负载更好地被均衡。另一方面,给定较小的α, 算法可以产生这样的结果该结果使普通租户的负载更加均衡。即使是在可用服务器或服 务器的盘空间上有限制,参数α也可以用于实施高级租户与普通租户之间期望的负载均 衡。而且,一般说来,α的变化对参数β的效力几乎或完全没有影响。关于参数β,更加具体说来,如上所述,可以理解的是,该参数涉及用户对实施区 别负载的偏好。如果用户更加注重在不同级别的租户之间实施区别负载,也即,β较大,那 么算法就有效地响应以满足该要求。但是,当基本参数和odiff(高级租户与普通租户 之间的期望区别负载以及染色体匹配该期望区别的程度)增大时,那么相对较小或较大的 β值可能在实施上或多或少地有困难,这尤其依赖于服务器盘空间的限制。关于参数和Odiff本身,可以理解的是,如上所定义的函数Φ本身可以被调 整,以满足不同的偏好。例如,如果高级租户接收到比普通租户差的服务(如下面条件所定 义的那样普通租户的平均响应时间比高级租户的平均响应时间短),那么参数Odiff就可 以被设置为无穷大或有效无穷大,因为这样的情况一般是完全不可接受的。另一方面,如果 高级租户相对于普通租户来说得到太多的益处,那么提供给普通租户的服务可能会急剧恶 化。因此,当普通租户与高级租户之间的差超过(对于SLA约束条件来说该条件不是必 要的并且在最佳情况下向高级租户提供过度的好处)时,那么将再次分配无穷大或有效无 穷大的值。如已经讨论的那样,参数λ可以用于指定用户是更加关注正常情况(其中服务 器故障罕有发生)还是更加关注服务器故障发生相对频繁的情况。为了表示该情况,可以 考虑,Serveri崩溃,那么由高级租户和普通租户战用的服务器的最终负载偏差被定义为 devpre(i)和devreg(i),同时当没有服务器崩溃时,该偏差可以就用devpre和如、68来表示。当较大的λ被指定为表示用户对于服务器故障情况下的负载均衡更加关心时, 那么deVpre和dev,eg的平均值将变得较小。与此同时,devpre和dev,eg没有显著地受到负面 影响。原因在于,当服务器中任意一个崩溃时负载仍然是均衡的暗示着负载在所有服务器上也是均衡的。另一方面,如果在所有服务器上负载已经是均衡的,那么当服务器崩溃发生 时该负载不会总是同样地均衡。因此,本说明书提供一种在将η个作业分配到m个服务器这一负载均衡问题上取 得进步的方法(advance),其包括考虑实现SLA约束条件所需的额外复杂度。这里所描述的 布局算法灵活到足以将不同形式的各种SLA约束条件并入其中,并且即使它没有生成满足 所有要求的解决方案,也能够产生最佳的可能布局解。所描述的遗传算法提供这样的解决 布局问题的解,并且具有将各种不同形式的SLA约束条件封装到它的评价中的灵活性。从 而,这里所描述的系统和方法提供了封装各种不同形式的SLA约束条件的完整框架以及考 虑到可用资源、需求以及情况(context)渐进地找到满足所述约束条件的最佳可能解的遗 传算法。这里描述的各种技术的实施方式可以被实施在数字电子电路中,或者实施在计算 机硬件、固件、软件,或者它们的组合中。实施方式可以实施为计算机程序产品,即有形地具 体体现在信息载体中的计算机程序,信息载体例如机器可读存储设备或者传播的信号,以 供数据处理装置执行,或者控制数据处理装置的操作,所述数据处理装置例如可编程处理 器、计算机、多个计算机。计算机程序,诸如上面描述的计算机程序,可以用任何形式的编程 语言编写,包括汇编语言或解释语言,并且,它可以被以任何形式部署,包括作为独立的程 序或者作为模块、组件、子程序或其他适于在计算环境中使用的单元。计算机程序可以被部 署为在一个计算机上执行或在位于一个地点或分布在多个地点并被通信网络互连起来的 多个计算机上执行。方法步骤可以被一个或多个可编程处理器执行,所述可编程处理器执行计算机程 序,以通过对输入数据操作和产生输出来执行功能。方法步骤还可以被用于特殊目的的逻 辑电路执行,或者装置可以被实施为用于特殊目的的逻辑电路,所述用于特殊目的的逻辑 电路例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。作为例子,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类 型的数字计算机的任意一个或多个处理器。一般说来,处理器将从只读存储器或随机存取 存储器接收指令和数据,或者从两者都接收指令和数据。计算机的元件可以包括至少一个 用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。一般说来,计算 机还可以包括,或者被可操作地耦合以从一个或多个用于存储数据的海量存储设备接收数 据,或把数据传送到海量存储设备,或者二者皆有,所述海量存储设备例如磁盘、磁光盘或 光盘。适于具体实施计算机程序指令和数据的信息载体包括所有形式的非易失性存储器, 包括例如半导体存储器件,例如EPR0M、EEPROM和闪存器件;磁盘,例如内置硬盘或可移动 磁盘;磁光盘;以及⑶-ROM和DVD-ROM盘。处理器和存储器可以由用于特殊目的的逻辑电 路补充,或者被包含在用于特殊目的的逻辑电路中。为了提供与用户的交互,实施方式可以在具有显示设备和键盘以及定点 (pointing)设备的计算机上实施,显示设备例如阴极射线管(CRT)或液晶显示器(IXD)监 视器,用于向用户显示信息,键盘和指示设备例如鼠标或跟踪球,用户利用它们可以提供到 计算机的输入。其他种类的设备也可以被用来提供和用户的交互;例如,提供给用户的反馈 可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈,并且,来自用户的输入 可以被以任何形式接收,包括声音、语音或触觉输入。
实施方式可以被在包括后端组件或包括中间件组件或包括前端组件的计算系统 中实施,或者在这些后端、中间件、前端组件的任意组合中实施,后端组件例如数据服务器, 中间件组件例如应用服务器,前端组件例如具有图形用户界面或Web浏览器的客户端计算 机,通过图形用户界面或Web浏览器,用户可以和实施方式进行交互。可以利用数字数据通 信的任何形式或介质互连组件,数字数据通信的介质例如通信网络。通信网络的例子包括 局域网(LAN)和广域网(WAN),例如因特网。虽然如这里所描述的那样已经示出了所描述的实施方式的某些特征,但是本领域 技术人员现在应当想到很多修改、替换,变化或等同物。因此应当理解,所附权利要求旨在 覆盖落入实施例的范围内的所有这些修改和变化。
权利要求
一种包括记录在计算机可读介质上的指令的计算机系统,该系统包括布局管理器,其被配置为确定多个租户数据库中每一个数据库到多个服务器中一个服务器的布局,其中,所述多个租户数据库包括原始租户数据库和从原始租户数据库复制的复制租户数据库,其中,所述布局管理器包括输入处理器,其被配置为确定掌控所述多个租户数据库与所述多个服务器的关联的服务等级协议SLA的约束条件,并且被配置为确定与所述多个服务器相关联的计算约束条件,染色体比较器,其被配置为将多个染色体进行比较,每个染色体包括所述多个租户数据库中每一个数据库到所述多个服务器中一个服务器的潜在布局,并且被配置为在符合SLA约束条件的基础上并且相对于计算约束条件将所述多个染色体中的每一个进行比较,从而输出所述多个染色体的选定子集;染色体组合器,其被配置为将所述多个染色体的选定子集中的染色体进行组合以得到下一代染色体,作为在所述染色体比较器和染色体组合器之间的多个染色体的进化循环的一部分,该下一代染色体用于输出到所述染色体比较器并且用于相对于SLA约束条件和计算约束条件对所述下一代染色体中的染色体进行的后续比较;以及布局选择器,其被配置为监控所述进化循环以及从其中选择选定的染色体用于实施基于所述选定的染色体的布局。
2.如权利要求1所述的系统,其中,所述SLA约束条件对于所述多个服务器规定针对相 应租户的多个租户数据库的负载均衡和容错二者,这二者通过将相应租户的多个租户数据 库中的至少两个租户数据库安装到所述多个服务器中的至少两个服务器上来提供。
3.如权利要求1所述的系统,其中,所述SLA约束条件规定与所述多个租户数据库相关 联的租户的至少两个级别,所述至少两个级别包括相较于普通级别具有对多个服务器的资 源优先访问权的高级级别。
4.如权利要求3所述的系统,其中,所述SLA约束条件规定按如下方式指定所述优先访 问权与普通租户的租户数据库的布局相比,高级租户的租户数据库被布置在多个服务器 中具有相对较低负载的服务器上。
5.如权利要求3所述的系统,其中,所述SLA约束条件规定所述优先访问权包括优先容 错,所述优先容错是按照如下方式来指定的与普通租户的租户数据库在所述多个服务器 上的布局相比,高级租户的租户数据库被布置在所述多个服务器中的较多的服务器上。
6.如权利要求1所述的系统,其中,所述输入处理器被配置为输入至少一个关于与所 述多个租户数据库相关联的租户的租户情况,所述至少一个租户情况指定相关联的租户数 据库的数据大小和作业请求特征,并且其中,所述染色体比较器被配置为使用所述至少一 个租户情况,相对于SLA约束条件和计算约束条件来评价所述多个染色体。
7.如权利要求1所述的系统,其中,所述输入处理器被配置为输入偏好参数,该偏好参 数是从偏好调节器接收的,并且表示所述染色体比较器评价所述SLA约束条件中的至少一 个约束条件的方式。
8.如权利要求1所述的系统,其中,所述布局管理器包括染色体生成器,该染色体生成 器被配置为生成初始染色体种群,用于由所述染色体比较器进行评价,该初始染色体种群 各自被形成为大小为T的阵列,该阵列的元素的值为数字1到S,其中T是所述多个租户数据库的数量,S是所述多个服务器的数量。
9.如权利要求1所述的系统,其中,所述染色体组合器被配置为将所述多个染色体中 的染色体对进行组合,包括将每对染色体的每个成员划分为多个部分,然后将来自每对的 至少某些部分组合到新的染色体中。
10.如权利要求1所述的系统,其中,所述染色体比较器被配置为评价每个染色体,包 括创建多个染色体变种,其中每个染色体变种都与所述多个服务器的相应服务器的潜在故 障相关联。
11.如权利要求1所述的系统,其中,所述染色体比较器被配置为评价每个染色体,包 括将所述多个服务器的每个服务器的负载进行归一化并且计算所述服务器的负载的标准偏差。
12.如权利要求1所述的系统,其中,所述染色体比较器被配置为针对多个时间段中的 每个时间段评价所述多个染色体中的每一个,然后将最终的多个评价组合以得到针对相应 染色体的总评价。
13.如权利要求1所述的系统,其中,所述布局选择器被配置为在进化循环的预定数量 的代之后、或者在确定所述选定的染色体在预定程度上满足SLA约束条件之后,选择所述 选定的染色体。
14.一种计算机实施的方法,包括确定多个租户数据库中的每个租户数据库和多个服务器中的至少一个服务器,其中所 述租户数据库包括原始租户数据库和从所述原始租户数据库复制的复制租户数据库;确定掌控所述多个租户数据库对所述多个服务器的访问的服务等级协议SLA的约束 条件;确定与所述多个服务器相关联的计算约束条件;在符合所述SLA约束条件的基础上并且相对于所述计算约束条件评价多个染色体,每 个染色体包括所述多个租户数据库中每一个数据库到所述多个服务器中一个服务器的潜 在布局;输出所述多个染色体的选定子集;将所述多个染色体的选定子集中的染色体进行组合以得到下一代染色体,作为所述多 个染色体的进化循环的部分,下一代染色体用于相对于SLA约束条件和计算约束条件对下 一代染色体中的染色体进行的后续比较,;以及从该进化循环中选择选定的染色体用于实施基于该染色体的布局。
15.如权利要求14所述的方法,其中,所述SLA约束条件对于所述多个服务器规定针对 相应租户的多个租户数据库的负载均衡和容错二者,这二者通过将所述相应租户的多个租 户数据库的至少两个租户数据库安装到所述多个服务器的至少两个服务器上来提供。
16.如权利要求14所述的系统,其中,所述SLA约束条件规定与所述多个租户数据库相 关联的租户的至少两个级别,所述至少两个级别包括相较于普通级别具有对所述多个服务 器的资源的优先访问权的高级级别。
17.如权利要求14所述的系统,其中,确定所述SLA约束条件包括接收偏好参数,该偏 好参数表示所述染色体比较器评价所述SLA约束条件中的至少一个约束条件的方式。
全文摘要
本发明提供一种计算机系统,其包括确定多个租户数据库到多个服务器的布局的布局管理器。该布局管理器包括输入处理器,其确定掌控多个租户数据库到多个服务器的关联的服务等级协议SLA的约束条件以及与多个服务器相关联的计算约束条件;染色体比较器,其相对于SLA约束条件和计算约束条件比较每个染色体,以输出多个染色体的选定子集,每个染色体包括多个租户数据库中的每一个到多个服务器中的一个的潜在布局;染色体组合器,其将多个染色体的选定子集中的染色体组合以得到下一代染色体,其被输出到染色体比较器以用于后续比较;以及布局选择器,其监控所述进化循环以及从其中选择选定的染色体用于实施基于选定的染色体的布局。
文档编号G06F17/30GK101931609SQ20091014621
公开日2010年12月29日 申请日期2009年6月22日 优先权日2009年6月22日
发明者许俭, 黎文宪 申请人:Sap股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1