CN101931609B - 多租户数据库应用的遵守服务等级协议的布局 - Google Patents
多租户数据库应用的遵守服务等级协议的布局 Download PDFInfo
- Publication number
- CN101931609B CN101931609B CN200910146215.3A CN200910146215A CN101931609B CN 101931609 B CN101931609 B CN 101931609B CN 200910146215 A CN200910146215 A CN 200910146215A CN 101931609 B CN101931609 B CN 101931609B
- Authority
- CN
- China
- Prior art keywords
- chromosome
- tenant
- server
- database
- layout
- 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
Classifications
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种计算机系统,其包括确定多个租户数据库到多个服务器的布局的布局管理器。该布局管理器包括:输入处理器,其确定掌控多个租户数据库到多个服务器的关联的服务等级协议SLA的约束条件以及与多个服务器相关联的计算约束条件;染色体比较器,其相对于SLA约束条件和计算约束条件比较每个染色体,以输出多个染色体的选定子集,每个染色体包括多个租户数据库中的每一个到多个服务器中的一个的潜在布局;染色体组合器,其将多个染色体的选定子集中的染色体组合以得到下一代染色体,其被输出到染色体比较器以用于后续比较;以及布局选择器,其监控所述进化循环以及从其中选择选定的染色体用于实施基于选定的染色体的布局。
Description
技术领域
本发明涉及多租户数据库(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中没有专门示出,但是已知这种托管的数据库应用一般有两层:运行在(例如,网络和应用)服务器上的应用层和运行在数据库系统上的数据库层。为了本说明书中示例的目的,将假设多重租用发生在服务的数据库层上。
实现多租户数据库应用的一种已知方法被称为数据库空间方法(databasespace 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的Tprel可以指代所谈论的租户的租户数据库,其可以被复制用于利用服务器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的服务器的负载少X%(这意味着对高级租户有更快的响应时间)。因此,偏好调节器118可以用于要求维持X%的差,或者可以用于通过只要求维持X%加/减Y%来放宽该约束条件,其中,偏好调节器118允许Y%值的调整。下面将详细提供偏好调节器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代表可用服务器的总数。例如,这样的染色体的简单示例可以是这样情况:两个租户T1和T2以及两个服务器S1和S2。然后,可能的布局解(染色体)可以包括[T1/S1,T2/S2]、或[T2/S1,T1/S2]、或[T1/S1,T2/S1](也即没有租户在S2上)、或[T1/S2,T2/S2](也即,没有租户在S1上)。
当然,如上所述,较大数量的租户和服务器导致可用的染色体池呈指数增长,因而难以或不可能生成,更别说评价,所有的可能解。许多因素可能加剧这一困难。例如,可能存在时间约束条件,该时间约束条件可能出现在计算布局解/分配时,诸如出现在新租户或新服务器可能变为可用或不可用时(例如,服务器故障)。而且,如上所述,各种输入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不使用服务器S4 228)。
图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都被分配给服务器S4 352。在另一个示例中,与高级租户306相关联的原始租户数据库和复制租户数据库318-322被分别分配给服务器346、348、350。这样,可以通过将原始租户数据库和复制租户数据库在不同服务器346-352中分布来实现负载均衡。
而且,因为如果服务器346-352其中之一发生故障,那么出故障的服务器上的每个租户数据库的至少一个其它副本会存在于较大系统中,所以可以提供容错。例如,正如刚刚提到的,与高级租户306相关联的原始租户数据库和复制租户数据库318-322被分别分配到服务器346、348、350。因此,如果服务器S1 346发生故障而使得租户数据库318不可用(如图3中块354所示),那么剩余的租户数据库320和322仍然可用。类似地,租户数据库324和344也将是不可用的,此时这些租户数据库的副本应当在相应的无故障服务器上继续可用。图3示出了更多的示例,即,其中服务器S2 348发生故障(如块356所示)的示例,其中服务器S3 350发生故障(如块358所示)的示例,以及其中服务器S4 352发生故障(如块360所示)的示例。
因此,图3示出了这样的示例:其中,两个高级租户306、308被分别复制两次、同时四个普通租户310-316被分别复制一次,从而总共(二)×(三)+(四)×(二)或总共十四个原始租户数据库和复制租户数据库要分布在四个可用服务器上。如图所示,结果是阵列大小为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可以指定在完全相等(completelyequality)的给定百分比差内的实际负载均衡是可以被接受的,其中,偏好调节器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 trafficpatterns),并且对于较高精度的负载均衡,可以将负载分布看作每小时平均负载的时间序列。
对于这前三个约束条件,可以遵守下列规定:这些约束条件可以以不同的期望程度被实施,并且不代表要施加到最终得到的布局上的绝对的或极端的(all-or-nothing)要求。例如,系统管理员可以配置与系统故障发生时相对的正常工作期间负载均衡的重要性(importance)。在另一个示例中,如上所述,不需要严格均匀地均衡负载,而是可以是在给定的误差范围或幅度(acertain 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被称为具有计算能力CompPowersi,其以每小时处理的作业数量来度量。每个服务器还具有存储容量StorageCapsi。T={t1,t2,…,tn}表示复制后(post-replication)租户的集合,其中每个租户tj每小时的负载为Loadtj的作业并且具有DataVolumetj的数据量。Tpre是高级租户集合,Treg是普通租户集合,以使得(TpreU Treg=T并且Tpre∩Treg=null(空))。
服务器106a-106n可以在它们的计算能力/约束条件方面是相异的。从而,每个服务器都具相对于其计算能力的归一化负载(normalized load),其中服务器S的这种归一化负载可以表示为Ls。高级租户的服务器和高级租户的副本的服务器可以被定义为集合Spre={sp1,sp2,…spi},而Sreg={sr1,sr2,…srj}表示普通租户的服务器和普通租户的副本的服务器。如可以理解的那样,Spre和Sreg可以有重叠。使用上述符号,负载均衡管理器502和/或负载分布管理器504可以命令(mandate)和/或执行关于得到具有高级租户(714)和普通租户(716)的服务器的负载的运算。
然后,σpre可以是{Lsp1,Lsp2,…Lspi}的标准偏差,而σreg可以是{Lsr1,Lsr2,…,Lsrj}的标准偏差。然后,一般说来,较小的σpre表示容纳高级租户的所有服务器上的负载分布较恒定,从而高级租户的体验更为流畅。相同的推理也适用于普通租户的σreg,尽管对于具有普通租户而没有高级租户的服务器来说可以容忍较大的σreg值。一般说来,可以理解的是,优选的布局应当在可能的程度上最小化∈σpre和σreg二者,以提供更好的用户体验。因此,负载均衡管理器502可以计算参数σpre(720)和σreg(722)。
如上所述,第三约束条件可以指定高级租户可以被提供具有比提供给普通租户的服务器少X%的负载的服务器。该约束条件反映了向高级租户提供更好服务的商业价值(business value)与轻负载服务器相关联。例如,如果期望高级租户被提供以负载比提供给普通租户的服务器的负载少X%的服务器,并且布局产生对于高级租户的平均负载AVGpre和对于普通租户的平均负载AVGreg,那么差(differential)(AVGreg-AVGpre)/AVGreg越接近于X%,第三SLA约束条件越接近于被满足。从而,如图7中所示,负载分布管理器504可以被配置为计算AVGpre(720)和AVGreg(724)。然后,高级负载分布服务器506可以被配置为确定这些参数之间的百分比差(percent difference)(726),如上所述。然后,可以将该百分比差与参数X%比较,以便确定参数Φdiff(728),该参数用于判断对于所谈论的染色体在何种程度上实现第三SLA约束条件。
然后,一般说来,在图7中被评分的染色体可以具有如公式1所示的初始得分:
σpre+σreg+Φdiff,公式1
其中,在表示相对于第三SLA约束条件的X%约束条件的较小标准偏差和较小百分比差时优选较小的得分。但是,除此这外,并且如上所述,例如针对图6,可以通过偏好调节器118来接收偏好参数,这些参数定义上述得分组件取值的范围和方式。
具体说来,α可以表示可以由用户配置的权重,用于表示他们在使高级租户占用的服务器的负载或普通租户占用的服务器的负载更加均衡时的偏好(preference)。与此同时,β表示用于调节实现区别负载要求Φdiff的期望程度的参数。然后,可以如公式2中所示更加充分地表示染色体得分,其可以由得分编译器来确定(730):
ασpre+(1-α)σreg+βΦdiff 公式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发生故障并且未来所有对该服务器的请求都必须被重新路由到其它服务器。然后,针对染色体变种重新计算上面的参数σpre、σreg和Φdiff(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和ScoreFt应当被理解为表示例如根据图7和图8的操作所计算的上面公式2的输出。
图9是示出图1和图5的系统的示例操作的第四流程图900。如上所述,为了解决租户和/或服务器的负载和其它特征每小时都不同的问题,按小时来进行布局决策可能有用。因此,在图9中,针对小时hi来计算最终得分,以得到每小时的得分(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中可见的那样,实际评价函数在其第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之间不同的值。
对于参数α,可以理解,用户可以指定他们期望怎样均衡高级租户或普通租户所占用的服务器负载的偏好(也即,他们想要均衡哪个级别的租户负载)。较大的α表示用于高级租户的负载均衡更加重要,反过来较小的α表示均衡普通租户的负载更加重要。上面的示例算法能够返回非常接近于用户偏好的解,因此,如果α较大,那么算法将得出这样的解:其中,高级租户的负载比普通租户的负载更好地被均衡。另一方面,给定较小的α,算法可以产生这样的结果:该结果使普通租户的负载更加均衡。即使是在可用服务器或服务器的盘空间上有限制,参数α也可以用于实施高级租户与普通租户之间期望的负载均衡。而且,一般说来,α的变化对参数β的效力几乎或完全没有影响。
关于参数β,更加具体说来,如上所述,可以理解的是,该参数涉及用户对实施区别负载的偏好。如果用户更加注重在不同级别的租户之间实施区别负载,也即,β较大,那么算法就有效地响应以满足该要求。但是,当基本参数X%和Φdiff(高级租户与普通租户之间的期望区别负载以及染色体匹配该期望区别的程度)增大时,那么相对较小或较大的β值可能在实施上或多或少地有困难,这尤其依赖于服务器盘空间的限制。
关于参数X%和Φdiff本身,可以理解的是,如上所定义的函数Φ本身可以被调整,以满足不同的偏好。例如,如果高级租户接收到比普通租户差的服务(如下面条件所定义的那样:普通租户的平均响应时间比高级租户的平均响应时间短),那么参数Φdiff就可以被设置为无穷大或有效无穷大,因为这样的情况一般是完全不可接受的。另一方面,如果高级租户相对于普通租户来说得到太多的益处,那么提供给普通租户的服务可能会急剧恶化。因此,当普通租户与高级租户之间的差超过X%(对于SLA约束条件来说该条件不是必要的并且在最佳情况下向高级租户提供过度的好处)时,那么将再次分配无穷大或有效无穷大的值。
如已经讨论的那样,参数λ可以用于指定用户是更加关注正常情况(其中服务器故障罕有发生)还是更加关注服务器故障发生相对频繁的情况。为了表示该情况,可以考虑,serveri崩溃,那么由高级租户和普通租户战用的服务器的最终负载偏差被定义为devpre(i)和devreg(i),同时当没有服务器崩溃时,该偏差可以就用devpre和devreg来表示。
当较大的λ被指定为表示用户对于服务器故障情况下的负载均衡更加关心时,那么devpre和devreg的平均值将变得较小。与此同时,devpre和devreg没有显著地受到负面影响。原因在于,当服务器中任意一个崩溃时负载仍然是均衡的暗示着负载在所有服务器上也是均衡的。另一方面,如果在所有服务器上负载已经是均衡的,那么当服务器崩溃发生时该负载不会总是同样地均衡。
因此,本说明书提供一种在将n个作业分配到m个服务器这一负载均衡问题上取得进步的方法(advance),其包括考虑实现SLA约束条件所需的额外复杂度。这里所描述的布局算法灵活到足以将不同形式的各种SLA约束条件并入其中,并且即使它没有生成满足所有要求的解决方案,也能够产生最佳的可能布局解。所描述的遗传算法提供这样的解决布局问题的解,并且具有将各种不同形式的SLA约束条件封装到它的评价中的灵活性。从而,这里所描述的系统和方法提供了封装各种不同形式的SLA约束条件的完整框架以及考虑到可用资源、需求以及情况(context)渐进地找到满足所述约束条件的最佳可能解的遗传算法。
这里描述的各种技术的实施方式可以被实施在数字电子电路中,或者实施在计算机硬件、固件、软件,或者它们的组合中。实施方式可以实施为计算机程序产品,即有形地具体体现在信息载体中的计算机程序,信息载体例如机器可读存储设备或者传播的信号,以供数据处理装置执行,或者控制数据处理装置的操作,所述数据处理装置例如可编程处理器、计算机、多个计算机。计算机程序,诸如上面描述的计算机程序,可以用任何形式的编程语言编写,包括汇编语言或解释语言,并且,它可以被以任何形式部署,包括作为独立的程序或者作为模块、组件、子程序或其他适于在计算环境中使用的单元。计算机程序可以被部署为在一个计算机上执行或在位于一个地点或分布在多个地点并被通信网络互连起来的多个计算机上执行。
方法步骤可以被一个或多个可编程处理器执行,所述可编程处理器执行计算机程序,以通过对输入数据操作和产生输出来执行功能。方法步骤还可以被用于特殊目的的逻辑电路执行,或者装置可以被实施为用于特殊目的的逻辑电路,所述用于特殊目的的逻辑电路例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
作为例子,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型的数字计算机的任意一个或多个处理器。一般说来,处理器将从只读存储器或随机存取存储器接收指令和数据,或者从两者都接收指令和数据。计算机的元件可以包括至少一个用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。一般说来,计算机还可以包括,或者被可操作地耦合以从一个或多个用于存储数据的海量存储设备接收数据,或把数据传送到海量存储设备,或者二者皆有,所述海量存储设备例如:磁盘、磁光盘或光盘。适于具体实施计算机程序指令和数据的信息载体包括所有形式的非易失性存储器,包括例如半导体存储器件,例如:EPROM、EEPROM和闪存器件;磁盘,例如内置硬盘或可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以由用于特殊目的的逻辑电路补充,或者被包含在用于特殊目的的逻辑电路中。
为了提供与用户的交互,实施方式可以在具有显示设备和键盘以及定点(pointing)设备的计算机上实施,显示设备例如阴极射线管(CRT)或液晶显示器(LCD)监视器,用于向用户显示信息,键盘和指示设备例如鼠标或跟踪球,用户利用它们可以提供到计算机的输入。其他种类的设备也可以被用来提供和用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈,并且,来自用户的输入可以被以任何形式接收,包括声音、语音或触觉输入。
实施方式可以被在包括后端组件或包括中间件组件或包括前端组件的计算系统中实施,或者在这些后端、中间件、前端组件的任意组合中实施,后端组件例如数据服务器,中间件组件例如应用服务器,前端组件例如具有图形用户界面或Web浏览器的客户端计算机,通过图形用户界面或Web浏览器,用户可以和实施方式进行交互。可以利用数字数据通信的任何形式或介质互连组件,数字数据通信的介质例如通信网络。通信网络的例子包括:局域网(LAN)和广域网(WAN),例如因特网。
虽然如这里所描述的那样已经示出了所描述的实施方式的某些特征,但是本领域技术人员现在应当想到很多修改、替换,变化或等同物。因此应当理解,所附权利要求旨在覆盖落入实施例的范围内的所有这些修改和变化。
Claims (15)
1.一种计算机系统,该系统包括:
布局管理器,其被配置为确定多个租户数据库中每一个数据库到多个服务器中一个服务器的布局,其中,所述多个租户数据库包括原始租户数据库和从原始租户数据库复制的复制租户数据库,其中,所述布局管理器包括:
输入处理器,其被配置为确定掌控所述多个租户数据库与所述多个服务器的关联的服务等级协议SLA的约束条件,并且被配置为确定与所述多个服务器相关联的计算约束条件,
染色体比较器,其被配置为将多个染色体进行比较,每个染色体包括所述多个租户数据库中每一个数据库到所述多个服务器中一个服务器的潜在布局,并且被配置为在符合SLA约束条件的基础上并且相对于计算约束条件将所述多个染色体中的每一个进行比较,从而输出所述多个染色体的选定子集;
染色体组合器,其被配置为将所述多个染色体的选定子集中的染色体进行组合以得到下一代染色体,作为在所述染色体比较器和染色体组合器之间的多个染色体的进化循环的一部分,该下一代染色体用于输出到所述染色体比较器并且用于相对于SLA约束条件和计算约束条件对所述下一代染色体中的染色体进行的后续比较;以及
布局选择器,其被配置为监控所述进化循环以及从其中选择选定的染色体用于实施基于所述选定的染色体的布局,
其中,所述SLA约束条件对于所述多个服务器规定针对相应租户的多个租户数据库的负载均衡和容错二者,这二者通过将相应租户的多个租户数据库中的至少两个租户数据库安装到所述多个服务器中的至少两个服务器上来提供。
2.如权利要求1所述的系统,其中,所述SLA约束条件规定与所述多个租户数据库相关联的租户的至少两个级别,所述至少两个级别包括相较于普通级别具有对多个服务器的资源优先访问权的高级级别。
3.如权利要求2所述的系统,其中,所述SLA约束条件规定按如下方式指定所述优先访问权:与普通租户的租户数据库的布局相比,高级租户的租户数据库被布置在多个服务器中具有相对较低负载的服务器上。
4.如权利要求2所述的系统,其中,所述SLA约束条件规定所述优先访问权包括优先容错,所述优先容错是按照如下方式来指定的:与普通租户的租户数据库在所述多个服务器上的布局相比,高级租户的租户数据库被布置在所述多个服务器中的较多的服务器上。
5.如权利要求1所述的系统,其中,所述输入处理器被配置为输入至少一个关于与所述多个租户数据库相关联的租户的租户情况,所述至少一个租户情况指定相关联的租户数据库的数据大小和作业请求特征,并且其中,所述染色体比较器被配置为使用所述至少一个租户情况,相对于SLA约束条件和计算约束条件来评价所述多个染色体。
6.如权利要求1所述的系统,其中,所述输入处理器被配置为输入偏好参数,该偏好参数是从偏好调节器接收的,并且表示所述染色体比较器评价所述SLA约束条件中的至少一个约束条件的方式。
7.如权利要求1所述的系统,其中,所述布局管理器包括染色体生成器,该染色体生成器被配置为生成初始染色体种群,用于由所述染色体比较器进行评价,该初始染色体种群各自被形成为大小为T的阵列,该阵列的元素的值为数字1到S,其中T是所述多个租户数据库的数量,S是所述多个服务器的数量。
8.如权利要求1所述的系统,其中,所述染色体组合器被配置为将所述多个染色体中的染色体对进行组合,包括将每对染色体的每个成员划分为多个部分,然后将来自每对的至少某些部分组合到新的染色体中。
9.如权利要求1所述的系统,其中,所述染色体比较器被配置为评价每个染色体,包括创建多个染色体变种,其中每个染色体变种都与所述多个服务器的相应服务器的潜在故障相关联。
10.如权利要求1所述的系统,其中,所述染色体比较器被配置为评价每个染色体,包括将所述多个服务器的每个服务器的负载进行归一化并且计算所述服务器的负载的标准偏差。
11.如权利要求1所述的系统,其中,所述染色体比较器被配置为针对多个时间段中的每个时间段评价所述多个染色体中的每一个,然后将最终的多个评价组合以得到针对相应染色体的总评价。
12.如权利要求1所述的系统,其中,所述布局选择器被配置为在进化循环的预定数量的代之后、或者在确定所述选定的染色体在预定程度上满足SLA约束条件之后,选择所述选定的染色体。
13.一种计算机实施的方法,包括:
确定多个租户数据库中的每个租户数据库和多个服务器中的至少一个服务器,其中所述租户数据库包括原始租户数据库和从所述原始租户数据库复制的复制租户数据库;
确定掌控所述多个租户数据库对所述多个服务器的访问的服务等级协议SLA的约束条件;
确定与所述多个服务器相关联的计算约束条件;
在符合所述SLA约束条件的基础上并且相对于所述计算约束条件评价多个染色体,每个染色体包括所述多个租户数据库中每一个数据库到所述多个服务器中一个服务器的潜在布局;
输出所述多个染色体的选定子集;
将所述多个染色体的选定子集中的染色体进行组合以得到下一代染色体,作为所述多个染色体的进化循环的部分,下一代染色体用于相对于SLA约束条件和计算约束条件对下一代染色体中的染色体进行的后续比较,;以及
从该进化循环中选择选定的染色体用于实施基于该染色体的布局,
其中,所述SLA约束条件对于所述多个服务器规定针对相应租户的多个租户数据库的负载均衡和容错二者,这二者通过将所述相应租户的多个租户数据库的至少两个租户数据库安装到所述多个服务器的至少两个服务器上来提供。
14.如权利要求13所述的方法,其中,所述SLA约束条件规定与所述多个租户数据库相关联的租户的至少两个级别,所述至少两个级别包括相较于普通级别具有对所述多个服务器的资源的优先访问权的高级级别。
15.如权利要求13所述的方法,其中,确定所述SLA约束条件包括接收偏好参数,该偏好参数表示所述染色体比较器评价所述SLA约束条件中的至少一个约束条件的方式。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910146215.3A CN101931609B (zh) | 2009-06-22 | 2009-06-22 | 多租户数据库应用的遵守服务等级协议的布局 |
US12/758,597 US20100325281A1 (en) | 2009-06-22 | 2010-04-12 | SLA-Compliant Placement of Multi-Tenant Database Applications |
EP10006450.0A EP2270686B1 (en) | 2009-06-22 | 2010-06-22 | SLA-compliant optimised placement of databases on servers |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910146215.3A CN101931609B (zh) | 2009-06-22 | 2009-06-22 | 多租户数据库应用的遵守服务等级协议的布局 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101931609A CN101931609A (zh) | 2010-12-29 |
CN101931609B true CN101931609B (zh) | 2014-07-30 |
Family
ID=42752151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910146215.3A Active CN101931609B (zh) | 2009-06-22 | 2009-06-22 | 多租户数据库应用的遵守服务等级协议的布局 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20100325281A1 (zh) |
EP (1) | EP2270686B1 (zh) |
CN (1) | CN101931609B (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8458334B2 (en) * | 2010-02-11 | 2013-06-04 | International Business Machines Corporation | Optimized capacity planning |
US8434088B2 (en) * | 2010-02-18 | 2013-04-30 | International Business Machines Corporation | Optimized capacity planning |
JP5760843B2 (ja) * | 2011-08-19 | 2015-08-12 | 富士通株式会社 | ストレージ装置、制御装置、およびデータコピー方法 |
US8660949B2 (en) | 2011-09-09 | 2014-02-25 | Sap Ag | Method and system for working capital management |
US9224121B2 (en) * | 2011-09-09 | 2015-12-29 | Sap Se | Demand-driven collaborative scheduling for just-in-time manufacturing |
CN102437965B (zh) * | 2012-01-13 | 2016-04-27 | 北京润通丰华科技有限公司 | 目标站点的访问方法及装置 |
US8744888B2 (en) * | 2012-04-04 | 2014-06-03 | Sap Ag | Resource allocation management |
US9311376B2 (en) | 2012-05-02 | 2016-04-12 | Microsoft Technology Licensing, Llc | Performance service level agreements in multi-tenant database systems |
US20130339424A1 (en) * | 2012-06-15 | 2013-12-19 | Infosys Limited | Deriving a service level agreement for an application hosted on a cloud platform |
US20140019415A1 (en) * | 2012-07-11 | 2014-01-16 | Nec Laboratories America, Inc. | Method and System for Database Cloud Bursting |
US20140067601A1 (en) * | 2012-09-06 | 2014-03-06 | Sap Ag | Supply chain finance planning |
US9760847B2 (en) | 2013-05-29 | 2017-09-12 | Sap Se | Tenant selection in quota enforcing request admission mechanisms for shared applications |
US9584588B2 (en) | 2013-08-21 | 2017-02-28 | Sap Se | Multi-stage feedback controller for prioritizing tenants for multi-tenant applications |
CN104461728B (zh) * | 2013-09-18 | 2019-06-14 | Sap欧洲公司 | 迁移事件调度管理的计算机系统、介质和方法 |
CN104516635B (zh) | 2013-09-26 | 2022-03-08 | Sap欧洲公司 | 一种管理内容显示的方法、系统及存储介质 |
CN104516910B (zh) | 2013-09-26 | 2018-01-12 | Sap欧洲公司 | 在客户端服务器环境中推荐内容 |
US10621000B2 (en) | 2013-10-16 | 2020-04-14 | Hewlett Packard Enterprise Development Lp | Regulating enterprise database warehouse resource usage of dedicated and shared process by using OS kernels, tenants, and table storage engines |
EP3234774B1 (en) * | 2014-11-13 | 2021-01-27 | Telefonaktiebolaget LM Ericsson (publ) | Elasticity for highly availabile applications |
WO2016110936A1 (ja) * | 2015-01-05 | 2016-07-14 | 株式会社日立製作所 | 計算機システム、及び、データ管理方法 |
US11030171B2 (en) * | 2015-01-09 | 2021-06-08 | Ariba, Inc. | Elastic sharding of data in a multi-tenant cloud |
US10505862B1 (en) * | 2015-02-18 | 2019-12-10 | Amazon Technologies, Inc. | Optimizing for infrastructure diversity constraints in resource placement |
US10223649B2 (en) * | 2015-10-16 | 2019-03-05 | Sap Se | System and method of multi-objective optimization for transportation arrangement |
US10848334B2 (en) * | 2016-08-30 | 2020-11-24 | Dwelo Inc. | Automatic transitions in automation settings |
US10637964B2 (en) | 2016-11-23 | 2020-04-28 | Sap Se | Mutual reinforcement of edge devices with dynamic triggering conditions |
US10841020B2 (en) | 2018-01-31 | 2020-11-17 | Sap Se | Online self-correction on multiple data streams in sensor networks |
US20200099760A1 (en) * | 2018-09-24 | 2020-03-26 | Salesforce.Com, Inc. | Interactive customized push notifications with customized actions |
CN112308298B (zh) * | 2020-10-16 | 2022-06-14 | 同济大学 | 一种面向半导体生产线的多场景性能指标预测方法及系统 |
US12074471B2 (en) | 2020-12-18 | 2024-08-27 | Eaton Intelligent Power Limited | Apparatus and methods for distribution of UPS-associated energy storage |
US20230214233A1 (en) * | 2021-12-30 | 2023-07-06 | Pure Storage, Inc. | Dynamic Storage Instance Sizing For Application Deployments |
CN117171261B (zh) * | 2023-07-31 | 2024-05-03 | 蒲惠智造科技股份有限公司 | 面向多数据库单元的弹性扩展智能调用方法和系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101160821A (zh) * | 2005-11-17 | 2008-04-09 | 华为技术有限公司 | 测量mpls网络性能参数的方法及报文发送装置及系统 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2299729B (en) * | 1995-04-01 | 1999-11-17 | Northern Telecom Ltd | Traffic routing in a telecommunications network |
WO2002057946A1 (en) * | 2001-01-18 | 2002-07-25 | The Board Of Trustees Of The University Of Illinois | Method for optimizing a solution set |
US6957200B2 (en) * | 2001-04-06 | 2005-10-18 | Honeywell International, Inc. | Genotic algorithm optimization method and network |
US7000141B1 (en) * | 2001-11-14 | 2006-02-14 | Hewlett-Packard Development Company, L.P. | Data placement for fault tolerance |
EP1345167A1 (en) * | 2002-03-12 | 2003-09-17 | BRITISH TELECOMMUNICATIONS public limited company | Method of combinatorial multimodal optimisation |
DE602004011890T2 (de) * | 2004-02-10 | 2009-03-12 | Sap Ag | Verfahren zur Neuverteilung von Objekten an Recheneinheiten |
JP2008519322A (ja) * | 2004-10-28 | 2008-06-05 | テレコム・イタリア・エッセ・ピー・アー | 電気通信サービスおよび/またはネットワーク管理用のプラットフォームにおけるリソースの管理方法、対応プラットフォーム、およびそのコンピュータ・プログラム生成物 |
US20080177700A1 (en) * | 2007-01-19 | 2008-07-24 | Wen-Syan Li | Automated and dynamic management of query views for database workloads |
US8073790B2 (en) * | 2007-03-10 | 2011-12-06 | Hendra Soetjahja | Adaptive multivariate model construction |
US8301776B2 (en) * | 2007-11-19 | 2012-10-30 | Arris Solutions, Inc. | Switched stream server architecture |
US8429096B1 (en) * | 2008-03-31 | 2013-04-23 | Amazon Technologies, Inc. | Resource isolation through reinforcement learning |
US20100023564A1 (en) * | 2008-07-25 | 2010-01-28 | Yahoo! Inc. | Synchronous replication for fault tolerance |
US8615400B2 (en) * | 2008-08-19 | 2013-12-24 | International Business Machines Corporation | Mapping portal applications in multi-tenant environment |
EP2161902A1 (en) * | 2008-09-05 | 2010-03-10 | BRITISH TELECOMMUNICATIONS public limited company | Load balancing in a data network |
US8424059B2 (en) * | 2008-09-22 | 2013-04-16 | International Business Machines Corporation | Calculating multi-tenancy resource requirements and automated tenant dynamic placement in a multi-tenant shared environment |
US8380960B2 (en) * | 2008-11-04 | 2013-02-19 | Microsoft Corporation | Data allocation and replication across distributed storage system |
-
2009
- 2009-06-22 CN CN200910146215.3A patent/CN101931609B/zh active Active
-
2010
- 2010-04-12 US US12/758,597 patent/US20100325281A1/en not_active Abandoned
- 2010-06-22 EP EP10006450.0A patent/EP2270686B1/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101160821A (zh) * | 2005-11-17 | 2008-04-09 | 华为技术有限公司 | 测量mpls网络性能参数的方法及报文发送装置及系统 |
Non-Patent Citations (2)
Title |
---|
《A Scalable Data Platform for a Large Number of Small》;Fan Yang等;《CIDR2009》;20090107;全文 * |
Fan Yang等.《A Scalable Data Platform for a Large Number of Small》.《CIDR2009》.2009, |
Also Published As
Publication number | Publication date |
---|---|
EP2270686A1 (en) | 2011-01-05 |
US20100325281A1 (en) | 2010-12-23 |
EP2270686B1 (en) | 2018-03-28 |
CN101931609A (zh) | 2010-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101931609B (zh) | 多租户数据库应用的遵守服务等级协议的布局 | |
US10089488B2 (en) | Systems, methods, and apparatuses for implementing cross-organizational data sharing | |
US9760844B2 (en) | Forecasting method, system and machine readable storage medium for the selection between asynchronous or synchronous forecasting based on event criteria | |
US20210294802A1 (en) | Static query optimization | |
US8856066B2 (en) | Sharing information between tenants of a multi-tenant database | |
US8549417B2 (en) | System, method and computer program product for editing an on-demand database service graphical user interface | |
US20180307728A1 (en) | Runtime creation of remote derived sources for query offload | |
US20100250565A1 (en) | Analytics | |
US10909575B2 (en) | Account recommendations for user account sets | |
US10715626B2 (en) | Account routing to user account sets | |
US10817479B2 (en) | Recommending data providers' datasets based on database value densities | |
CN114064249B (zh) | 混合云的跨云计算任务的调度方法、装置以及存储介质 | |
US20130232165A1 (en) | Methods and Systems for Shared Data Sets in an On-Line Services Environment | |
Nivetha et al. | Modeling fuzzy based replication strategy to improve data availabiity in cloud datacenter | |
US20110238705A1 (en) | System, method and computer program product for extending a master-detail relationship | |
US9495430B2 (en) | Systems and methods for batch processing of data records in an on-demand system | |
US9535941B2 (en) | Systems and methods for data object change history | |
US20230297951A1 (en) | Decision support device, decision support system, and decision support method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |