專(zhuān)利名稱(chēng):多租戶(hù)數(shù)據(jù)庫(kù)應(yīng)用的遵守服務(wù)等級(jí)協(xié)議的布局的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多租戶(hù)數(shù)據(jù)庫(kù)(multi-tenant database)應(yīng)用的布局。
背景技術(shù):
軟件作為服務(wù)(Software as a service, SaaS)通常指的是由提供商向用戶(hù)提供 軟件應(yīng)用的功能,經(jīng)常是通過(guò)網(wǎng)絡(luò)遠(yuǎn)程提供。例如,這樣的提供商維護(hù)實(shí)現(xiàn)軟件應(yīng)用所需要 的硬件、人力資源和其它基礎(chǔ)設(shè)施,從而降低總成本和用戶(hù)為了訪問(wèn)軟件和從軟件中受益 所需要做出的努力。這樣的場(chǎng)景的例子可能涉及數(shù)據(jù)庫(kù)應(yīng)用。例如,提供商可以維護(hù)多個(gè)服務(wù)器、相關(guān) 聯(lián)的存儲(chǔ)空間和其它計(jì)算資源,并且可以使用這些計(jì)算資源將數(shù)據(jù)庫(kù)應(yīng)用作為服務(wù)提供給 多個(gè)用戶(hù)。可能常常是這樣的情況,這樣的提供商可能期望在同一時(shí)間或重疊時(shí)間向多個(gè) 用戶(hù)提供這樣的數(shù)據(jù)庫(kù)應(yīng)用,而不同的用戶(hù)則對(duì)于他們希望如何訪問(wèn)和使用數(shù)據(jù)庫(kù)應(yīng)用有 著不同的需求和/或偏好。與此同時(shí),提供商可能在將數(shù)據(jù)庫(kù)應(yīng)用作為服務(wù)來(lái)提供方面面 臨著各種約束條件,并且尤其是,可能面臨著與計(jì)算資源相關(guān)的各種約束條件,這些計(jì)算資 源可用于在不同用戶(hù)之間進(jìn)行分配。結(jié)果是,對(duì)于提供商來(lái)說(shuō)難以在仍然維持用戶(hù)方所期望的服務(wù)體驗(yàn)的同時(shí)以最優(yōu) 化提供商的資源的方式將軟件作為服務(wù)來(lái)提供。
發(fā)明內(nèi)容
根據(jù)一個(gè)基本方面,一種包括記錄在計(jì)算機(jī)可讀介質(zhì)上的指令的計(jì)算機(jī)系統(tǒng)可以 包括布局管理器,其被配置為確定多個(gè)租戶(hù)數(shù)據(jù)庫(kù)中每一個(gè)數(shù)據(jù)庫(kù)到多個(gè)服務(wù)器中一個(gè) 服務(wù)器的布局,其中,所述多個(gè)租戶(hù)數(shù)據(jù)庫(kù)包括原始租戶(hù)數(shù)據(jù)庫(kù)和從原始租戶(hù)數(shù)據(jù)庫(kù)復(fù)制 的復(fù)制租戶(hù)數(shù)據(jù)庫(kù)。所述布局管理器可以包括輸入處理器,其被配置為確定掌控所述多個(gè) 租戶(hù)數(shù)據(jù)庫(kù)與所述多個(gè)服務(wù)器的關(guān)聯(lián)的服務(wù)等級(jí)協(xié)議(SLA)的約束條件,并且被配置為確 定與所述多個(gè)服務(wù)器相關(guān)聯(lián)的計(jì)算約束條件;并且,所述布局管理器可以包括染色體比較 器,其被配置為將多個(gè)染色體進(jìn)行比較,每個(gè)染色體包括所述多個(gè)租戶(hù)數(shù)據(jù)庫(kù)中每一個(gè)數(shù) 據(jù)庫(kù)到所述多個(gè)服務(wù)器中一個(gè)服務(wù)器的潛在布局,并且被配置為在符合SLA約束條件的的 基礎(chǔ)上和相對(duì)于計(jì)算約束條件將所述多個(gè)染色體中的每一個(gè)進(jìn)行比較,以由此輸出多個(gè)染 色體的選定子集。所述布局管理器可以包括染色體組合器,其被配置為將多個(gè)染色體的選 定子集的染色體進(jìn)行組合,以得到下一代染色體,用于輸出到所述染色體組合器以及用于 針對(duì)SLA約束條件和計(jì)算約束條件將下一代染色體的染色體進(jìn)行后續(xù)比較,作為在所述染 色體比較器和染色體組合器之間的多個(gè)染色體的進(jìn)化循環(huán)的部分。所述布局管理器可以包 括布局選擇器,其被配置為監(jiān)控所述進(jìn)化循環(huán)以及從其中選擇選定的染色體用于實(shí)施基于 該染色體的布局。實(shí)施方式可以具有一個(gè)或多個(gè)以下特征。例如,所述SLA約束條件可以對(duì)于多個(gè) 服務(wù)器指定針對(duì)相應(yīng)租戶(hù)的多個(gè)租戶(hù)數(shù)據(jù)庫(kù)的負(fù)載均衡和容錯(cuò)二者,這二者通過(guò)將相應(yīng)租戶(hù)的多個(gè)租戶(hù)數(shù)據(jù)庫(kù)的至少兩個(gè)租戶(hù)數(shù)據(jù)庫(kù)安裝到所述多個(gè)服務(wù)器的至少兩個(gè)上來(lái)提供。 所述SLA約束條件可以指定與所述多個(gè)租戶(hù)數(shù)據(jù)庫(kù)相關(guān)聯(lián)的租戶(hù)的至少兩個(gè)級(jí)別,所述至 少兩個(gè)級(jí)別包括相較于普通級(jí)別具有對(duì)多個(gè)服務(wù)器的資源優(yōu)先訪問(wèn)權(quán)的高級(jí)級(jí)別。對(duì)于后者,所述SLA約束條件可以指定所述優(yōu)先訪問(wèn)權(quán)根據(jù)這樣的布局來(lái)指定 相較于普通租戶(hù)的租戶(hù)數(shù)據(jù)庫(kù)的布局來(lái)說(shuō),高級(jí)租戶(hù)的租戶(hù)數(shù)據(jù)庫(kù)布置在多個(gè)服務(wù)器中具 有相對(duì)較低負(fù)載的服務(wù)器上。所述SLA約束條件還可以規(guī)定所述優(yōu)先訪問(wèn)權(quán)包括優(yōu)先容 錯(cuò),該優(yōu)先容錯(cuò)根據(jù)這樣的布局來(lái)指定相較于普通租戶(hù)的租戶(hù)數(shù)據(jù)庫(kù)在所述多個(gè)服務(wù)器 的布置來(lái)說(shuō),高級(jí)租戶(hù)的租戶(hù)數(shù)據(jù)庫(kù)布置在所述多個(gè)服務(wù)器中較多的服務(wù)器上。所述輸入處理器可以被配置為輸入至少一個(gè)與租戶(hù)相關(guān)聯(lián)的租戶(hù)情況,該租戶(hù)與 多個(gè)租戶(hù)數(shù)據(jù)庫(kù)相關(guān)聯(lián),所述至少一個(gè)租戶(hù)情況指定相關(guān)聯(lián)的租戶(hù)數(shù)據(jù)庫(kù)的數(shù)據(jù)大小和作 業(yè)請(qǐng)求特征,并且其中,所述染色體比較器被配置為使用所述至少一個(gè)租戶(hù)情況,相對(duì)于 SLA約束條件和計(jì)算約束條件來(lái)評(píng)價(jià)所述多個(gè)比較器。所述輸入處理器可以被配置為輸入 偏好參數(shù),該偏好參數(shù)是從偏好調(diào)節(jié)器接收到的,并且表示所述染色體比較器評(píng)價(jià)至少一 個(gè)SLA約束條件的方式。所述布局管理器可以包括染色體生成器,該染色體生成器被配置為生成初始染色 體種群,用于所述染色體比較器進(jìn)行評(píng)價(jià),該初始染色體種群各自由大小為T(mén)的陣列組成, 該陣列的元素編號(hào)為1到S,其中T是所述多個(gè)租戶(hù)數(shù)據(jù)庫(kù)的數(shù)量,S是所述多個(gè)服務(wù)器的 數(shù)量。所述染色體組合器可以被配置為將多個(gè)染色體對(duì)進(jìn)行組合,包括將每對(duì)的每個(gè)成員 分成多個(gè)部分,然后將來(lái)自每對(duì)的至少某些部分組合到新的染色體中。所述染色體比較器可以被配置為評(píng)價(jià)每個(gè)染色體,包括創(chuàng)建多個(gè)染色體變種,其 中每個(gè)染色體變種都與所述多個(gè)服務(wù)器的相應(yīng)服務(wù)器的潛在故障相關(guān)聯(lián)。所述染色體比較 器可以被配置為評(píng)價(jià)每個(gè)染色體,包括將所述多個(gè)服務(wù)器的每個(gè)服務(wù)器的負(fù)載進(jìn)行歸一化 并且計(jì)算服務(wù)器的負(fù)載的標(biāo)準(zhǔn)偏差。所述染色體比較器可以被配置為針對(duì)多個(gè)時(shí)間段的每 個(gè)時(shí)間段評(píng)價(jià)所述多個(gè)染色體中的每一個(gè),然后將最終的多個(gè)評(píng)價(jià)組合以得到針對(duì)相應(yīng)染 色體的總評(píng)價(jià)。所述布局選擇器可以被配置為在預(yù)定數(shù)量代的進(jìn)化循環(huán)之后、或者在確定選定的 染色體在預(yù)定程度上滿(mǎn)足SLA約束條件之后,選擇選定的染色體。根據(jù)另一個(gè)一般方面,一種計(jì)算機(jī)實(shí)施的方法可以包括確定多個(gè)租戶(hù)數(shù)據(jù)庫(kù)中 的每個(gè)和多個(gè)服務(wù)器中的至少一個(gè),其中所述租戶(hù)數(shù)據(jù)庫(kù)包括原始租戶(hù)數(shù)據(jù)庫(kù)和從原始租 戶(hù)數(shù)據(jù)庫(kù)復(fù)制的復(fù)制租戶(hù)數(shù)據(jù)庫(kù)。該方法可以包括確定掌控所述多個(gè)租戶(hù)數(shù)據(jù)庫(kù)對(duì)所述 多個(gè)服務(wù)器的訪問(wèn)的服務(wù)等級(jí)協(xié)議SLA的約束條件;確定與所述多個(gè)服務(wù)器相關(guān)聯(lián)的計(jì)算 約束條件;在符合SLA約束條件的基礎(chǔ)上和相對(duì)于計(jì)算約束條件評(píng)價(jià)多個(gè)染色體,每個(gè)染 色體包括所述多個(gè)租戶(hù)數(shù)據(jù)庫(kù)中每一個(gè)數(shù)據(jù)庫(kù)到所述多個(gè)服務(wù)器中一個(gè)服務(wù)器的潛在布 局。所述方法可以包括輸出選定的多個(gè)染色體的子集;將選定的多個(gè)染色體的子集的染 色體進(jìn)行組合,以得到下一代染色體,用于輸出到所述染色體組合器以及用于針對(duì)SLA約 束條件和計(jì)算約束條件將下一代染色體的染色體進(jìn)行后續(xù)比較,作為所述多個(gè)染色體的進(jìn) 化循環(huán)的部分;以及從該進(jìn)化循環(huán)中選擇選定的染色體用于實(shí)施基于該染色體的布局。實(shí)施方式可以具有一個(gè)或多個(gè)以下特征。例如,所述SLA約束條件可以對(duì)于多個(gè) 服務(wù)器指定針對(duì)相應(yīng)租戶(hù)的多個(gè)租戶(hù)數(shù)據(jù)庫(kù)的負(fù)載均衡和容錯(cuò)二者,這二者通過(guò)將相應(yīng)租戶(hù)的多個(gè)租戶(hù)數(shù)據(jù)庫(kù)的至少兩個(gè)租戶(hù)數(shù)據(jù)庫(kù)安裝到所述多個(gè)服務(wù)器的至少兩個(gè)上來(lái)提供。 所述SLA約束條件可以指定與所述多個(gè)租戶(hù)數(shù)據(jù)庫(kù)相關(guān)聯(lián)的租戶(hù)的至少兩個(gè)級(jí)別,所述至 少兩個(gè)級(jí)別包括相較于普通級(jí)別具有對(duì)多個(gè)服務(wù)器的資源優(yōu)先訪問(wèn)權(quán)的高級(jí)級(jí)別。確定所 述SLA約束條件可以包括接收偏好參數(shù),該偏好參數(shù)表示所述染色體比較器評(píng)價(jià)至少一個(gè) SLA約束條件的方式。根據(jù)另一個(gè)一般方面,一種計(jì)算機(jī)程序產(chǎn)品可以有形地具體實(shí)現(xiàn)在計(jì)算機(jī)可讀介 質(zhì)上并且可以包括當(dāng)運(yùn)行時(shí)被配置為執(zhí)行如下操作的指令確定多個(gè)租戶(hù)數(shù)據(jù)庫(kù)中的每個(gè) 到多個(gè)服務(wù)器中的一個(gè)的布局,其中所述租戶(hù)數(shù)據(jù)庫(kù)包括原始租戶(hù)數(shù)據(jù)庫(kù)和從原始租戶(hù)數(shù) 據(jù)庫(kù)復(fù)制的復(fù)制租戶(hù)數(shù)據(jù)庫(kù)。當(dāng)運(yùn)行時(shí)所述指令還可以被配置為將所述多個(gè)租戶(hù)數(shù)據(jù)庫(kù) 在所述多個(gè)服務(wù)器上的潛在布局表達(dá)為染色體,該染色體用大小為T(mén)的陣列表達(dá)并且還被 配置為確定連續(xù)代的染色體,以及監(jiān)控所述連續(xù)代并且從其中選擇選定的染色體用于實(shí)施 基于該染色體的布局,該陣列的元素編號(hào)為1到S,其中T是所述多個(gè)租戶(hù)數(shù)據(jù)庫(kù)的數(shù)量,S 是所述多個(gè)服務(wù)器的數(shù)量。實(shí)施方式可以具有一個(gè)或多個(gè)以下特征。例如,所述確定連續(xù)代可以通過(guò)相對(duì) 于服務(wù)等級(jí)協(xié)議(SLA)的約束條件以及相對(duì)于與所述多個(gè)服務(wù)器相關(guān)聯(lián)的計(jì)算約束條件 評(píng)價(jià)當(dāng)前代染色體,所述SLA約束條件掌控所述多個(gè)租戶(hù)數(shù)據(jù)庫(kù)與所述多個(gè)服務(wù)器的關(guān)聯(lián) 性。所述確定所述連續(xù)代可以通過(guò)基于所述評(píng)價(jià)確定選定的當(dāng)前代的子集,將選定的子集 對(duì)進(jìn)行組合來(lái)得到下一代,然后對(duì)該下一代重新執(zhí)行所述評(píng)價(jià),以得到其另一個(gè)選定的子 集。下面在附圖和說(shuō)明書(shū)中闡述了一個(gè)或多個(gè)實(shí)施方式的細(xì)節(jié)。從說(shuō)明書(shū)和附圖中以 及從權(quán)利要求中其它特征將變得明顯。
圖1是布置(place)多租戶(hù)數(shù)據(jù)庫(kù)應(yīng)用的布局系統(tǒng)(placement system)的框圖。圖2是示出圖1的系統(tǒng)中所使用的染色體(chromosome)的示例組合的框圖。圖3是將容錯(cuò)(fault tolerance)并入圖1的系統(tǒng)中的示例染色體的框圖。圖4是圖示圖1的系統(tǒng)的示例操作的流程圖。圖5是可以用于圖1的示例中的示例染色體比較器的框圖。圖6是示出圖1和圖5的系統(tǒng)的示例操作的第一流程圖。圖7是示出圖1和圖5的系統(tǒng)的示例操作的第二流程圖。圖8是示出圖1和圖5的系統(tǒng)的示例操作的第三流程圖。圖9是示出圖1和圖5的系統(tǒng)的示例操作的第四流程圖。
具體實(shí)施例方式圖1是布置(place)多租戶(hù)數(shù)據(jù)庫(kù)應(yīng)用的布局系統(tǒng)(placement system) 100的 框圖。在系統(tǒng)100中,布局管理器102被配置為在向租戶(hù)104提供期望等級(jí)的個(gè)人定制 服務(wù)的同時(shí),以最優(yōu)化服務(wù)器106a-106n的計(jì)算資源的方式分配關(guān)于服務(wù)器組(server farm) 106的多個(gè)服務(wù)器的多個(gè)租戶(hù)104的布局。而且,布局管理器102可以以快速、有效、可 重復(fù)的方式并且針對(duì)各種不同租戶(hù)的數(shù)量、類(lèi)型和工作需求的大范圍示例實(shí)現(xiàn)這些目標(biāo)。
更加具體來(lái)說(shuō),如上所述,可以理解的是,服務(wù)器組106可以由第三方托管商提 供,該第三方托管商(host)例如將數(shù)據(jù)庫(kù)應(yīng)用提供給租戶(hù)104。也就是說(shuō),如已知的那樣, 為了以節(jié)省成本的方式將數(shù)據(jù)庫(kù)應(yīng)用作為SaaS提供物(offering)來(lái)托管(host),擁有服 務(wù)器組106的提供商/托管商可以部署常用的多重租用(multi-tenancy)部署策略,其中 數(shù)據(jù)庫(kù)應(yīng)用的一個(gè)實(shí)例(instance)被許多企業(yè)(business)(即,租戶(hù)104)共享。這種多 重租用不僅有助于節(jié)省諸如用于硬件、軟件和數(shù)據(jù)中心的基本建設(shè)費(fèi)用,還有助于節(jié)省諸 如用于人力和電力的運(yùn)作費(fèi)用。但是,多重租用也會(huì)造成軟件部署的高成本,例如由于針對(duì) 租戶(hù)104定制數(shù)據(jù)庫(kù)應(yīng)用的部署所需要的高復(fù)雜度和必要條件而造成的高成本。如下面將 詳細(xì)描述的那樣,這些針對(duì)一個(gè)或多個(gè)租戶(hù)104提供數(shù)據(jù)庫(kù)應(yīng)用的定制的需求常常被記錄 在眾所周知的服務(wù)等級(jí)協(xié)議(SLA)中。租戶(hù)104中的每一個(gè)都可以有這樣的SLA,該SLA掌控(govern)租戶(hù)104對(duì)服務(wù) 器106a-106n托管的數(shù)據(jù)庫(kù)應(yīng)用的訪問(wèn)。在這方面,可以理解的是,租戶(hù)104可以分別代表 例如使用托管服務(wù)的企業(yè)或公司,其中,每個(gè)這樣的租戶(hù)將由此典型地具有使用同一個(gè)租 戶(hù)賬戶(hù)訪問(wèn)所托管的應(yīng)用的多個(gè)用戶(hù)。特定租戶(hù)賬戶(hù)的這多個(gè)用戶(hù)可以被稱(chēng)為租戶(hù)實(shí)例。SLA的一個(gè)方面涉及關(guān)于租用級(jí)別(tenancy class)的每個(gè)租戶(hù)的識(shí)別 (identification),在該上下文中,術(shù)語(yǔ)“級(jí)別”指的是提供給一個(gè)租戶(hù)的服務(wù)等級(jí)或服務(wù) 類(lèi)型,該服務(wù)等級(jí)或服務(wù)類(lèi)型優(yōu)于或者不同于提供給另一個(gè)租戶(hù)的服務(wù)等級(jí)或服務(wù)類(lèi)型。 在圖1的示例中,并且在這里通常來(lái)說(shuō),雖然可以理解的是,級(jí)別的數(shù)量可以大于2,但是示 例中假設(shè)存在兩個(gè)級(jí)別,稱(chēng)為高級(jí)(premium)租戶(hù)108和普通(regular)租戶(hù)110。在圖1 的示例中,可以給高級(jí)租戶(hù)108提供比普通租戶(hù)110更高等級(jí)的容錯(cuò)和/或更加快速的響 應(yīng)時(shí)間(例如,對(duì)特定數(shù)據(jù)庫(kù)查詢(xún)做出響應(yīng)所需要的時(shí)間)。下面將更加詳細(xì)地描述掌控租 戶(hù)104對(duì)服務(wù)器106的訪問(wèn)的SLA的其它方面。如上所述,“多重租用”本身用于托管的數(shù)據(jù)庫(kù)應(yīng)用這一概念是眾所周知的。在該 意義上,雖然在圖1中沒(méi)有專(zhuān)門(mén)示出,但是已知這種托管的數(shù)據(jù)庫(kù)應(yīng)用一般有兩層運(yùn)行在 (例如,網(wǎng)絡(luò)和應(yīng)用)服務(wù)器上的應(yīng)用層和運(yùn)行在數(shù)據(jù)庫(kù)系統(tǒng)上的數(shù)據(jù)庫(kù)層。為了本說(shuō)明書(shū) 中示例的目的,將假設(shè)多重租用發(fā)生在服務(wù)的數(shù)據(jù)庫(kù)層上。實(shí)現(xiàn)多租戶(hù)數(shù)據(jù)庫(kù)應(yīng)用的一種已知方法被稱(chēng)為數(shù)據(jù)庫(kù)空間方法(database space approach),其一般適用于例如這樣的租戶(hù),其具有相對(duì)較大數(shù)據(jù)和計(jì)算負(fù)載,和/或?qū)?shù) 據(jù)隔離和安全性具有高等級(jí)需求。在數(shù)據(jù)庫(kù)空間方法中,允許多個(gè)用戶(hù)運(yùn)行在同一個(gè)數(shù)據(jù) 庫(kù)系統(tǒng)上,同時(shí)它們的數(shù)據(jù)被分別存儲(chǔ)在分離的數(shù)據(jù)空間中。該方法具有用戶(hù)數(shù)據(jù)隔離的 優(yōu)點(diǎn),并且通常幾乎不需要或者完全不需要對(duì)應(yīng)用進(jìn)行修改??赡軐?duì)于系統(tǒng)級(jí)資源帶來(lái)開(kāi) 銷(xiāo),諸如系統(tǒng)表格和其它所應(yīng)用的程序,因?yàn)槊總€(gè)數(shù)據(jù)庫(kù)空間都需要這些資源。通過(guò)用于多重租用的數(shù)據(jù)空間方法,租戶(hù)的數(shù)據(jù)庫(kù)可以被復(fù)制到多個(gè)服務(wù)器(例 如,完全復(fù)制),以便既實(shí)現(xiàn)容錯(cuò)又實(shí)現(xiàn)負(fù)載均衡。例如,高級(jí)租戶(hù)108a可以具有一定大小 的數(shù)據(jù)并且這些數(shù)據(jù)與每小時(shí)涉及訪問(wèn)該數(shù)據(jù)的一定數(shù)量的作業(yè)相關(guān)聯(lián)。如果相應(yīng)的數(shù)據(jù) 庫(kù)被復(fù)制,那么就可以將原始數(shù)據(jù)庫(kù)存儲(chǔ)在第一服務(wù)器(例如,服務(wù)器106a)上,同時(shí)可以 將復(fù)制的數(shù)據(jù)庫(kù)存儲(chǔ)在第二服務(wù)器(例如,服務(wù)器106b)上。然后,當(dāng)關(guān)于訪問(wèn)數(shù)據(jù)庫(kù)的請(qǐng) 求(例如,數(shù)據(jù)庫(kù)查詢(xún))到達(dá)時(shí),可以將請(qǐng)求路由到租戶(hù)數(shù)據(jù)庫(kù)和復(fù)制的租戶(hù)數(shù)據(jù)庫(kù)中任意 一個(gè)或者路由到它們二者。當(dāng)這兩個(gè)數(shù)據(jù)庫(kù)都可用時(shí),這樣的配置對(duì)于服務(wù)器106a/106b提供了負(fù)載均衡,這是因?yàn)椴樵?xún)可以被交替地路由至服務(wù)器106a/106b中的每一個(gè),所以 不需要兩個(gè)服務(wù)器中的任何一個(gè)對(duì)所有查詢(xún)都做出響應(yīng)。而且,在服務(wù)器106a/106b中的 一個(gè)出故障或者不可用的情況下,更多查詢(xún)?nèi)匀豢梢员宦酚傻椒?wù)器106a/106b中的剩余 一個(gè),從而在系統(tǒng)100中提供容錯(cuò)水平(a level of fault tolerance)。已知的是,以最優(yōu)方式相對(duì)于服務(wù)器106a-106n分配或布置租戶(hù)104是個(gè)難題。例 如,如果一個(gè)或多個(gè)租戶(hù)數(shù)據(jù)庫(kù)被分配給一個(gè)服務(wù)器并且只消耗了那個(gè)服務(wù)器相對(duì)較小部 分的計(jì)算資源,那么所談?wù)摰淖鈶?hù)就可能會(huì)接收到高等級(jí)的服務(wù),但是服務(wù)器組106的托 管商將經(jīng)歷低效率并且浪費(fèi)地使用服務(wù)器資源。另一方面,如果租戶(hù)104(或多個(gè)租戶(hù))被 分配給一個(gè)服務(wù)器并且消耗了那個(gè)服務(wù)器所有或者近乎所有的計(jì)算資源,那么這可能充分 利用托管商/提供商的資源,但是可能會(huì)為所談?wù)摰囊粋€(gè)或多個(gè)租戶(hù)提供較慢或者不能令 人滿(mǎn)意的體驗(yàn)。甚至對(duì)于相對(duì)較小數(shù)量的服務(wù)器和租戶(hù)來(lái)說(shuō),可能也難以通過(guò)匹配租戶(hù)的 預(yù)期同時(shí)最優(yōu)化托管商的資源的方式給每個(gè)租戶(hù)數(shù)據(jù)庫(kù)布置相應(yīng)的服務(wù)器。對(duì)于較大數(shù)量的服務(wù)器和租戶(hù)來(lái)說(shuō),由于將T個(gè)租戶(hù)分配到S個(gè)服務(wù)器的解空間 大小為ST,因而給租戶(hù)布置服務(wù)器的問(wèn)題被擴(kuò)展地相當(dāng)大。在多租戶(hù)數(shù)據(jù)庫(kù)應(yīng)用的上下文 中將租戶(hù)分配到服務(wù)器這個(gè)一般問(wèn)題是已知的,正如對(duì)該問(wèn)題的許多可能解也是已知的一 樣。圖1的系統(tǒng)100 (具體說(shuō)來(lái),布局管理器102)通過(guò)快速并且有效的方式超出了這些已 知的解,以找出租戶(hù)104到服務(wù)器106的合適的布局。系統(tǒng)100還允許租戶(hù)104和服務(wù)器 106遵守基本(Underlying)SLA,該SLA可以包括例如容錯(cuò)和負(fù)載均衡并且考慮服務(wù)器106 的(可用)計(jì)算資源(例如,處理資源和存儲(chǔ)資源)之間的可能的異類(lèi)性。具體說(shuō)來(lái),系統(tǒng)100可以實(shí)現(xiàn)被稱(chēng)為遺傳算法(Genetic Algorithm, GA)的隨機(jī)化 算法方法,該遺傳算法一般指的是達(dá)爾文自然選擇的計(jì)算機(jī)模擬,達(dá)爾文自然選擇通過(guò)連 續(xù)代(successive generations)的迭代來(lái)向問(wèn)題/解空間中的最優(yōu)解收斂。這種遺傳算 法被系統(tǒng)100用來(lái)將SLA的要求并入到布局最優(yōu)化過(guò)程中。而且,系統(tǒng)100能夠提出租戶(hù) 104到服務(wù)器106的“可用最佳(best-available) ”布局,即使在沒(méi)有完全匹配所有SLA要 求的已知解的時(shí)候也是如此。因此,在圖1中,布局管理器102可以被配置為確定租戶(hù)104的多個(gè)租戶(hù)數(shù)據(jù)庫(kù)中 的每一個(gè)到多個(gè)服務(wù)器106中的一個(gè)服務(wù)器的布局,其中,多個(gè)租戶(hù)數(shù)據(jù)庫(kù)包括原始租戶(hù) 數(shù)據(jù)庫(kù)和從原始租戶(hù)數(shù)據(jù)庫(kù)復(fù)制的復(fù)制租戶(hù)數(shù)據(jù)庫(kù)(例如,為了這里所提到的容錯(cuò)和/或 負(fù)載均衡的目的)。在這點(diǎn)上,可以理解的是,作為術(shù)語(yǔ),“租戶(hù)104”可以指代相應(yīng)的租戶(hù) 數(shù)據(jù)庫(kù)或者與相應(yīng)的租戶(hù)數(shù)據(jù)庫(kù)互換使用。例如,圖1中示為租戶(hù)108a的Tp,el可以指代所 談?wù)摰淖鈶?hù)的租戶(hù)數(shù)據(jù)庫(kù),其可以被復(fù)制用于利用服務(wù)器106的相應(yīng)服務(wù)器來(lái)存儲(chǔ)。以此 方式,可以以簡(jiǎn)明扼要的形式來(lái)表示和描述租戶(hù)(數(shù)據(jù)庫(kù))到服務(wù)器的示例布局,諸如下面 關(guān)于圖2和圖3所描述的那樣。當(dāng)然,應(yīng)當(dāng)理解的是,在實(shí)踐中,給定租戶(hù)實(shí)際上可能具有 多于一個(gè)待復(fù)制/存儲(chǔ)的數(shù)據(jù)庫(kù)。在系統(tǒng)100中,上述遺傳算法方法可以例如通過(guò)創(chuàng)建“染色體”來(lái)實(shí)現(xiàn),“染色體” 代表上述將“T”個(gè)租戶(hù)布置到“S”個(gè)服務(wù)器上的問(wèn)題的可能解。下面提供這種租戶(hù)-服務(wù) 器染色體的特定示例并且將例如參照?qǐng)D2和圖3詳細(xì)進(jìn)行討論。可以使用多個(gè)輸入來(lái)創(chuàng)建這些染色體并且最終進(jìn)行評(píng)價(jià)。例如,如圖1所示,可以 存在SLA約束條件112,當(dāng)創(chuàng)建/評(píng)價(jià)染色體(可能解)時(shí)可以將這些約束條件考慮在內(nèi)。下面將提供這些SLA約束條件的具體示例,但是一般說(shuō)來(lái),應(yīng)當(dāng)理解,這些約束條件反映的 是要提供給給定租戶(hù)的數(shù)據(jù)庫(kù)服務(wù)的必要特征和/或期望特征。為此,SLA約束條件112可 以包括對(duì)于負(fù)載均衡和/或容錯(cuò)的最低要求,并且可以定義對(duì)于高級(jí)(相較于普通)租戶(hù) 在這些及其它方面在服務(wù)上的差別。這樣的SLA約束條件112中的某些條件可以是必需的 /必不可少的,而其它條件可以是可選的,同時(shí)還有一些條件可以被并入以基于用戶(hù)的偏好 來(lái)改變程度(degree)。計(jì)算約束條件114指的是關(guān)于服務(wù)器106a-106n的計(jì)算資源的輸入。例如,每個(gè) 這樣的服務(wù)器在處理能力(例如,可以在給定時(shí)間單位內(nèi)處理的作業(yè)請(qǐng)求的最大數(shù)量或大 小)或存儲(chǔ)容量方面可能多少有一點(diǎn)不同。有點(diǎn)類(lèi)似地,租戶(hù)情況(context) 116可以指代 每個(gè)租戶(hù)104的特定需求或特征。僅僅舉兩個(gè)例子來(lái)說(shuō),例如,某些租戶(hù)可能需要大型數(shù)據(jù) 庫(kù),但是可能相對(duì)不頻繁地訪問(wèn)數(shù)據(jù)庫(kù),而相反地,其它租戶(hù)可能具有較小的數(shù)據(jù)庫(kù),這些 數(shù)據(jù)庫(kù)被較為頻繁地訪問(wèn)。應(yīng)當(dāng)理解,可以相對(duì)于計(jì)算約束條件114和/或租戶(hù)情況116來(lái)定義SLA約束條 件112。例如,SLA約束條件112可能要求每個(gè)租戶(hù)104的應(yīng)用數(shù)據(jù)都必須適應(yīng)于服務(wù)器 106a-106n中的一個(gè)(例如,必須至少適應(yīng)于服務(wù)器106a-106n的最小存儲(chǔ)空間)。因此, 這樣的SLA約束條件可能被一個(gè)租戶(hù)滿(mǎn)足但可能不被另一個(gè)(具有較大應(yīng)用數(shù)據(jù)大小的) 租戶(hù)滿(mǎn)足。如上所述,可能需要滿(mǎn)足SLA約束條件112中的一些條件,以便布局解(placement solution)(被表示為染色體)被視為是可行的,而同時(shí)放寬或去除其它SLA約束條件112。 因此,示出偏好調(diào)節(jié)器118,其可以用于提供這種在必要的SLA約束條件和可選的SLA約束 條件之間的指示(designation),而且針對(duì)非必要的SLA約束條件還提供在何種程度上可 以放寬或去除這些約束條件。對(duì)于后者,例如,SLA約束條件可以規(guī)定布置給高級(jí)租戶(hù)108 的服務(wù)器的負(fù)載應(yīng)當(dāng)比提供給普通租戶(hù)110的服務(wù)器的負(fù)載少(這意味著對(duì)高級(jí)租戶(hù) 有更快的響應(yīng)時(shí)間)。因此,偏好調(diào)節(jié)器118可以用于要求維持的差,或者可以用于通 過(guò)只要求維持加/減來(lái)放寬該約束條件,其中,偏好調(diào)節(jié)器118允許值的調(diào)整。 下面將詳細(xì)提供偏好調(diào)節(jié)器118的這一示例用途及其它示例用途。因此,在布局管理器102中,輸入處理器(handler) 120可以被配置為確定某些或 全部輸入112-118,例如,包括掌控多個(gè)租戶(hù)數(shù)據(jù)庫(kù)與多個(gè)服務(wù)器的關(guān)聯(lián)的SLA約束條件 112和多個(gè)服務(wù)器106a-106n相關(guān)聯(lián)的計(jì)算約束條件114。然后,遺傳算法管理器112可 以被配置為使用所接收到的輸入來(lái)創(chuàng)建表示租戶(hù)104到服務(wù)器106a-106n的布局的可能 解的多個(gè)染色體,其中可以對(duì)照例如SLA約束條件112來(lái)評(píng)價(jià)這些可能解。根據(jù)遺傳算 法,這些經(jīng)過(guò)評(píng)價(jià)的染色體中最好的一個(gè)可以被“再生”以創(chuàng)建新一代染色體或新一種群 (population)的染色體,然后新一代染色體或新一種群(population)的染色體本身可以 被評(píng)價(jià),從而選擇其子集以供進(jìn)一步再生和后續(xù)評(píng)價(jià)。通過(guò)這樣的方式,每一代/每一種群 的染色體都將趨于向?qū)⒆鈶?hù)104布置到服務(wù)器106a-106n的最優(yōu)解收斂。最終,布局選擇 器124可以用于選擇解(染色體)中的特定一個(gè),用于執(zhí)行租戶(hù)104到服務(wù)器106a-106n 的實(shí)際分配或布局。更加具體說(shuō)來(lái),遺傳算法管理器122可以包括染色體生成器126,其被配置為生成 租戶(hù)-服務(wù)器染色體。這樣的生成過(guò)程可以隨機(jī)發(fā)生,或者可以包括關(guān)于將特定租戶(hù)布置或不布置給特定服務(wù)器的一些初始方針或限制。如上所述,下面將針對(duì)圖2和圖3來(lái)提供這 種染色體的示例。但是一般說(shuō)來(lái),可以理解的是,染色體只是對(duì)于上述的租戶(hù)-服務(wù)器布局 問(wèn)題的潛在的解,其可以被實(shí)施為數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)包括大小為租戶(hù)總數(shù)T的陣列(包 括原始租戶(hù)數(shù)據(jù)庫(kù)和復(fù)制的租戶(hù)數(shù)據(jù)庫(kù))并且具有從1到S的元素值,其中S代表可用服 務(wù)器的總數(shù)。例如,這樣的染色體的簡(jiǎn)單示例可以是這樣情況兩個(gè)租戶(hù)Tl和T2以及兩個(gè) 服務(wù)器Sl和S2。然后,可能的布局解(染色體)可以包括[T1/S1,T2/S2]、或[T2/S1,T1/ S2]、或[T1/S1,T2/S1](也即沒(méi)有租戶(hù)在S2上)、或[T1/S2,T2/S2](也即,沒(méi)有租戶(hù)在Sl 上)。當(dāng)然,如上所述,較大數(shù)量的租戶(hù)和服務(wù)器導(dǎo)致可用的染色體池呈指數(shù)增長(zhǎng),因而 難以或不可能生成,更別說(shuō)評(píng)價(jià),所有的可能解。許多因素可能加劇這一困難。例如,可 能存在時(shí)間約束條件,該時(shí)間約束條件可能出現(xiàn)在計(jì)算布局解/分配時(shí),諸如出現(xiàn)在新租 戶(hù)或新服務(wù)器可能變?yōu)榭捎没虿豢捎脮r(shí)(例如,服務(wù)器故障)。而且,如上所述,各種輸入 112-118可能是復(fù)雜的,這是因?yàn)?,僅僅給出幾個(gè)例子來(lái)說(shuō),SLA約束條件112可能在類(lèi)型和 程度上有所不同,服務(wù)器106a-106n在它們的計(jì)算資源方面可能是異類(lèi)的,并且租戶(hù)情況 116也可能相當(dāng)不同并且可能隨著時(shí)間而改變。因此,染色體生成器126生成初始染色體種群或集合,而非嘗試產(chǎn)生并評(píng)價(jià)所有 可能解,然后該初始染色體種群或集合被染色體比較器128評(píng)價(jià),所述染色體比較器128被 配置為在符合SLA約束條件112的基礎(chǔ)上并且相對(duì)于計(jì)算約束條件114 (并且還有例如租 戶(hù)情況116和/或從偏好調(diào)節(jié)器118接收到的用戶(hù)偏好)將染色體種群進(jìn)行比較,以便由 此輸出選定的多個(gè)染色體的子集,該子集代表租戶(hù)104對(duì)服務(wù)器106a-106n的可用最佳匹 配/布局。下面將提供染色體比較器128的比較和評(píng)價(jià)過(guò)程的細(xì)節(jié)和示例。然后,染色體組合器130可以接收選定的多個(gè)染色體的子集并且可以被配置為將 選定的多個(gè)染色體的子集的染色體進(jìn)行組合,以便得到下一代(下一種群)染色體,作為在 染色體比較器128和染色體比較器130之間連續(xù)代的多個(gè)染色體的進(jìn)化循環(huán)的一部分,下 一代染色體用于輸出到染色體比較器128,染色體比較器128接著可以針對(duì)輸入處理器120 的輸入執(zhí)行對(duì)下一代染色體的其它后續(xù)比較,所述輸入包括例如輸入112-118。對(duì)于連續(xù)代 中的每一代,新的染色體種群代表或包括租戶(hù)104相對(duì)于服務(wù)器106a-106n的可能的改進(jìn) 布局或最優(yōu)布局。從而,新的代/種群可以被迭代地創(chuàng)建,直到遇到最優(yōu)解(例如,直到滿(mǎn) 足包括SLA約束條件的所有輸入),或者直到遇到達(dá)到某個(gè)預(yù)定義滿(mǎn)足等級(jí)的輸入,或者直 到計(jì)算新的代/種群的時(shí)間被用完(在該時(shí)間點(diǎn),可以選擇當(dāng)前代的最佳解)。因此,假定如上所述的SLA約束條件112的情況下,可以理解,系統(tǒng)100能夠找出 租戶(hù)104到服務(wù)器106a-106n的最優(yōu)分配,以使得絕對(duì)滿(mǎn)足必要SLA約束條件,同時(shí)按照用 戶(hù)所提供的優(yōu)先級(jí)滿(mǎn)足可選SLA約束條件,并且使得貫穿所有租戶(hù)作業(yè)的最大完成時(shí)間最 小化。對(duì)于后者,這種貫穿所有作業(yè)的最大完成時(shí)間可以被稱(chēng)為完工時(shí)間(makespan)。從 而,系統(tǒng)100可以被配置為最小化給定測(cè)量周期期間的完工時(shí)間。舉幾個(gè)例子來(lái)說(shuō),這樣的 測(cè)量周期可以是每小時(shí)、每天或每周。在這里所提供的示例中,假定租戶(hù)104代表這樣的業(yè) 務(wù),其在一般的一天24小時(shí)中在使用中經(jīng)歷重大并且相當(dāng)(somewhat)可預(yù)測(cè)的變化。從 而,在下面的示例中,使用一小時(shí)作為時(shí)間單位,以使得可以使用每小時(shí)平均負(fù)載來(lái)在24 小時(shí)時(shí)間序列上均衡服務(wù)器106a-106n上的負(fù)載分布。
如上所述,可以相對(duì)于作為判斷布局成功的方法的完工時(shí)間的最小化,來(lái)定義已 知的將T個(gè)租戶(hù)分配到S個(gè)服務(wù)器上的負(fù)載均衡問(wèn)題。但是,這樣的結(jié)果可能在許多情況 下都不令人滿(mǎn)意。例如,僅最小化完工時(shí)間的解可以產(chǎn)生這樣的分配高級(jí)租戶(hù)103面臨的 響應(yīng)時(shí)間不能夠滿(mǎn)足它們區(qū)別于普通租戶(hù)110的SLA要求。相反,系統(tǒng)100能夠?qū)⒏嘁?素而不僅僅是完工時(shí)間并入到布局過(guò)程中,作為判斷最終布局的方法,并且可以以靈活快 速的方式這樣做,這樣的方式在實(shí)際最佳解不可得到時(shí)提供可用最佳解。如上所述,布局選擇器124可以被配置為監(jiān)控進(jìn)化循環(huán)并且從中選擇選定的染色 體,以基于該染色體實(shí)現(xiàn)布局。如剛才所述的那樣,選定的染色體/解可以代表最佳(最 優(yōu))解,或者可以代表可用最佳解。從而,布局選擇器124可以通過(guò)確定是否、在何時(shí)以及 如何中斷或者終止進(jìn)化循環(huán)并且提取最佳或可用最佳解。然后,布局選擇器124可以輸出 選定的染色體和/或在合適的服務(wù)器中執(zhí)行實(shí)際發(fā)送和/或安裝租戶(hù)數(shù)據(jù)。在圖1中,可以理解的是,系統(tǒng)100被示為使用代表或多或少的離散功能的各種功 能塊或模塊。提供這樣的圖示是為了清楚和方便,但是可以理解的是,各種功能可以重疊或 者在所描述的模塊中組合,或者可以由未專(zhuān)門(mén)示出在圖1中的一個(gè)或多個(gè)模塊來(lái)實(shí)現(xiàn)。當(dāng) 然,根據(jù)需要,也包括對(duì)圖1的系統(tǒng)100有用的傳統(tǒng)功能,諸如例如復(fù)制租戶(hù)數(shù)據(jù)庫(kù)的功能。 再有,為了清楚和方便起見(jiàn),沒(méi)有明確示出這些傳統(tǒng)元件。從而,系統(tǒng)100可以將服務(wù)器106a-106n的狀態(tài)在為空和被一個(gè)或多個(gè)租戶(hù)數(shù)據(jù) 庫(kù)填充至不同程度二者之間進(jìn)行變換。同時(shí),系統(tǒng)100可以將租戶(hù)數(shù)據(jù)庫(kù)從第一狀態(tài)變換 為第二狀態(tài),第一狀態(tài)為被存儲(chǔ)在第一服務(wù)器中(服務(wù)器106a-106n中的任何一個(gè)或者其 它離線(xiàn)服務(wù)器,例如,所談?wù)摰淖鈶?hù)的服務(wù)器),第二狀態(tài)為被存儲(chǔ)在服務(wù)器106a-106n的 另一個(gè)(不同的)服務(wù)器中。如上所述,租戶(hù)數(shù)據(jù)庫(kù)可以存儲(chǔ)近乎所有類(lèi)型的數(shù)據(jù),諸如例 如商業(yè)界中的數(shù)據(jù)類(lèi)型,其中數(shù)據(jù)可以包括物理事物,包括用戶(hù)、雇員或待售商品。如所示的那樣,系統(tǒng)100可以與計(jì)算設(shè)備132相關(guān)聯(lián),從而將計(jì)算設(shè)備132變換為 設(shè)計(jì)用于確定和實(shí)現(xiàn)如這里所述的布局過(guò)程的專(zhuān)用機(jī)器。在這種意義上來(lái)說(shuō),可以理解的 是,計(jì)算設(shè)備132可以包括所有標(biāo)準(zhǔn)元件,其包括未在圖1中具體示出的處理器、存儲(chǔ)器、電 源、外圍設(shè)備以及其它計(jì)算元件。系統(tǒng)100還可以與顯示設(shè)備134相關(guān)聯(lián)(例如,監(jiān)視器或 其它顯示器),其可以用于提供圖形用戶(hù)界面(GUI) 136。GUI136可以用于例如接收使用偏 好調(diào)節(jié)器118的偏好,輸入或修改SLA約束條件112或者管理或利用系統(tǒng)100??梢蕴砑踊?包括將對(duì)實(shí)現(xiàn)系統(tǒng)100有用的系統(tǒng)100的其它元件,如對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)說(shuō)明顯 可見(jiàn)的那樣。圖2是示出圖1的系統(tǒng)100中所使用的染色體202、204的示例組合的框圖。也 就是說(shuō),染色體202、204可以是由染色體比較器128確定的多個(gè)染色體或染色體種群中的 一對(duì)染色體,其將被輸出到染色體組合器130,如這里所描述的那樣。這樣的染色體對(duì)可 以被輸入到染色體組合器130,然后以親本(parent)染色體的角色被組合,來(lái)執(zhí)行性別交 叉(sexual crossover)的模擬,以得到新的子染色體206,如上所述,新的子染色體206因 此而成為可以與同一代的其它成員一起作為進(jìn)化循環(huán)的一部分被輸入回染色體比較器128 以?xún)?yōu)化租戶(hù)104到服務(wù)器106a-106n的布局的新一代染色體的一部分。因此,遺傳算法管 理器122將遺傳算法作為達(dá)爾文自然選擇的計(jì)算機(jī)模擬來(lái)提供,其通過(guò)各個(gè)代的迭代來(lái)向 問(wèn)題空間的最佳解收斂。
在圖2的示例中,染色體202-206分別代表大小為T(mén) = 7的陣列(具有被標(biāo)記為 208-220的租戶(hù)數(shù)據(jù)庫(kù)T1-T7)的部分,該陣列的元素值在1到S = 5之間(具有被標(biāo)記為 222-230的服務(wù)器S1-S5)。可以假設(shè)圖2是只具有一個(gè)級(jí)別租戶(hù)的簡(jiǎn)化示例,并且在圖2 中,沒(méi)有為容錯(cuò)而復(fù)制租戶(hù)數(shù)據(jù)庫(kù)。因此,圖2只示出了一個(gè)或多個(gè)租戶(hù)數(shù)據(jù)庫(kù)208-220可 以布置在服務(wù)器222-230中的服務(wù)器上的概念,盡管不是每個(gè)服務(wù)器都需要用于一個(gè)具體 的解(例如,子染色體206不使用服務(wù)器S4228)。圖2還示出了遺傳重組的概念,如遺傳算法管理器122中所執(zhí)行的那樣。在圖2 中,圖2示出了使用兩點(diǎn)交叉方案,通過(guò)染色體組合器130將施加到親本雙方202、204以產(chǎn) 生新的子染色體206的染色體重組。使用該方法,第一親本202的隨機(jī)選擇的連續(xù)分段(由 隨機(jī)切口 1和2來(lái)限定)被復(fù)制到子體206,然后再加上第二親本204中的尚未從第一親本 的分段中拿開(kāi)的所有剩余項(xiàng)。在圖2中,由隨機(jī)切口 1和2限定的親本染色體202、204的 部分以陰影線(xiàn)表示并且被相應(yīng)的箭頭指示為在子染色體206內(nèi)組合,并保持與親本中一樣 的出現(xiàn)次序。這樣的組合只是可能的重組技術(shù)的一個(gè)示例。一般說(shuō)來(lái),從遺傳算法的已知特征 中可以理解,親本染色體可以通過(guò)模擬性別交叉來(lái)重組以產(chǎn)生子染色體,并且在子染色體 內(nèi)可能出現(xiàn)偶然引起的突變,這將產(chǎn)生兩個(gè)親本中都沒(méi)有的新特征。這樣的突變可以隨機(jī) 生成,或者根據(jù)預(yù)定義的技術(shù)由染色體組合器130生成。然后,子染色體可以被傳遞回染色體比較器128,如所述的那樣,染色體比較器 128可以被配置為評(píng)價(jià)子染色體并且然后將其分級(jí),之后選擇子染色體的最佳子集作為下 一代的親本染色體,從而再次模擬自然選擇。世代循環(huán)(generational loop)或進(jìn)化循環(huán) (evolutionary loop)可以在例如滿(mǎn)足某最優(yōu)條件之后或者在滿(mǎn)足某停止條件之后終止。 對(duì)于后者舉例來(lái)說(shuō),布局選擇器124可以被配置為監(jiān)控遺傳算法管理器122,并且在經(jīng)過(guò)了 100代之后或者到遺傳算法管理器122在預(yù)設(shè)數(shù)量的代之后沒(méi)有產(chǎn)生更好的解時(shí),終止進(jìn) 化循環(huán)。為了比較并評(píng)價(jià)染色體,染色體比較器可以實(shí)現(xiàn)評(píng)價(jià)函數(shù),該函數(shù)合并或反映例 如各種輸入112-118??梢栽?4小時(shí)期間每小時(shí)應(yīng)用該評(píng)價(jià)函數(shù),以得到總得分,然后該總 得分被用于選擇子染色體的最佳子集以作為下一代的親本染色體。下面更加詳細(xì)地提供評(píng) 價(jià)函數(shù)的特定示例。圖3是將容錯(cuò)并入圖1的系統(tǒng)中的示例染色體的框圖。更加具體說(shuō)來(lái),圖3示出 了根據(jù)2等級(jí)方案提供的不同服務(wù),該方案既包括高級(jí)租戶(hù)302,又包括普通租戶(hù)304,并且 合并了如這里所描述的容錯(cuò)。在本示例中為了提供容錯(cuò),為每個(gè)高級(jí)租戶(hù)302 (包括高級(jí)租戶(hù)306、308)創(chuàng)建了 兩個(gè)完全復(fù)制數(shù)據(jù)庫(kù)(full replica database),并且針對(duì)每個(gè)普通租戶(hù)304(包括普通租 戶(hù)310、312、314、316)創(chuàng)建了一個(gè)完全復(fù)制數(shù)據(jù)庫(kù)。于是,如圖所示,高級(jí)租戶(hù)306與原始 租戶(hù)數(shù)據(jù)庫(kù)和復(fù)制租戶(hù)數(shù)據(jù)庫(kù)318、320、322相關(guān)聯(lián),高級(jí)租戶(hù)308與原始租戶(hù)數(shù)據(jù)庫(kù)和復(fù) 制租戶(hù)數(shù)據(jù)庫(kù)324、326、328相關(guān)聯(lián)。類(lèi)似地,普通租戶(hù)310與原始租戶(hù)數(shù)據(jù)庫(kù)和復(fù)制租戶(hù) 數(shù)據(jù)庫(kù)330、332相關(guān)聯(lián),普通租戶(hù)312與原始租戶(hù)數(shù)據(jù)庫(kù)和復(fù)制租戶(hù)數(shù)據(jù)庫(kù)334、336相關(guān) 聯(lián),普通租戶(hù)314與原始租戶(hù)數(shù)據(jù)庫(kù)和復(fù)制租戶(hù)數(shù)據(jù)庫(kù)338、340相關(guān)聯(lián),普通租戶(hù)316與原 始租戶(hù)數(shù)據(jù)庫(kù)和復(fù)制租戶(hù)數(shù)據(jù)庫(kù)342、344相關(guān)聯(lián)。
因此,原始租戶(hù)數(shù)據(jù)庫(kù)和復(fù)制租戶(hù)數(shù)據(jù)庫(kù)318-344可以被分配/布置到在圖3中 示為346、348、350、352的四個(gè)服務(wù)器S1-S4。在沒(méi)有服務(wù)器發(fā)生故障的第一個(gè)例子中,租 戶(hù)數(shù)據(jù)庫(kù)如圖所示在四個(gè)服務(wù)器346-352中分配,租戶(hù)數(shù)據(jù)庫(kù)318-344分別分布到服務(wù)器 346、348、350、346、348、350、348、352、350、352、352、348、352 和 346。例如,分別與普通租戶(hù) 312,314關(guān)聯(lián)的租戶(hù)數(shù)據(jù)庫(kù)336和338都被分配給服務(wù)器S4352。在另一個(gè)示例中,與高級(jí) 租戶(hù)306相關(guān)聯(lián)的原始租戶(hù)數(shù)據(jù)庫(kù)和復(fù)制租戶(hù)數(shù)據(jù)庫(kù)318-322被分別分配給服務(wù)器346、 348、350。這樣,可以通過(guò)將原始租戶(hù)數(shù)據(jù)庫(kù)和復(fù)制租戶(hù)數(shù)據(jù)庫(kù)在不同服務(wù)器346-352中分 布來(lái)實(shí)現(xiàn)負(fù)載均衡。而且,因?yàn)槿绻?wù)器346-352其中之一發(fā)生故障,那么出故障的服務(wù)器上的每 個(gè)租戶(hù)數(shù)據(jù)庫(kù)的至少一個(gè)其它副本會(huì)存在于較大系統(tǒng)中,所以可以提供容錯(cuò)。例如,正如剛 剛提到的,與高級(jí)租戶(hù)306相關(guān)聯(lián)的原始租戶(hù)數(shù)據(jù)庫(kù)和復(fù)制租戶(hù)數(shù)據(jù)庫(kù)318-322被分別分 配到服務(wù)器346、348、350。因此,如果服務(wù)器Sl 346發(fā)生故障而使得租戶(hù)數(shù)據(jù)庫(kù)318不可 用(如圖3中塊354所示),那么剩余的租戶(hù)數(shù)據(jù)庫(kù)320和322仍然可用。類(lèi)似地,租戶(hù)數(shù) 據(jù)庫(kù)324和344也將是不可用的,此時(shí)這些租戶(hù)數(shù)據(jù)庫(kù)的副本應(yīng)當(dāng)在相應(yīng)的無(wú)故障服務(wù)器 上繼續(xù)可用。圖3示出了更多的示例,S卩,其中服務(wù)器S2 348發(fā)生故障(如塊356所示) 的示例,其中服務(wù)器S3 350發(fā)生故障(如塊358所示)的示例,以及其中服務(wù)器S4 352發(fā) 生故障(如塊360所示)的示例。因此,圖3示出了這樣的示例其中,兩個(gè)高級(jí)租戶(hù)306、308被分別復(fù)制兩次、同 時(shí)四個(gè)普通租戶(hù)310-316被分別復(fù)制一次,從而總共(二)X(三)+ (四)X( 二)或總共 十四個(gè)原始租戶(hù)數(shù)據(jù)庫(kù)和復(fù)制租戶(hù)數(shù)據(jù)庫(kù)要分布在四個(gè)可用服務(wù)器上。如圖所示,結(jié)果是 陣列大小為14的染色體362,該陣列的值關(guān)于S1-S4 (346-352)而定義,如上面針對(duì)圖2已 提到的那樣。在圖3中,可以理解的是,表示容錯(cuò)與為每個(gè)可能的服務(wù)器故障創(chuàng)建新的染色體 364、366、368、370 —樣簡(jiǎn)單,如所示的那樣。然后,可以以與標(biāo)準(zhǔn)染色體362 —樣的方式,使 用圖1的系統(tǒng)100評(píng)價(jià)最終得到的染色體364-370。應(yīng)當(dāng)清楚的是,雖然為了簡(jiǎn)單和簡(jiǎn)要起 見(jiàn),圖3限于一個(gè)服務(wù)器故障的示例,但是,可以用同樣的方式來(lái)表示多個(gè)同時(shí)發(fā)生的服務(wù)
器故障。圖4是示出圖1的系統(tǒng)的示例操作的流程圖400。具體說(shuō)來(lái),如上面針對(duì)圖1-3所 提到的那樣,圖1的系統(tǒng)100可以被配置為將租戶(hù)數(shù)據(jù)庫(kù)(也即,為了負(fù)載均衡和容錯(cuò)的目 的的原始租戶(hù)數(shù)據(jù)庫(kù)和復(fù)制租戶(hù)數(shù)據(jù)庫(kù))到可用服務(wù)器的潛在布局表示為遺傳算法的染 色體。圖1的各個(gè)輸入112-118對(duì)于產(chǎn)生和評(píng)價(jià)染色體是可用的。然后,第一代染色體的選 定的染色體可以組合形成第二代染色體,在第二代染色體上可以重復(fù)基于輸入112-118評(píng) 價(jià)染色體的過(guò)程,從而可以選擇第二代的子集用于再生第三代染色體。這樣的進(jìn)化循環(huán)的 后續(xù)迭代或重復(fù)使得能夠發(fā)生其中代的成員向最優(yōu)布局解收斂的自然選擇的過(guò)程。如這里 的示例中所示,各個(gè)輸入112-118中的某些或全部可以隱式地或直接地并入這樣的遺傳算 法中,從而確保結(jié)果得到的最優(yōu)化的解在期望的程度上(也即,完全地或部分地)滿(mǎn)足SLA 約束條件112和其它輸入滿(mǎn)足。然后,在圖4中,可以確定多個(gè)租戶(hù)數(shù)據(jù)庫(kù)中的每一個(gè)以及多個(gè)服務(wù)器中的至少 一個(gè)(402)。租戶(hù)數(shù)據(jù)庫(kù)包括原始租戶(hù)數(shù)據(jù)庫(kù)和從原始租戶(hù)數(shù)據(jù)庫(kù)復(fù)制得來(lái)的復(fù)制租戶(hù)數(shù)據(jù)庫(kù),如所述的那樣。例如,這些租戶(hù)數(shù)據(jù)庫(kù)可以包括租戶(hù)104或者與租戶(hù)104有關(guān),租戶(hù) 104包括高級(jí)租戶(hù)108和普通租戶(hù)110。上面針對(duì)圖3提供并討論了這些租戶(hù)數(shù)據(jù)庫(kù)的復(fù) 制的示例,諸如,當(dāng)用原始/復(fù)制租戶(hù)數(shù)據(jù)庫(kù)318、320、322來(lái)表示租戶(hù)306時(shí)。服務(wù)器可以 包括服務(wù)器組106的服務(wù)器106a-106n??梢源_定掌控多個(gè)租戶(hù)數(shù)據(jù)庫(kù)到多個(gè)服務(wù)器的訪問(wèn)的服務(wù)等級(jí)協(xié)議(SLA)的約 束條件(404)。例如,輸入處理器120可以確定SLA約束條件112。如所述的那樣,SLA約 束條件112可以包括所要求的且必須被滿(mǎn)足的約束條件和/或可以包括放寬的和/或可 選的SLA約束條件。SLA約束條件112可以指定例如用于服務(wù)器106a-106n之間的負(fù)載均 衡的參數(shù),或者用于包括針對(duì)與普通租戶(hù)110相對(duì)的高級(jí)租戶(hù)108的區(qū)別服務(wù)等級(jí)的租戶(hù) 104之間的負(fù)載均衡的參數(shù)。SLA約束條件112還可以指定針對(duì)高級(jí)租戶(hù)和/或普通租戶(hù) 108/110所需要的容錯(cuò)等級(jí),以及提供給與普通租戶(hù)相對(duì)的高級(jí)租戶(hù)的區(qū)別服務(wù)的其它特 征。這里描述了 SLA約束條件的其它示例。可以確定與多個(gè)服務(wù)器相關(guān)聯(lián)的計(jì)算約束條件(406)。例如,輸入處理器120可以 確定計(jì)算約束條件114,其可以與服務(wù)器106a-106n的能力有關(guān)。例如,服務(wù)器106a-106n 可以具有異類(lèi)計(jì)算能力(例如,不同的處理速度或存儲(chǔ)容量)。這些計(jì)算約束條件114可以 與評(píng)價(jià)SLA約束條件112相關(guān)。例如,如果SLA約束條件指定每個(gè)租戶(hù)數(shù)據(jù)庫(kù)必須完整地 裝入其所分配的服務(wù)器,則如果計(jì)算約束條件114說(shuō)明給定服務(wù)器的存儲(chǔ)容量太小而無(wú)法 容納整個(gè)租戶(hù)數(shù)據(jù)庫(kù),那么該服務(wù)器就可以被排除作為針對(duì)所談?wù)摰淖鈶?hù)數(shù)據(jù)庫(kù)的布局候 選服務(wù)器。在這點(diǎn)上,應(yīng)當(dāng)理解,輸入處理器120也可以輸入租戶(hù)情況116,租戶(hù)情況(tenant context) 116可以指定諸如給定租戶(hù)的數(shù)據(jù)庫(kù)的大小、或者該租戶(hù)多久輸出一次向租戶(hù)數(shù) 據(jù)庫(kù)請(qǐng)求數(shù)據(jù)的作業(yè)請(qǐng)求之類(lèi)的內(nèi)容。與此同時(shí),偏好調(diào)節(jié)器118允許系統(tǒng)100的用戶(hù)指定 根據(jù)計(jì)算約束條件114和租戶(hù)情況116來(lái)匹配SLA約束條件112的方式或者程度。例如, 偏好調(diào)節(jié)器118可以允許用戶(hù)指定放寬的SLA約束條件實(shí)際上被放寬到何種程度。例如, 雖然SLA約束條件112可以指定在用于給定租戶(hù)/租戶(hù)數(shù)據(jù)庫(kù)的三個(gè)服務(wù)器之間完全相等 的負(fù)載均衡。然而,偏好調(diào)節(jié)器118可以指定在完全相等(completely equality)的給定 百分比差內(nèi)的實(shí)際負(fù)載均衡是可以被接受的,其中,偏好調(diào)節(jié)器118可以用于提高或降低 可接受的百分比差。這里提供了有關(guān)輸入112-116的可調(diào)節(jié)偏好的其它示例。然后,可以在符合SLA約束條件基礎(chǔ)上并且相對(duì)于計(jì)算約束條件來(lái)評(píng)價(jià)多個(gè)染色 體,其中,每個(gè)染色體可以包括多個(gè)租戶(hù)數(shù)據(jù)庫(kù)中每一個(gè)到多個(gè)服務(wù)器中的一個(gè)服務(wù)器的 潛在布局(408)。例如,遺傳算法管理器122的染色體生成器126可以用于隨機(jī)生成將租 戶(hù)104 (包括原始租戶(hù)數(shù)據(jù)庫(kù)和復(fù)制租戶(hù)數(shù)據(jù)庫(kù))布置到服務(wù)器106a-106n的染色體,如在 圖2中針對(duì)染色體202、204所示的那樣。如在圖3中針對(duì)染色體362-370進(jìn)一步所示,可 以簡(jiǎn)單地通過(guò)創(chuàng)建從中去除了特定服務(wù)器以表示其(潛在)故障的染色體來(lái)表示以及合并 容錯(cuò)的等級(jí)。評(píng)價(jià)可以基于一個(gè)或多個(gè)評(píng)價(jià)函數(shù)進(jìn)行。下面針對(duì)圖5-9提供這些評(píng)價(jià)函數(shù)的具 體示例。如上所述,評(píng)價(jià)可以基于輸入112-118中的任意一個(gè)或全部來(lái)進(jìn)行。執(zhí)行評(píng)價(jià)的 結(jié)果可以包括將得分分配給所生成的多個(gè)染色體中的每個(gè)染色體。然后,可以輸出多個(gè)染色體的選定的子集(410)。例如,染色體比較器128可以執(zhí)行評(píng)價(jià),然后將選定的染色體子集輸出到染色體組合器130。作為多個(gè)染色體的進(jìn)化循環(huán)的一部分,多個(gè)染色體的選定子集中的染色體可以被 組合以得到下一代染色體,以便相對(duì)于SLA約束條件和計(jì)算約束條件對(duì)該下一代染色體中 的染色體進(jìn)行后續(xù)評(píng)價(jià)(412)。例如,染色體組合器130可以執(zhí)行這樣的選定的染色體子集 的組合,諸如按照上面針對(duì)圖2所討論的示例,或者使用遺傳算法領(lǐng)域已知的其它(重新) 組合技術(shù)。然后,染色體比較器128對(duì)于新一代染色體可以簡(jiǎn)單地重新執(zhí)行上述的評(píng)價(jià)函 數(shù),從而將選定的染色體子集重新輸出回染色體組合器130??梢詮倪x定的染色體中選擇染色體以利用其來(lái)實(shí)現(xiàn)布局(414)。例如,布局選擇 器124可以被配置為基于某預(yù)設(shè)準(zhǔn)則,從染色體比較器128或染色體組合器130選擇特定 染色體。例如,布局選擇器130可以在充分滿(mǎn)足SLA約束條件112之后或者在執(zhí)行了特定 數(shù)目的進(jìn)化循環(huán)之后選擇染色體。有利的是,布局選擇器130可以在遺傳算法期間的幾乎 任意時(shí)刻選擇解(染色體),該解然后將代表可用最佳解并且不需要等到算法完成的時(shí)候。圖5是可以用于圖1的示例中的示例染色體比較器128的框圖。更加具體說(shuō)來(lái), 圖5示出了染色體比較器128的示例,該染色體比較器128被配置為通過(guò)執(zhí)行與特定SLA 約束條件112相對(duì)的特定評(píng)價(jià)函數(shù)來(lái)評(píng)價(jià)/評(píng)分/比較染色體。在這點(diǎn)上,應(yīng)當(dāng)理解的是, 這些特定示例僅僅為了示出各種實(shí)施例以幫助理解更多相關(guān)概念,并且不受限于本領(lǐng)域技 術(shù)人員所清楚的其它實(shí)施例。為了下面的示例,如上面針對(duì)圖1-3所描述的假定在服務(wù)器組106中使用多租戶(hù) 數(shù)據(jù)庫(kù)應(yīng)用,并且每個(gè)高級(jí)租戶(hù)被復(fù)制到三個(gè)服務(wù)器上,并且以輪詢(xún)(round robin)方式將 請(qǐng)求路由到這些服務(wù)器。類(lèi)似地,每個(gè)普通租戶(hù)使得其數(shù)據(jù)被復(fù)制到兩個(gè)服務(wù)器上。于是, 高級(jí)租戶(hù)和普通租戶(hù)分別可以經(jīng)受住兩個(gè)服務(wù)器和一個(gè)服務(wù)器故障。在圖5-9的示例中,假定(例如,被要求或規(guī)定的指定程度上)實(shí)施下列六個(gè)SLA 約束條件,如下面詳細(xì)描述的那樣。具體說(shuō)來(lái),第一約束條件可以指定在經(jīng)過(guò)校準(zhǔn)以歸一化 異類(lèi)計(jì)算能力之后在服務(wù)器之間均衡負(fù)載。可以將負(fù)載均衡管理器502包括在內(nèi)以管理該 約束條件。第二約束條件可以指定在相同等級(jí)的所有租戶(hù)(以及相同租戶(hù)的所有租戶(hù)實(shí)例) 之間均衡負(fù)載,即使在發(fā)生服務(wù)器故障時(shí)(容錯(cuò))也是如此??梢詫⒇?fù)載分布管理器504 包括在內(nèi)以實(shí)施該約束條件。第三約束條件可以指定提供給高級(jí)租戶(hù)的服務(wù)器的負(fù)載比提供給普通租戶(hù)的服 務(wù)器的負(fù)載少X%。在這點(diǎn)上,可以理解,分配較多的服務(wù)器給高級(jí)租戶(hù)不一定確保更好的 響應(yīng)時(shí)間,這是因?yàn)槔珥憫?yīng)時(shí)間還可能依賴(lài)于高級(jí)租戶(hù)的負(fù)載等級(jí)、分配給相同服務(wù)器 的普通租戶(hù)的數(shù)量和普通租戶(hù)的負(fù)載。可以將高級(jí)負(fù)載分布管理器506包括在內(nèi)以實(shí)施該 約束條件。當(dāng)提到這些示例中的負(fù)載時(shí),基于這樣的認(rèn)知來(lái)考慮日常的負(fù)載分布租戶(hù)的負(fù) 載在一天之中可能極為不同。例如,租戶(hù)可能在其業(yè)務(wù)時(shí)間期間負(fù)載較重,而對(duì)于不同租 戶(hù)、不同行業(yè)和不同地理區(qū)域來(lái)說(shuō)業(yè)務(wù)時(shí)間本身可能有所不同。因此,可以考慮流量模式的 時(shí)間局部性(temporal locality of traffic patterns),并且對(duì)于較高精度的負(fù)載均衡, 可以將負(fù)載分布看作每小時(shí)平均負(fù)載的時(shí)間序列。對(duì)于這前三個(gè)約束條件,可以遵守下列規(guī)定這些約束條件可以以不同的期望程度被實(shí)施,并且不代表要施加到最終得到的布局上的絕對(duì)的或極端的(all-or-nothing) 要求。例如,系統(tǒng)管理員可以配置與系統(tǒng)故障發(fā)生時(shí)相對(duì)的正常工作期間負(fù)載均衡的重要 性(importance)。在另一個(gè)示例中,如上所述,不需要嚴(yán)格均勻地均衡負(fù)載,而是可以是在 給定的誤差范圍或幅度(a certain window or margin of error)內(nèi)均勻地均衡負(fù)載并且 仍然是可接受的??梢杂善谜{(diào)節(jié)器118來(lái)指定可以在何種程度上實(shí)現(xiàn)或調(diào)整這些參數(shù)。第四SLA約束條件可以指定既用于高級(jí)租戶(hù)數(shù)據(jù)庫(kù)又用于普通租戶(hù)數(shù)據(jù)庫(kù)的數(shù) 據(jù)應(yīng)當(dāng)被復(fù)制,其中經(jīng)由復(fù)制的容錯(cuò)的程度可以隨租戶(hù)級(jí)別不同而有所不同。一般地,對(duì)于 同一租戶(hù)級(jí)別中的所有租戶(hù)來(lái)說(shuō),容錯(cuò)等級(jí)可以相同,與普通租戶(hù)級(jí)別相比通過(guò)在更多的 服務(wù)器上進(jìn)行復(fù)制來(lái)向高級(jí)租戶(hù)提供更高等級(jí)的容錯(cuò),這里的示例假設(shè)對(duì)高級(jí)租戶(hù)進(jìn)行兩 次復(fù)制而對(duì)普通租戶(hù)進(jìn)行一次復(fù)制。可以將容錯(cuò)管理器508包括在內(nèi)以實(shí)施該約束條件。第五SLA約束條件可以指定相同的租戶(hù)數(shù)據(jù)庫(kù)的復(fù)制本不應(yīng)當(dāng)布置在相同的服 務(wù)器上,這是因?yàn)檫@樣的分配沒(méi)有任何好處。可以將復(fù)制管理器510包括在內(nèi)以實(shí)施該第 五約束條件。第六SLA約束條件可以承認(rèn)(recognize)每個(gè)服務(wù)器都具有一個(gè)存儲(chǔ)容量限制 (如計(jì)算約束條件114所指定的那樣),并且每個(gè)租戶(hù)具有“固定”大小的應(yīng)用數(shù)據(jù)(在一 個(gè)時(shí)間段內(nèi))(如租戶(hù)情況116所指定的那樣)。租戶(hù)數(shù)據(jù)庫(kù)的應(yīng)用數(shù)據(jù)必須裝入一個(gè)服務(wù) 器。為了簡(jiǎn)便起見(jiàn),假定系統(tǒng)100不會(huì)為了一天中不同小時(shí)的負(fù)載等級(jí)變化而到處移動(dòng)租 戶(hù)數(shù)據(jù)的復(fù)制本以進(jìn)行調(diào)整。可以將容量管理器512包括在內(nèi)以實(shí)施該第六約束條件。上面所述的第四、第五和第六約束條件可以被視為絕對(duì)約束條件,也即,為了使特 定布局(染色體)將被視為是可行的而必須滿(mǎn)足的約束條件。換句話(huà)說(shuō),不滿(mǎn)足這些特定 約束條件的染色體會(huì)被立即丟棄。最后,在圖5中,可以根據(jù)需要使用得分編譯器(score compiler) 514,以便在計(jì) 算正在進(jìn)行的得分參數(shù)時(shí)跟蹤它們,然后合計(jì)或者編譯與染色體比較器(128)的評(píng)價(jià)函數(shù) 相關(guān)聯(lián)的一個(gè)或多個(gè)得分。圖6是示出圖1和圖5的系統(tǒng)的示例操作的第一流程圖600。在圖6的示例中, 輸入處理器120可以確定正如上面所描述的六個(gè)SLA約束條件所表示的那些SLA約束條件 112中的某些或全部約束條件、與服務(wù)器106a-106n的處理和存儲(chǔ)限制相關(guān)的計(jì)算約束條 件114、與各個(gè)租戶(hù)104的工作負(fù)荷要求和數(shù)據(jù)庫(kù)大小相關(guān)的租戶(hù)情況116以及與通過(guò)偏好 調(diào)節(jié)器118接收的與上述某些或全部相關(guān)的偏好(602)。然后,染色體生成器126可以產(chǎn)生第一或初始染色體種群(604)。例如,染色體生 成器126可以簡(jiǎn)單地通過(guò)隨機(jī)分配租戶(hù)給服務(wù)器來(lái)產(chǎn)生預(yù)定數(shù)量的染色體。然后,染色體 比較器128可以針對(duì)每個(gè)染色體執(zhí)行評(píng)價(jià)函數(shù),以便將得分與每個(gè)染色體相關(guān)聯(lián)(606)???以使用組件502-504來(lái)執(zhí)行評(píng)價(jià)函數(shù),并且下面針對(duì)圖7-9提供評(píng)價(jià)函數(shù)的特定示例?;谠u(píng)價(jià)和評(píng)分,可以通過(guò)染色體比較器128得到選定的染色體子集。然后,可以 將該選定的染色體子集傳遞到染色體組合器130,染色體組合器130然后可以將染色體對(duì) 進(jìn)行組合,以得到下一代染色體(610)。圖2提供了如何執(zhí)行這些組合的示例,很顯然,也那 樣可以使用其它技術(shù)。于是,通過(guò)將下一代染色體返回到染色體比較器128,迭代的進(jìn)化循環(huán)可以進(jìn)行下 去,如圖1和圖6中所示??傮w說(shuō)來(lái),每一代都將大體上向可接受的或優(yōu)化的解前進(jìn)??梢栽陬A(yù)定數(shù)目的迭代/代之后、或者當(dāng)SLA約束條件在所要求程度上全部得到滿(mǎn)足時(shí)、或者在 到達(dá)時(shí)限或某其它停止指標(biāo)(indicator)之后,終止該循環(huán)。可以由布局選擇器124進(jìn)行 這些確定,布局選擇器124接著可以選擇可用最佳染色體來(lái)用作布局解(612)。圖7是示出圖1和圖5的系統(tǒng)的示例操作的第二流程圖700。具體說(shuō)來(lái),圖7示出 了由圖1和圖5的染色體比較器128所使用的評(píng)價(jià)函數(shù)的某些方面的執(zhí)行。在圖7中,從染色體種群中選擇染色體(702)。染色體比較器128可以首先檢查必 要的SLA約束條件以及可以被容易地檢驗(yàn)的SLA約束條件。例如,可以由復(fù)制管理器510 檢查第五SLA約束條件以便確保租戶(hù)數(shù)據(jù)庫(kù)沒(méi)有在同一服務(wù)器上被重復(fù)(被復(fù)制)(704), 這是因?yàn)?,如所述的那樣,從容錯(cuò)的觀點(diǎn)來(lái)看這樣的布局毫無(wú)用處。因此,如果發(fā)生了這樣 的重復(fù),那么可以將所談?wù)摰娜旧w丟棄(706)。如果不是這樣的話(huà),容量管理器512可以檢驗(yàn)第六SLA約束條件,該條件要求租戶(hù) 數(shù)據(jù)庫(kù)(各自作為一個(gè)整體)必須裝入其可能被布置到的至少一個(gè)服務(wù)器(708)。如果任 何租戶(hù)數(shù)據(jù)庫(kù)在該意義上太大了,那么可能又一次丟棄相關(guān)染色體(706)。容錯(cuò)管理器508可以檢查染色體以確保該染色體包括總共三個(gè)租戶(hù)數(shù)據(jù)庫(kù)(一個(gè) 原始的和兩個(gè)復(fù)制的)用于每個(gè)高級(jí)租戶(hù),以及總共兩個(gè)租戶(hù)數(shù)據(jù)庫(kù)(一個(gè)原始的和一個(gè) 復(fù)制的)用于每個(gè)普通租戶(hù)。如果不是這樣的話(huà),那么可以丟棄該染色體(706)。通過(guò)這樣 的方式,可以保持所要求的容錯(cuò)等級(jí)上的差別。然后,負(fù)載均衡管理器502和負(fù)載分布管理器504可以執(zhí)行它們各自的功能,以實(shí) 施上述第一和第二 SLA約束條件,同時(shí)高級(jí)負(fù)載分布管理器506可以用于監(jiān)控和/或?qū)嵤?第三SLA約束條件??梢允褂孟旅娴姆?hào)和慣例(notation and convention)來(lái)進(jìn)行這些計(jì)算以及下 列計(jì)算。具體說(shuō)來(lái),每個(gè)服務(wù)器Si被稱(chēng)為具有計(jì)算能力C0mpP0WerSi,其以每小時(shí)處理的作 業(yè)數(shù)量來(lái)度量。每個(gè)服務(wù)器還具有存儲(chǔ)容量StorageCapsi。T= U^t2,... ,tj表示復(fù)制 后(post-implication)租戶(hù)的集合,其中每個(gè)租戶(hù)t」每小時(shí)的負(fù)載為L(zhǎng)oadtj的作業(yè)并且 具有DataVolumetj的數(shù)據(jù)量。Tlffe是高級(jí)租戶(hù)集合,Tms是普通租戶(hù)集合,以使得(TlffeU Treg =T 并且 Tpre Π Treg = null (至))。服務(wù)器106a-106n可以在它們的計(jì)算能力/約束條件方面是相異的。從而,每個(gè) 服務(wù)器都具相對(duì)于其計(jì)算能力的歸一化負(fù)載(normalized load),其中服務(wù)器S的這種歸 一化負(fù)載可以表示為L(zhǎng)s。高級(jí)租戶(hù)的服務(wù)器和高級(jí)租戶(hù)的副本的服務(wù)器可以被定義為集 合Spre = {spl,sp2,. . . SpJ,而Sreg = {srl, sr2,. . . srJ}表示普通租戶(hù)的服務(wù)器和普通租戶(hù)的 副本的服務(wù)器。如可以理解的那樣,Spre和Sreg可以有重疊。使用上述符號(hào),負(fù)載均衡管理 器502和/或負(fù)載分布管理器504可以命令(mandate)和/或執(zhí)行關(guān)于得到具有高級(jí)租戶(hù) (714)和普通租戶(hù)(716)的服務(wù)器的負(fù)載的運(yùn)算。然后,σpre 可以是{Lspl,Lsp2,. . . LspJ 的標(biāo)準(zhǔn)偏差,而 σ reg 可以是{Lsrl,Lsr2,· ·., LsrjI的標(biāo)準(zhǔn)偏差。然后,一般說(shuō)來(lái),較小的σρΜ表示容納高級(jí)租戶(hù)的所有服務(wù)器上的負(fù)載 分布較恒定,從而高級(jí)租戶(hù)的體驗(yàn)更為流暢。相同的推理也適用于普通租戶(hù)的Oreg,盡管 對(duì)于具有普通租戶(hù)而沒(méi)有高級(jí)租戶(hù)的服務(wù)器來(lái)說(shuō)可以容忍較大的Oreg值。一般說(shuō)來(lái),可以 理解的是,優(yōu)選的布局應(yīng)當(dāng)在可能的程度上最小化σρΜ和二者,以提供更好的用戶(hù)體 驗(yàn)。因此,負(fù)載均衡管理器502可以計(jì)算參數(shù)Qme(720)和Ome(722)。
如上所述,第三約束條件可以指定高級(jí)租戶(hù)可以被提供具有比提供給普通租戶(hù)的 服務(wù)器少的負(fù)載的服務(wù)器。該約束條件反映了向高級(jí)租戶(hù)提供更好服務(wù)的商業(yè)價(jià)值 (business value)與輕負(fù)載服務(wù)器相關(guān)聯(lián)。例如,如果期望高級(jí)租戶(hù)被提供以負(fù)載比提供 給普通租戶(hù)的服務(wù)器的負(fù)載少的服務(wù)器,并且布局產(chǎn)生對(duì)于高級(jí)租戶(hù)的平均負(fù)載AVGpm 和對(duì)于普通租戶(hù)的平均負(fù)載AVG,eg,那么差(differential) (AVGreg-AVGpre) /AVGreg越接近于
,第三SLA約束條件越接近于被滿(mǎn)足。從而,如圖7中所示,負(fù)載分布管理器504可以被 配置為計(jì)算AVGpm (720)和AVGreg(724)。然后,高級(jí)負(fù)載分布服務(wù)器506可以被配置為確定 這些參數(shù)之間的百分比差(percent difference) (726),如上所述。然后,可以將該百分比 差與參數(shù)比較,以便確定參數(shù)Odiff (728),該參數(shù)用于判斷對(duì)于所談?wù)摰娜旧w在何種 程度上實(shí)現(xiàn)第三SLA約束條件。然后,一般說(shuō)來(lái),在圖7中被評(píng)分的染色體可以具有如公式1所示的初始得分CJ pre+ O reg+① diff,公式1其中,在表示相對(duì)于第三SLA約束條件的約束條件的較小標(biāo)準(zhǔn)偏差和較小百 分比差時(shí)優(yōu)選較小的得分。但是,除此這外,并且如上所述,例如針對(duì)圖6,可以通過(guò)偏好調(diào) 節(jié)器118來(lái)接收偏好參數(shù),這些參數(shù)定義上述得分組件取值的范圍和方式。具體說(shuō)來(lái),α可以表示可以由用戶(hù)配置的權(quán)重,用于表示他們?cè)谑垢呒?jí)租戶(hù)占用 的服務(wù)器的負(fù)載或普通租戶(hù)占用的服務(wù)器的負(fù)載更加均衡時(shí)的偏好(preference)。與此同 時(shí),β表示用于調(diào)節(jié)實(shí)現(xiàn)區(qū)別負(fù)載要求Odiff的期望程度的參數(shù)。然后,可以如公式2中所 示更加充分地表示染色體得分,其可以由得分編譯器來(lái)確定(730)α σ pre+(l-a) σ reg+β Odiff公式 2圖8是示出圖1和圖5的系統(tǒng)的示例操作的第三流程圖800。具體說(shuō)來(lái),圖8示出 了用于在出現(xiàn)服務(wù)器故障時(shí)提供包括負(fù)載均衡在內(nèi)的容錯(cuò)的特定技,諸如上面針對(duì)圖3所 述的那些技術(shù),以及諸如可以由圖5的容錯(cuò)管理器508連同負(fù)載均衡管理器502和/或負(fù) 載分布管理器504 —起執(zhí)行的技術(shù)。如從上面的描述理解的那樣,如這里所描述的用于多租戶(hù)數(shù)據(jù)庫(kù)應(yīng)用的數(shù)據(jù)庫(kù)空 間方法可以使用內(nèi)容已知(content-aware)路由器或其它已知技術(shù),將相同租戶(hù)的請(qǐng)求分 布到多個(gè)服務(wù)器(每個(gè)服務(wù)器容納該租戶(hù)的原始版本的數(shù)據(jù)庫(kù)或復(fù)制版本的數(shù)據(jù)庫(kù))。當(dāng) 服務(wù)器發(fā)生故障時(shí),諸如上面針對(duì)圖3所述的那樣,路由器必須將發(fā)送到故障服務(wù)器的請(qǐng) 求重新引導(dǎo)到其它工作著的服務(wù)器。為了即使在發(fā)生服務(wù)器故障時(shí)也確保負(fù)載均衡,還必 須評(píng)價(jià)在正常工作期間的布局。因此,對(duì)于正在被評(píng)分的給定染色體(諸如圖3的染色體 362),可以確定多個(gè)染色體變種(variant)(諸如染色體變種364-370),在這些染色體變種 中的每一個(gè),服務(wù)器中的不同服務(wù)器被假定發(fā)生了故障。然后,可以根據(jù)上面針對(duì)圖6和圖 7所描述的評(píng)價(jià)函數(shù)來(lái)對(duì)染色體和染色體變種評(píng)分。而且,如下面所描述的那樣,可以針對(duì) 在較大評(píng)價(jià)函數(shù)的給定實(shí)現(xiàn)中要求這樣的容錯(cuò)負(fù)載均衡的程度來(lái)接收和包括用戶(hù)偏好。然后,在圖8中,對(duì)于正在被評(píng)分的染色體,從染色體中去除服務(wù)器Si,以創(chuàng)建第一 染色體變種(802),在該第一染色體變種中服務(wù)器Si發(fā)生故障并且未來(lái)所有對(duì)該服務(wù)器的 請(qǐng)求都必須被重新路由到其它服務(wù)器。然后,針對(duì)染色體變種重新計(jì)算上面的參數(shù)σρΜ、 σ @和Cdiff (804)。如果Si不是該染色體中的最后一個(gè)服務(wù)器,那么該過(guò)程接下來(lái)去除下 一個(gè)服務(wù)器(802)。
如果不是這樣的話(huà),可以得到染色體的負(fù)載均衡得分(808)。也就是說(shuō),可以計(jì)算 或從存儲(chǔ)器中檢索如圖7中所確定的得分(730)。然后,可以重新執(zhí)行如上面針對(duì)圖7的描 述的相同技術(shù),以得到針對(duì)每個(gè)染色體變種和相關(guān)聯(lián)的服務(wù)器故障的負(fù)載均衡得分(810)。結(jié)果是使用上面的公式1和公式2,得到(諸如針對(duì)圖3的染色體362)正常負(fù)載 均衡得分(沒(méi)有服務(wù)器發(fā)生故障),以及若干各自對(duì)應(yīng)于染色體變種(例如,如圖3的染色 體變種364-370)的得分??梢园慈旧w變種的數(shù)目將染色體變種的得分平均,以得到容錯(cuò) 得分 ScoreFt (814)??梢岳斫獾氖牵梢詫⒎?wù)器組106中的服務(wù)器故障視為相對(duì)可能或相對(duì)不可 能,或者給定租戶(hù)或其它用戶(hù)可以具有相對(duì)較高或相對(duì)較低的承受服務(wù)器故障的風(fēng)險(xiǎn)容 限。由于這些和其它相關(guān)或類(lèi)似原因,對(duì)于特定租戶(hù)來(lái)說(shuō)容錯(cuò)得分和相關(guān)聯(lián)的分析可以相 對(duì)重要或相對(duì)不重要。因此,偏好調(diào)節(jié)器118可以使得用戶(hù)可以根據(jù)容錯(cuò)得分的權(quán)重輸入 偏好,其中該偏好在本說(shuō)明書(shū)中表示為λ。因此,在使用該權(quán)重因子λ時(shí),可以理解,較小 的λ值表明正常情況下(也即,沒(méi)有服務(wù)器崩潰的情況下)布局的高得分是首選的。另一 方面,較小的λ表示相對(duì)于負(fù)載均衡的更好容錯(cuò)能力的偏好。因此,可以使用公式3,例如由得分編譯器514得到最終得分(814)(1-λ ) Score+λ (ScoreFt)公式 3再次,術(shù)語(yǔ)Score和Sc0reFt應(yīng)當(dāng)被理解為表示例如根據(jù)圖7和圖8的操作所計(jì)算 的上面公式2的輸出。圖9是示出圖1和圖5的系統(tǒng)的示例操作的第四流程圖900。如上所述,為了解決 租戶(hù)和/或服務(wù)器的負(fù)載和其它特征每小時(shí)都不同的問(wèn)題,按小時(shí)來(lái)進(jìn)行布局決策可能有 用。因此,在圖9中,針對(duì)小時(shí)h來(lái)計(jì)算最終得分,以得到每小時(shí)的得分(902)。如果不是 例如24小時(shí)周期/日的最后一小時(shí)(904),那么就可以計(jì)算下一個(gè)小時(shí)的得分(902)。如 果不是這樣的話(huà),可以將每小時(shí)的得分平均,以得到總的染色體得分(906)。為此,最終得分可以用于所談?wù)摰娜旧w,并且類(lèi)似地,可以對(duì)于給定種群/代中 的每一個(gè)染色體計(jì)算最終得分。然后,如所述的那樣,染色體比較器128可以相應(yīng)地為這些 染色體分等級(jí)并且將染色體的選定子集作為如上所述的遺傳算法的進(jìn)化循環(huán)的一部分轉(zhuǎn) 送到染色體組合器130,。這樣,圖1和圖5將這一事實(shí)考慮在內(nèi)在一天的一個(gè)小時(shí)內(nèi),可能一個(gè)或多個(gè)服 務(wù)器會(huì)具有高負(fù)載。正如針對(duì)圖9所描述的那樣,這里所描述的系統(tǒng)和方法能夠在一天的 24小時(shí)內(nèi)實(shí)施負(fù)載均衡。如果所描述的算法只知道租戶(hù)每天的負(fù)載并且相應(yīng)地計(jì)算布局,那么可用的最佳 布局終究會(huì)導(dǎo)致服務(wù)器的過(guò)大的最大負(fù)載。但是,如果所描述的算法被提供了一天之間每 個(gè)小時(shí)的租戶(hù)負(fù)載,然后如所描述的那樣通過(guò)將24小時(shí)內(nèi)的這些布局得分進(jìn)行平均來(lái)評(píng) 價(jià)布局,那么每個(gè)服務(wù)器24小時(shí)內(nèi)的服務(wù)器最大負(fù)載就可以被最小化。圖6-9描述了可以用于圖1和圖5的系統(tǒng)的特定評(píng)價(jià)函數(shù)的操作,并且在傳達(dá)其 所包括的功能和特征的程度上對(duì)其進(jìn)行描述。但是,應(yīng)當(dāng)理解,在圖1和圖5的系統(tǒng)的實(shí)際 操作或執(zhí)行中,可以采用許多變形和優(yōu)化。例如,當(dāng)在圖9中計(jì)算每小時(shí)的得分時(shí),許多沒(méi) 有按小時(shí)變化的參數(shù)(諸如是否在一個(gè)服務(wù)器上復(fù)制特定租戶(hù)數(shù)據(jù),如上面的第五SLA約 束條件所禁止的)不需要重新計(jì)算。應(yīng)當(dāng)清楚,在實(shí)際實(shí)施圖1和圖5的系統(tǒng)中可以包括其它效率和優(yōu)化。 在下文中,將給出代碼或偽碼的實(shí)際部分,它們提供了這些實(shí)際實(shí)施方式的示例。 具體說(shuō)來(lái),下面給出算法1,其中變量t代表當(dāng)前代的染色體,P(t)代表該代的種群。如這 里所描述的那樣,染色體通過(guò)多代的適應(yīng)和選擇而進(jìn)化。另外,如算法1中所示,某些實(shí)施 方式中的染色體組合器130可以將一個(gè)或多個(gè)突變包括到染色體種群中。也就是說(shuō),可以 隨機(jī)變更或突變一個(gè)或多個(gè)染色體的具體方面,以探索解空間的多個(gè)部分,這些解空間的 部分在遺傳算法的正常運(yùn)行期間將不會(huì)被碰到。因此,類(lèi)似于上面的圖4和圖6的示例,算 法1表示遺傳算法和相關(guān)聯(lián)操作的總體運(yùn)行。注意在下面的算法中,第一到第六SLA約束 條件被分別稱(chēng)為REQ1-REQ6。
算法1 遺傳搜索算法_ 如算法1中可見(jiàn)的那樣,實(shí)際評(píng)價(jià)函數(shù)在其第8行發(fā)生。算法2提供了可以怎樣 實(shí)施這樣的評(píng)價(jià)函數(shù)的進(jìn)一步的細(xì)節(jié)。具體說(shuō)來(lái),例如,在第5行,類(lèi)似于圖7的操作,它在 沒(méi)有服務(wù)器故障的正常工作情況下計(jì)算每個(gè)染色體的得分。為了這樣做,算法2調(diào)用如下 所述的算法3。然后,從第7行到第10行,類(lèi)似于圖8的操作,它再次使用算法3,對(duì)當(dāng)服務(wù) 器發(fā)生故障時(shí)相同布局的性能進(jìn)行評(píng)價(jià)。在每一次迭代中,都假定服務(wù)器中的一個(gè)服務(wù)器 發(fā)生故障并且布置在故障服務(wù)器上的原始負(fù)載被重新引導(dǎo)(redirect)至包含與故障服務(wù) 器相同的租戶(hù)數(shù)據(jù)庫(kù)副本的其它服務(wù)器。在第11行中,通過(guò)應(yīng)用參數(shù)λ來(lái)計(jì)算染色體的 最終得分,以考慮相對(duì)于負(fù)載均衡的容錯(cuò)能力的偏好。 算法2中所引用的評(píng)價(jià)布局函數(shù)在下面的算法3中示出。在算法3中,如上面所 述,示出了圖7和圖8的操作以及圖9的操作。具體說(shuō)來(lái),第6-10行檢查是否存在布置在同 一服務(wù)器的相同租戶(hù)的副本。如果是的話(huà),這樣的布局就將得到無(wú)窮大(infinite)或有效 無(wú)窮大(effective infinite)的得分,因?yàn)檫@種情況違犯了所要求的第五SLA約束條件。類(lèi)似地,從第12行到第17行,關(guān)于服務(wù)器的硬盤(pán)空間是否足夠容納所分配的副本 來(lái)對(duì)每個(gè)服務(wù)器進(jìn)行檢查,如第六SLA約束條件所要求的那樣。所有不能接納所分配的租 戶(hù)數(shù)據(jù)庫(kù)的服務(wù)器將再次導(dǎo)致無(wú)窮大或有效無(wú)窮大的得分。如果滿(mǎn)足上面兩個(gè)條件,那么就在24小時(shí)內(nèi)逐小時(shí)地評(píng)價(jià)布局,如圖9所示。更 新高級(jí)租戶(hù)和普通租戶(hù)所占用的服務(wù)器的統(tǒng)計(jì)數(shù)字(第20-29行)并且通過(guò)在第30行將 用戶(hù)偏好并入來(lái)計(jì)算該小時(shí)的得分。最后,將24小時(shí)內(nèi)的平均得分返回作為該染色體的最 終得分。
圖1-9以及上面所描述的公式和算法提供了可以怎樣通過(guò)隱含地并入SLA約束條 件112和其它輸入114-118的方式,將租戶(hù)數(shù)據(jù)庫(kù)分配到服務(wù)器組106中的多個(gè)服務(wù)器的 一般性示例和特定示例。從而,可以明確地并入潛在的必要約束條件,同時(shí)可以在不同程度 上并入其它約束條件,所述程度可以由用戶(hù)根據(jù)期望使用偏好調(diào)節(jié)器118修改。
下面的描述提供了如何針對(duì)關(guān)于圖5-9的示例具體描述的不同偏好參數(shù)使用偏 好調(diào)節(jié)器118的附加示例和說(shuō)明。如上面一般所述的那樣,偏好參數(shù)α可以用于表示對(duì)于 均衡高級(jí)租戶(hù)和普通租戶(hù)所占用的服務(wù)器的負(fù)載的用戶(hù)偏好,因此較大的α表示均衡高 級(jí)租戶(hù)的負(fù)載更加重要,而相對(duì)較小的α表示均衡普通租戶(hù)的負(fù)載更加重要。偏好參數(shù)β 用于實(shí)施不同級(jí)別的租戶(hù)之間的區(qū)別負(fù)載(differential load),也即,用于確定實(shí)際的區(qū) 別負(fù)載可以與所指定的或所期望的區(qū)別負(fù)載偏離的程度。最后,偏好參數(shù)λ可以如所描述 的那樣使用,以使得該參數(shù)的較大的值表示用戶(hù)對(duì)罕有服務(wù)器故障的正常情況關(guān)注較少而 對(duì)服務(wù)器故障較普遍的情況關(guān)注較多,而該參數(shù)的較小的值表示用戶(hù)對(duì)罕有服務(wù)器故障的 正常情況關(guān)注較多而對(duì)服務(wù)器故障較普遍的情況關(guān)注較少。一般說(shuō)來(lái),在各種實(shí)施例中,除 了參數(shù)β可以如上所述被設(shè)置為無(wú)窮大或有效無(wú)窮大以從考慮對(duì)象中有效去除給定染色 體之外,參數(shù)α、β和λ可以被設(shè)置為0到1之間不同的值。對(duì)于參數(shù)α,可以理解,用戶(hù)可以指定他們期望怎樣均衡高級(jí)租戶(hù)或普通租戶(hù)所 占用的服務(wù)器負(fù)載的偏好(也即,他們想要均衡哪個(gè)級(jí)別的租戶(hù)負(fù)載)。較大的α表示用于 高級(jí)租戶(hù)的負(fù)載均衡更加重要,反過(guò)來(lái)較小的α表示均衡普通租戶(hù)的負(fù)載更加重要。上面 的示例算法能夠返回非常接近于用戶(hù)偏好的解,因此,如果α較大,那么算法將得出這樣 的解其中,高級(jí)租戶(hù)的負(fù)載比普通租戶(hù)的負(fù)載更好地被均衡。另一方面,給定較小的α, 算法可以產(chǎn)生這樣的結(jié)果該結(jié)果使普通租戶(hù)的負(fù)載更加均衡。即使是在可用服務(wù)器或服 務(wù)器的盤(pán)空間上有限制,參數(shù)α也可以用于實(shí)施高級(jí)租戶(hù)與普通租戶(hù)之間期望的負(fù)載均 衡。而且,一般說(shuō)來(lái),α的變化對(duì)參數(shù)β的效力幾乎或完全沒(méi)有影響。關(guān)于參數(shù)β,更加具體說(shuō)來(lái),如上所述,可以理解的是,該參數(shù)涉及用戶(hù)對(duì)實(shí)施區(qū) 別負(fù)載的偏好。如果用戶(hù)更加注重在不同級(jí)別的租戶(hù)之間實(shí)施區(qū)別負(fù)載,也即,β較大,那 么算法就有效地響應(yīng)以滿(mǎn)足該要求。但是,當(dāng)基本參數(shù)和odiff(高級(jí)租戶(hù)與普通租戶(hù) 之間的期望區(qū)別負(fù)載以及染色體匹配該期望區(qū)別的程度)增大時(shí),那么相對(duì)較小或較大的 β值可能在實(shí)施上或多或少地有困難,這尤其依賴(lài)于服務(wù)器盤(pán)空間的限制。關(guān)于參數(shù)和Odiff本身,可以理解的是,如上所定義的函數(shù)Φ本身可以被調(diào) 整,以滿(mǎn)足不同的偏好。例如,如果高級(jí)租戶(hù)接收到比普通租戶(hù)差的服務(wù)(如下面條件所定 義的那樣普通租戶(hù)的平均響應(yīng)時(shí)間比高級(jí)租戶(hù)的平均響應(yīng)時(shí)間短),那么參數(shù)Odiff就可 以被設(shè)置為無(wú)窮大或有效無(wú)窮大,因?yàn)檫@樣的情況一般是完全不可接受的。另一方面,如果 高級(jí)租戶(hù)相對(duì)于普通租戶(hù)來(lái)說(shuō)得到太多的益處,那么提供給普通租戶(hù)的服務(wù)可能會(huì)急劇惡 化。因此,當(dāng)普通租戶(hù)與高級(jí)租戶(hù)之間的差超過(guò)(對(duì)于SLA約束條件來(lái)說(shuō)該條件不是必 要的并且在最佳情況下向高級(jí)租戶(hù)提供過(guò)度的好處)時(shí),那么將再次分配無(wú)窮大或有效無(wú) 窮大的值。如已經(jīng)討論的那樣,參數(shù)λ可以用于指定用戶(hù)是更加關(guān)注正常情況(其中服務(wù) 器故障罕有發(fā)生)還是更加關(guān)注服務(wù)器故障發(fā)生相對(duì)頻繁的情況。為了表示該情況,可以 考慮,Serveri崩潰,那么由高級(jí)租戶(hù)和普通租戶(hù)戰(zhàn)用的服務(wù)器的最終負(fù)載偏差被定義為 devpre(i)和devreg(i),同時(shí)當(dāng)沒(méi)有服務(wù)器崩潰時(shí),該偏差可以就用devpre和如、68來(lái)表示。當(dāng)較大的λ被指定為表示用戶(hù)對(duì)于服務(wù)器故障情況下的負(fù)載均衡更加關(guān)心時(shí), 那么deVpre和dev,eg的平均值將變得較小。與此同時(shí),devpre和dev,eg沒(méi)有顯著地受到負(fù)面 影響。原因在于,當(dāng)服務(wù)器中任意一個(gè)崩潰時(shí)負(fù)載仍然是均衡的暗示著負(fù)載在所有服務(wù)器上也是均衡的。另一方面,如果在所有服務(wù)器上負(fù)載已經(jīng)是均衡的,那么當(dāng)服務(wù)器崩潰發(fā)生 時(shí)該負(fù)載不會(huì)總是同樣地均衡。因此,本說(shuō)明書(shū)提供一種在將η個(gè)作業(yè)分配到m個(gè)服務(wù)器這一負(fù)載均衡問(wèn)題上取 得進(jìn)步的方法(advance),其包括考慮實(shí)現(xiàn)SLA約束條件所需的額外復(fù)雜度。這里所描述的 布局算法靈活到足以將不同形式的各種SLA約束條件并入其中,并且即使它沒(méi)有生成滿(mǎn)足 所有要求的解決方案,也能夠產(chǎn)生最佳的可能布局解。所描述的遺傳算法提供這樣的解決 布局問(wèn)題的解,并且具有將各種不同形式的SLA約束條件封裝到它的評(píng)價(jià)中的靈活性。從 而,這里所描述的系統(tǒng)和方法提供了封裝各種不同形式的SLA約束條件的完整框架以及考 慮到可用資源、需求以及情況(context)漸進(jìn)地找到滿(mǎn)足所述約束條件的最佳可能解的遺 傳算法。這里描述的各種技術(shù)的實(shí)施方式可以被實(shí)施在數(shù)字電子電路中,或者實(shí)施在計(jì)算 機(jī)硬件、固件、軟件,或者它們的組合中。實(shí)施方式可以實(shí)施為計(jì)算機(jī)程序產(chǎn)品,即有形地具 體體現(xiàn)在信息載體中的計(jì)算機(jī)程序,信息載體例如機(jī)器可讀存儲(chǔ)設(shè)備或者傳播的信號(hào),以 供數(shù)據(jù)處理裝置執(zhí)行,或者控制數(shù)據(jù)處理裝置的操作,所述數(shù)據(jù)處理裝置例如可編程處理 器、計(jì)算機(jī)、多個(gè)計(jì)算機(jī)。計(jì)算機(jī)程序,諸如上面描述的計(jì)算機(jī)程序,可以用任何形式的編程 語(yǔ)言編寫(xiě),包括匯編語(yǔ)言或解釋語(yǔ)言,并且,它可以被以任何形式部署,包括作為獨(dú)立的程 序或者作為模塊、組件、子程序或其他適于在計(jì)算環(huán)境中使用的單元。計(jì)算機(jī)程序可以被部 署為在一個(gè)計(jì)算機(jī)上執(zhí)行或在位于一個(gè)地點(diǎn)或分布在多個(gè)地點(diǎn)并被通信網(wǎng)絡(luò)互連起來(lái)的 多個(gè)計(jì)算機(jī)上執(zhí)行。方法步驟可以被一個(gè)或多個(gè)可編程處理器執(zhí)行,所述可編程處理器執(zhí)行計(jì)算機(jī)程 序,以通過(guò)對(duì)輸入數(shù)據(jù)操作和產(chǎn)生輸出來(lái)執(zhí)行功能。方法步驟還可以被用于特殊目的的邏 輯電路執(zhí)行,或者裝置可以被實(shí)施為用于特殊目的的邏輯電路,所述用于特殊目的的邏輯 電路例如FPGA(現(xiàn)場(chǎng)可編程門(mén)陣列)或ASIC(專(zhuān)用集成電路)。作為例子,適于執(zhí)行計(jì)算機(jī)程序的處理器包括通用和專(zhuān)用微處理器,以及任何類(lèi) 型的數(shù)字計(jì)算機(jī)的任意一個(gè)或多個(gè)處理器。一般說(shuō)來(lái),處理器將從只讀存儲(chǔ)器或隨機(jī)存取 存儲(chǔ)器接收指令和數(shù)據(jù),或者從兩者都接收指令和數(shù)據(jù)。計(jì)算機(jī)的元件可以包括至少一個(gè) 用于執(zhí)行指令的處理器和用于存儲(chǔ)指令和數(shù)據(jù)的一個(gè)或多個(gè)存儲(chǔ)器設(shè)備。一般說(shuō)來(lái),計(jì)算 機(jī)還可以包括,或者被可操作地耦合以從一個(gè)或多個(gè)用于存儲(chǔ)數(shù)據(jù)的海量存儲(chǔ)設(shè)備接收數(shù) 據(jù),或把數(shù)據(jù)傳送到海量存儲(chǔ)設(shè)備,或者二者皆有,所述海量存儲(chǔ)設(shè)備例如磁盤(pán)、磁光盤(pán)或 光盤(pán)。適于具體實(shí)施計(jì)算機(jī)程序指令和數(shù)據(jù)的信息載體包括所有形式的非易失性存儲(chǔ)器, 包括例如半導(dǎo)體存儲(chǔ)器件,例如EPR0M、EEPROM和閃存器件;磁盤(pán),例如內(nèi)置硬盤(pán)或可移動(dòng) 磁盤(pán);磁光盤(pán);以及⑶-ROM和DVD-ROM盤(pán)。處理器和存儲(chǔ)器可以由用于特殊目的的邏輯電 路補(bǔ)充,或者被包含在用于特殊目的的邏輯電路中。為了提供與用戶(hù)的交互,實(shí)施方式可以在具有顯示設(shè)備和鍵盤(pán)以及定點(diǎn) (pointing)設(shè)備的計(jì)算機(jī)上實(shí)施,顯示設(shè)備例如陰極射線(xiàn)管(CRT)或液晶顯示器(IXD)監(jiān) 視器,用于向用戶(hù)顯示信息,鍵盤(pán)和指示設(shè)備例如鼠標(biāo)或跟蹤球,用戶(hù)利用它們可以提供到 計(jì)算機(jī)的輸入。其他種類(lèi)的設(shè)備也可以被用來(lái)提供和用戶(hù)的交互;例如,提供給用戶(hù)的反饋 可以是任何形式的感覺(jué)反饋,例如視覺(jué)反饋、聽(tīng)覺(jué)反饋或觸覺(jué)反饋,并且,來(lái)自用戶(hù)的輸入 可以被以任何形式接收,包括聲音、語(yǔ)音或觸覺(jué)輸入。
實(shí)施方式可以被在包括后端組件或包括中間件組件或包括前端組件的計(jì)算系統(tǒng) 中實(shí)施,或者在這些后端、中間件、前端組件的任意組合中實(shí)施,后端組件例如數(shù)據(jù)服務(wù)器, 中間件組件例如應(yīng)用服務(wù)器,前端組件例如具有圖形用戶(hù)界面或Web瀏覽器的客戶(hù)端計(jì)算 機(jī),通過(guò)圖形用戶(hù)界面或Web瀏覽器,用戶(hù)可以和實(shí)施方式進(jìn)行交互??梢岳脭?shù)字?jǐn)?shù)據(jù)通 信的任何形式或介質(zhì)互連組件,數(shù)字?jǐn)?shù)據(jù)通信的介質(zhì)例如通信網(wǎng)絡(luò)。通信網(wǎng)絡(luò)的例子包括 局域網(wǎng)(LAN)和廣域網(wǎng)(WAN),例如因特網(wǎng)。雖然如這里所描述的那樣已經(jīng)示出了所描述的實(shí)施方式的某些特征,但是本領(lǐng)域 技術(shù)人員現(xiàn)在應(yīng)當(dāng)想到很多修改、替換,變化或等同物。因此應(yīng)當(dāng)理解,所附權(quán)利要求旨在 覆蓋落入實(shí)施例的范圍內(nèi)的所有這些修改和變化。
權(quán)利要求
一種包括記錄在計(jì)算機(jī)可讀介質(zhì)上的指令的計(jì)算機(jī)系統(tǒng),該系統(tǒng)包括布局管理器,其被配置為確定多個(gè)租戶(hù)數(shù)據(jù)庫(kù)中每一個(gè)數(shù)據(jù)庫(kù)到多個(gè)服務(wù)器中一個(gè)服務(wù)器的布局,其中,所述多個(gè)租戶(hù)數(shù)據(jù)庫(kù)包括原始租戶(hù)數(shù)據(jù)庫(kù)和從原始租戶(hù)數(shù)據(jù)庫(kù)復(fù)制的復(fù)制租戶(hù)數(shù)據(jù)庫(kù),其中,所述布局管理器包括輸入處理器,其被配置為確定掌控所述多個(gè)租戶(hù)數(shù)據(jù)庫(kù)與所述多個(gè)服務(wù)器的關(guān)聯(lián)的服務(wù)等級(jí)協(xié)議SLA的約束條件,并且被配置為確定與所述多個(gè)服務(wù)器相關(guān)聯(lián)的計(jì)算約束條件,染色體比較器,其被配置為將多個(gè)染色體進(jìn)行比較,每個(gè)染色體包括所述多個(gè)租戶(hù)數(shù)據(jù)庫(kù)中每一個(gè)數(shù)據(jù)庫(kù)到所述多個(gè)服務(wù)器中一個(gè)服務(wù)器的潛在布局,并且被配置為在符合SLA約束條件的基礎(chǔ)上并且相對(duì)于計(jì)算約束條件將所述多個(gè)染色體中的每一個(gè)進(jìn)行比較,從而輸出所述多個(gè)染色體的選定子集;染色體組合器,其被配置為將所述多個(gè)染色體的選定子集中的染色體進(jìn)行組合以得到下一代染色體,作為在所述染色體比較器和染色體組合器之間的多個(gè)染色體的進(jìn)化循環(huán)的一部分,該下一代染色體用于輸出到所述染色體比較器并且用于相對(duì)于SLA約束條件和計(jì)算約束條件對(duì)所述下一代染色體中的染色體進(jìn)行的后續(xù)比較;以及布局選擇器,其被配置為監(jiān)控所述進(jìn)化循環(huán)以及從其中選擇選定的染色體用于實(shí)施基于所述選定的染色體的布局。
2.如權(quán)利要求1所述的系統(tǒng),其中,所述SLA約束條件對(duì)于所述多個(gè)服務(wù)器規(guī)定針對(duì)相 應(yīng)租戶(hù)的多個(gè)租戶(hù)數(shù)據(jù)庫(kù)的負(fù)載均衡和容錯(cuò)二者,這二者通過(guò)將相應(yīng)租戶(hù)的多個(gè)租戶(hù)數(shù)據(jù) 庫(kù)中的至少兩個(gè)租戶(hù)數(shù)據(jù)庫(kù)安裝到所述多個(gè)服務(wù)器中的至少兩個(gè)服務(wù)器上來(lái)提供。
3.如權(quán)利要求1所述的系統(tǒng),其中,所述SLA約束條件規(guī)定與所述多個(gè)租戶(hù)數(shù)據(jù)庫(kù)相關(guān) 聯(lián)的租戶(hù)的至少兩個(gè)級(jí)別,所述至少兩個(gè)級(jí)別包括相較于普通級(jí)別具有對(duì)多個(gè)服務(wù)器的資 源優(yōu)先訪問(wèn)權(quán)的高級(jí)級(jí)別。
4.如權(quán)利要求3所述的系統(tǒng),其中,所述SLA約束條件規(guī)定按如下方式指定所述優(yōu)先訪 問(wèn)權(quán)與普通租戶(hù)的租戶(hù)數(shù)據(jù)庫(kù)的布局相比,高級(jí)租戶(hù)的租戶(hù)數(shù)據(jù)庫(kù)被布置在多個(gè)服務(wù)器 中具有相對(duì)較低負(fù)載的服務(wù)器上。
5.如權(quán)利要求3所述的系統(tǒng),其中,所述SLA約束條件規(guī)定所述優(yōu)先訪問(wèn)權(quán)包括優(yōu)先容 錯(cuò),所述優(yōu)先容錯(cuò)是按照如下方式來(lái)指定的與普通租戶(hù)的租戶(hù)數(shù)據(jù)庫(kù)在所述多個(gè)服務(wù)器 上的布局相比,高級(jí)租戶(hù)的租戶(hù)數(shù)據(jù)庫(kù)被布置在所述多個(gè)服務(wù)器中的較多的服務(wù)器上。
6.如權(quán)利要求1所述的系統(tǒng),其中,所述輸入處理器被配置為輸入至少一個(gè)關(guān)于與所 述多個(gè)租戶(hù)數(shù)據(jù)庫(kù)相關(guān)聯(lián)的租戶(hù)的租戶(hù)情況,所述至少一個(gè)租戶(hù)情況指定相關(guān)聯(lián)的租戶(hù)數(shù) 據(jù)庫(kù)的數(shù)據(jù)大小和作業(yè)請(qǐng)求特征,并且其中,所述染色體比較器被配置為使用所述至少一 個(gè)租戶(hù)情況,相對(duì)于SLA約束條件和計(jì)算約束條件來(lái)評(píng)價(jià)所述多個(gè)染色體。
7.如權(quán)利要求1所述的系統(tǒng),其中,所述輸入處理器被配置為輸入偏好參數(shù),該偏好參 數(shù)是從偏好調(diào)節(jié)器接收的,并且表示所述染色體比較器評(píng)價(jià)所述SLA約束條件中的至少一 個(gè)約束條件的方式。
8.如權(quán)利要求1所述的系統(tǒng),其中,所述布局管理器包括染色體生成器,該染色體生成 器被配置為生成初始染色體種群,用于由所述染色體比較器進(jìn)行評(píng)價(jià),該初始染色體種群 各自被形成為大小為T(mén)的陣列,該陣列的元素的值為數(shù)字1到S,其中T是所述多個(gè)租戶(hù)數(shù)據(jù)庫(kù)的數(shù)量,S是所述多個(gè)服務(wù)器的數(shù)量。
9.如權(quán)利要求1所述的系統(tǒng),其中,所述染色體組合器被配置為將所述多個(gè)染色體中 的染色體對(duì)進(jìn)行組合,包括將每對(duì)染色體的每個(gè)成員劃分為多個(gè)部分,然后將來(lái)自每對(duì)的 至少某些部分組合到新的染色體中。
10.如權(quán)利要求1所述的系統(tǒng),其中,所述染色體比較器被配置為評(píng)價(jià)每個(gè)染色體,包 括創(chuàng)建多個(gè)染色體變種,其中每個(gè)染色體變種都與所述多個(gè)服務(wù)器的相應(yīng)服務(wù)器的潛在故 障相關(guān)聯(lián)。
11.如權(quán)利要求1所述的系統(tǒng),其中,所述染色體比較器被配置為評(píng)價(jià)每個(gè)染色體,包 括將所述多個(gè)服務(wù)器的每個(gè)服務(wù)器的負(fù)載進(jìn)行歸一化并且計(jì)算所述服務(wù)器的負(fù)載的標(biāo)準(zhǔn)偏差。
12.如權(quán)利要求1所述的系統(tǒng),其中,所述染色體比較器被配置為針對(duì)多個(gè)時(shí)間段中的 每個(gè)時(shí)間段評(píng)價(jià)所述多個(gè)染色體中的每一個(gè),然后將最終的多個(gè)評(píng)價(jià)組合以得到針對(duì)相應(yīng) 染色體的總評(píng)價(jià)。
13.如權(quán)利要求1所述的系統(tǒng),其中,所述布局選擇器被配置為在進(jìn)化循環(huán)的預(yù)定數(shù)量 的代之后、或者在確定所述選定的染色體在預(yù)定程度上滿(mǎn)足SLA約束條件之后,選擇所述 選定的染色體。
14.一種計(jì)算機(jī)實(shí)施的方法,包括確定多個(gè)租戶(hù)數(shù)據(jù)庫(kù)中的每個(gè)租戶(hù)數(shù)據(jù)庫(kù)和多個(gè)服務(wù)器中的至少一個(gè)服務(wù)器,其中所 述租戶(hù)數(shù)據(jù)庫(kù)包括原始租戶(hù)數(shù)據(jù)庫(kù)和從所述原始租戶(hù)數(shù)據(jù)庫(kù)復(fù)制的復(fù)制租戶(hù)數(shù)據(jù)庫(kù);確定掌控所述多個(gè)租戶(hù)數(shù)據(jù)庫(kù)對(duì)所述多個(gè)服務(wù)器的訪問(wèn)的服務(wù)等級(jí)協(xié)議SLA的約束 條件;確定與所述多個(gè)服務(wù)器相關(guān)聯(lián)的計(jì)算約束條件;在符合所述SLA約束條件的基礎(chǔ)上并且相對(duì)于所述計(jì)算約束條件評(píng)價(jià)多個(gè)染色體,每 個(gè)染色體包括所述多個(gè)租戶(hù)數(shù)據(jù)庫(kù)中每一個(gè)數(shù)據(jù)庫(kù)到所述多個(gè)服務(wù)器中一個(gè)服務(wù)器的潛 在布局;輸出所述多個(gè)染色體的選定子集;將所述多個(gè)染色體的選定子集中的染色體進(jìn)行組合以得到下一代染色體,作為所述多 個(gè)染色體的進(jìn)化循環(huán)的部分,下一代染色體用于相對(duì)于SLA約束條件和計(jì)算約束條件對(duì)下 一代染色體中的染色體進(jìn)行的后續(xù)比較,;以及從該進(jìn)化循環(huán)中選擇選定的染色體用于實(shí)施基于該染色體的布局。
15.如權(quán)利要求14所述的方法,其中,所述SLA約束條件對(duì)于所述多個(gè)服務(wù)器規(guī)定針對(duì) 相應(yīng)租戶(hù)的多個(gè)租戶(hù)數(shù)據(jù)庫(kù)的負(fù)載均衡和容錯(cuò)二者,這二者通過(guò)將所述相應(yīng)租戶(hù)的多個(gè)租 戶(hù)數(shù)據(jù)庫(kù)的至少兩個(gè)租戶(hù)數(shù)據(jù)庫(kù)安裝到所述多個(gè)服務(wù)器的至少兩個(gè)服務(wù)器上來(lái)提供。
16.如權(quán)利要求14所述的系統(tǒng),其中,所述SLA約束條件規(guī)定與所述多個(gè)租戶(hù)數(shù)據(jù)庫(kù)相 關(guān)聯(lián)的租戶(hù)的至少兩個(gè)級(jí)別,所述至少兩個(gè)級(jí)別包括相較于普通級(jí)別具有對(duì)所述多個(gè)服務(wù) 器的資源的優(yōu)先訪問(wèn)權(quán)的高級(jí)級(jí)別。
17.如權(quán)利要求14所述的系統(tǒng),其中,確定所述SLA約束條件包括接收偏好參數(shù),該偏 好參數(shù)表示所述染色體比較器評(píng)價(jià)所述SLA約束條件中的至少一個(gè)約束條件的方式。
全文摘要
本發(fā)明提供一種計(jì)算機(jī)系統(tǒng),其包括確定多個(gè)租戶(hù)數(shù)據(jù)庫(kù)到多個(gè)服務(wù)器的布局的布局管理器。該布局管理器包括輸入處理器,其確定掌控多個(gè)租戶(hù)數(shù)據(jù)庫(kù)到多個(gè)服務(wù)器的關(guān)聯(lián)的服務(wù)等級(jí)協(xié)議SLA的約束條件以及與多個(gè)服務(wù)器相關(guān)聯(lián)的計(jì)算約束條件;染色體比較器,其相對(duì)于SLA約束條件和計(jì)算約束條件比較每個(gè)染色體,以輸出多個(gè)染色體的選定子集,每個(gè)染色體包括多個(gè)租戶(hù)數(shù)據(jù)庫(kù)中的每一個(gè)到多個(gè)服務(wù)器中的一個(gè)的潛在布局;染色體組合器,其將多個(gè)染色體的選定子集中的染色體組合以得到下一代染色體,其被輸出到染色體比較器以用于后續(xù)比較;以及布局選擇器,其監(jiān)控所述進(jìn)化循環(huán)以及從其中選擇選定的染色體用于實(shí)施基于選定的染色體的布局。
文檔編號(hào)G06F17/30GK101931609SQ20091014621
公開(kāi)日2010年12月29日 申請(qǐng)日期2009年6月22日 優(yōu)先權(quán)日2009年6月22日
發(fā)明者許儉, 黎文憲 申請(qǐng)人:Sap股份公司