两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

在多節(jié)點系統(tǒng)中資源動態(tài)分配的分層管理的制作方法

文檔序號:6490634閱讀:155來源:國知局
專利名稱:在多節(jié)點系統(tǒng)中資源動態(tài)分配的分層管理的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及工作負荷管理,具體而言,涉及多節(jié)點計算機系統(tǒng)內(nèi)的工作負荷管理。
背景技術(shù)
各企業(yè)正在尋找辦法使他們的數(shù)據(jù)處理系統(tǒng)降低成本并提高效率。典型的企業(yè)數(shù)據(jù)處理系統(tǒng)是為每個企業(yè)應(yīng)用程序都分配單獨的資源。預(yù)先為每個應(yīng)用程序分配足夠的資源以處理該應(yīng)用程序的估計最大負荷。各應(yīng)用程序具有不同的負荷特性;一些應(yīng)用程序在白天繁忙;而另一些應(yīng)用程序則在晚上繁忙;一些報告每周運行一次,而另一些報告則每月一次。因此,有大量資源能力被閑置。網(wǎng)格計算使利用或消除這種閑置能力成為可能。實際上,網(wǎng)格計算被平衡以顯著地改變了計算的經(jīng)濟效果。
網(wǎng)格是多個提供處理和一定程度的共享存儲的計算元件的集合;網(wǎng)格資源被動態(tài)分配,以滿足其客戶機(client)的計算需求和優(yōu)先級。網(wǎng)格計算可顯著地降低計算成本,擴大計算資源的可用性,以及實現(xiàn)更高的生產(chǎn)率和更高的質(zhì)量。網(wǎng)格計算的基本思想是將計算看作一種公用事業(yè)(utility),類似于電網(wǎng)或電話網(wǎng)。網(wǎng)格的客戶機不關(guān)心其數(shù)據(jù)在何處或者在何處執(zhí)行計算。客戶機所想要的只是使計算被執(zhí)行,以及當客戶機需要時,將信息傳遞給客戶機。
這類似于電力公用事業(yè)運行的方式;客戶不知道發(fā)電機在何處,或者電網(wǎng)是如何連接的??蛻糁皇且娏Σ⒌玫搅穗娏?。目的是將計算變成一種公用事業(yè)—無處不在的商品。因此將其命名為網(wǎng)格。
當然,將網(wǎng)格計算看作一種公用事業(yè)是客戶機側(cè)的看法。從服務(wù)器側(cè)或者現(xiàn)場后面來看,網(wǎng)格是關(guān)于資源分配、信息共享、和高可用性。資源分配確保所有那些需求或請求資源的都如愿以償。資源不會被持續(xù)閑置,而請求卻得不到服務(wù)。信息共享確保在信息客戶機和應(yīng)用程序被需要的地方和時刻,所需的信息客戶機和應(yīng)用程序可用。高可用性確保了所有數(shù)據(jù)和計算必須一直運轉(zhuǎn)—正如公用事業(yè)公司必須一直提供電力。
用于數(shù)據(jù)庫的網(wǎng)格計算可以從網(wǎng)格計算獲益的一個計算機技術(shù)領(lǐng)域是數(shù)據(jù)庫技術(shù)。網(wǎng)格可以支持多數(shù)據(jù)庫以及根據(jù)要求動態(tài)分配和重新分配資源,以支持每個數(shù)據(jù)庫的當前需求。當對數(shù)據(jù)庫的需求增長時,更多的資源分配給該數(shù)據(jù)庫,而從另一數(shù)據(jù)庫釋放其他資源。例如,在企業(yè)網(wǎng)格上,數(shù)據(jù)庫是由運行在網(wǎng)格上的一個服務(wù)器刀片上的一個數(shù)據(jù)庫服務(wù)器來服務(wù)的。向數(shù)據(jù)庫請求數(shù)據(jù)的用戶數(shù)量增加。響應(yīng)于該增加,從一臺刀片式服務(wù)器上取消用于另一數(shù)據(jù)庫的數(shù)據(jù)庫服務(wù)器,向該刀片式服務(wù)器提供用于正經(jīng)受增長的用戶請求的數(shù)據(jù)庫的數(shù)據(jù)庫服務(wù)器。
用于數(shù)據(jù)庫的網(wǎng)格計算要求以不同的級別分配和管理資源。在對應(yīng)于單數(shù)據(jù)庫的級別,提供給數(shù)據(jù)庫用戶的性能以及用戶之間所分配的數(shù)據(jù)庫資源必須被監(jiān)控,以確保每個用戶的性能目標被滿足。在數(shù)據(jù)庫之間,必須管理數(shù)據(jù)庫之間的網(wǎng)格資源的分配,以確保滿足所有數(shù)據(jù)庫的用戶的性能目標。管理這些不同級別的資源的分配的工作,以及執(zhí)行這種管理所需要的信息非常復(fù)雜。因此,要求提供一種機制,能夠簡化和有效地處理用于數(shù)據(jù)庫系統(tǒng)的網(wǎng)格計算系統(tǒng)中的資源的管理,以及在網(wǎng)格內(nèi)以不同級別分配資源的其它類型的系統(tǒng)。
本節(jié)中所描述的方法是可執(zhí)行的方法,但不必是已被構(gòu)思或執(zhí)行的方法。因此,除非在此另有說明,在此部分中描述的方法不能僅因為包含在此背景技術(shù)部分中,就認為是現(xiàn)有技術(shù)。


本發(fā)明通過實例而不是限制的方式被闡明,附圖中相同的附圖標號表示相同的部件,其中圖1是示出了本發(fā)明的一個實施例可在其上實現(xiàn)的多節(jié)點計算機系統(tǒng)的框圖;圖2是示出了根據(jù)本發(fā)明的一個實施例的節(jié)點的集群的框圖;圖3是示出了根據(jù)本發(fā)明的一個實施例的參與提供用于數(shù)據(jù)庫的各種服務(wù)的集群的各組件和多節(jié)點數(shù)據(jù)庫服務(wù)器的框圖;圖4是示出了用于將服務(wù)擴展至目標數(shù)據(jù)庫實例和停止該目標數(shù)據(jù)庫實例上的服務(wù)的進程的流程圖;圖5是示出了用于雙相停止的進程的流程圖;以及圖6是可用在本發(fā)明的實施例中的計算機系統(tǒng)的框圖。
具體實施例方式
描述了管理多節(jié)點環(huán)境中的資源分配的方法和裝置。在下面的描述中,出于解釋的目的,許多具體的細節(jié)被闡明以提供對本發(fā)明的徹底理解。然而,顯而易見,本發(fā)明可以在沒有這些具體細節(jié)的情況下實施。在其它實例中,已知的結(jié)構(gòu)和裝置以框圖的形式示出,以避免對本發(fā)明造成不必要的混淆。
這里所描述的是用于有效且高效地管理在多節(jié)點數(shù)據(jù)庫系統(tǒng)所提供的服務(wù)之間的多節(jié)點數(shù)據(jù)庫系統(tǒng)的資源的動態(tài)分配的方法。服務(wù)是指特定種類或類型的工作,執(zhí)行該工作是為了一個或多個客戶機的利益。該服務(wù)包括對計算機資源的任何使用或消耗,包括,例如CPU處理時間、在易失性存儲器中存儲和存取數(shù)據(jù)、向永久性存儲器(即磁盤存儲器)寫入和從中讀出、以及使用網(wǎng)絡(luò)或總線帶寬。服務(wù)可以是例如,為數(shù)據(jù)庫服務(wù)器的客戶機上的特定應(yīng)用程序而執(zhí)行的工作。
本方法管理不同級別的資源分配。對于使用特定數(shù)據(jù)庫的工作,由服務(wù)實現(xiàn)的性能被監(jiān)控。分派給數(shù)據(jù)庫的資源在服務(wù)之間被分配,以確保滿足每一個的性能目標。分派給節(jié)點的集群的資源在數(shù)據(jù)庫之間被分配,以確保滿足使用數(shù)據(jù)庫的所有服務(wù)的性能目標。
本方法使用分層導(dǎo)控器(director)管理不同級別的資源。一種導(dǎo)控器(數(shù)據(jù)庫導(dǎo)控器)管理分配給服務(wù)之間的數(shù)據(jù)庫的資源,這些服務(wù)使用數(shù)據(jù)庫及其數(shù)據(jù)庫實例。數(shù)據(jù)庫導(dǎo)控器管理服務(wù)之間的數(shù)據(jù)庫實例的分配。集群導(dǎo)控器管理數(shù)據(jù)庫之間的節(jié)點的集群的資源,這些數(shù)據(jù)庫的數(shù)據(jù)庫服務(wù)器駐留于集群上。而另一導(dǎo)控器(場導(dǎo)控器(farm director))管理分配在集群之間的資源。
圖1示出了可用于實現(xiàn)本發(fā)明的實施例的多節(jié)點計算機系統(tǒng)。參照圖1,示出了集群場(cluster farm)101。集群場是一組節(jié)點,這些節(jié)點被組織成被稱之為集群的節(jié)點組。集群在該集群中的節(jié)點之間提供了一定程度的共享存儲(例如,共享一組磁盤驅(qū)動器)。
集群場中的節(jié)點的形式可以是通過網(wǎng)絡(luò)相互連接的計算機(例如工作站、個人計算機)??蛇x地,節(jié)點可以是網(wǎng)格的節(jié)點。網(wǎng)格由節(jié)點構(gòu)成,這些節(jié)點的形式是與機架上其它服務(wù)器刀片相互連接的服務(wù)器刀片。每個服務(wù)器刀片都是包括處理器、存儲器、網(wǎng)絡(luò)連接、以及單一主板上的有關(guān)的電子器件的計算機系統(tǒng)。通常,服務(wù)器刀片不包括板上存儲器(處了易失性存儲器),并且這些服務(wù)器刀片共享機架內(nèi)的存儲單元(例如,共享的磁盤),以及電源、冷卻系統(tǒng)、和電纜。
在集群場中的集群的限定特性是通過軟件控制可在場內(nèi)的集群之間自動地轉(zhuǎn)移該集群的節(jié)點,而無需將來自一個集群的節(jié)點有形地重新連接至另一集個。集群被在此稱作集群軟件的軟件應(yīng)用程序控制和管理??蓤?zhí)行集群軟件以從集群中刪除節(jié)點,以及為集群提供節(jié)點。集群軟件提供命令行界面,其接收來自管理人員的請求,允許管理員輸入命令以為集群提供節(jié)點和從集群中刪除節(jié)點。該界面還可以采取應(yīng)用程序接口(“API”)的形式,該接口可以被在該集群場內(nèi)執(zhí)行的其他軟件調(diào)用。集群軟件使用和維持元數(shù)據(jù),這些元數(shù)據(jù)定義了場內(nèi)集群的配置,包括集群配置元數(shù)據(jù),其定義了場中集群的拓撲結(jié)構(gòu),包括了哪些特定節(jié)點在該集群中。元數(shù)據(jù)被修改以反映集群軟件對集群場內(nèi)的集群作出的改變。集群軟件的實例是由OracleTM開發(fā)的軟件,例如Oracle9i Real Application Clusters或Oracle Real Application Clusters 10g。在Oracle9i RACOracle RealApplication Clusters Configuration and Internals(作者為Mike Ault和Madhu Tumma,第二版,2003年8月2日)中描述了Oracle9i RealApplication Clusters。
集群場101包括集群110、120、和130。每個集群容留一個或多個多節(jié)點數(shù)據(jù)庫服務(wù)器,這些服務(wù)器提供并管理對數(shù)據(jù)庫的訪問。
集群和多節(jié)點數(shù)據(jù)庫服務(wù)器圖2是示出了根據(jù)本發(fā)明的實施例的集群110。集群的定義特征是,集群被集群的客戶機看作單個單元或?qū)嶓w,因為客戶機發(fā)出對由該集群容留的業(yè)務(wù)的請求,而不指定哪個或哪些特定的節(jié)點執(zhí)行請求,下面將對此作更詳細的說明。
集群110包括多節(jié)點數(shù)據(jù)庫服務(wù)器222、232、和242。多節(jié)點數(shù)據(jù)庫服務(wù)器222、232、和242位于集群100的一個或多個節(jié)點上。諸如多節(jié)點服務(wù)器的服務(wù)器是集成的軟件組件的與計算資源(例如,存儲器、節(jié)點、和用于在處理器上執(zhí)行集成的軟件組件的進程)的結(jié)合,其中軟件與計算資源的結(jié)合用于代表一個或多個客戶機執(zhí)行特定的函數(shù)。在數(shù)據(jù)庫管理的其他函數(shù)中,多節(jié)點服務(wù)器控制和幫助訪問特定數(shù)據(jù)庫,處理客戶機訪問該數(shù)據(jù)庫的請求。多節(jié)點服務(wù)器222、232、和242分別控制和提供對數(shù)據(jù)庫220、230、和240的訪問。服務(wù)器的另一個實例是網(wǎng)站服務(wù)器。
來自多節(jié)點計算系統(tǒng)中的多個節(jié)點的資源可以被分配,以運行服務(wù)器的軟件。每個軟件與來自節(jié)點的資源分配的結(jié)合是在此被稱作“服務(wù)器實例”或“實例”的服務(wù)器。因此,多節(jié)點數(shù)據(jù)庫服務(wù)器包括可在多個節(jié)點上運行的多個服務(wù)器實例。實際上,多節(jié)點數(shù)據(jù)庫服務(wù)器的多個實例可以在相同的節(jié)點上運行。多節(jié)點數(shù)據(jù)庫服務(wù)器包括多個“數(shù)據(jù)庫實例”,每個數(shù)據(jù)庫實例在節(jié)點上運行,并控制和幫助對特定數(shù)據(jù)庫的訪問。因此,每個實例在此可被稱作特定數(shù)據(jù)庫的數(shù)據(jù)庫實例。集群通常被用于容留多節(jié)點數(shù)據(jù)庫服務(wù)器。
集群110的客戶機以及多節(jié)點數(shù)據(jù)庫服務(wù)器222、232、和242包括客戶機203和205。客戶機203和205在經(jīng)由例如網(wǎng)絡(luò)與集群110互連的計算機上執(zhí)行應(yīng)用程序。在此使用的術(shù)語“應(yīng)用程序”是指被設(shè)計為與服務(wù)器的函數(shù)交互以及使用服務(wù)器的函數(shù)的軟件單元??傊瑧?yīng)用程序由執(zhí)行一組相關(guān)函數(shù)的集成函數(shù)和軟件模塊(例如,由機器可執(zhí)行代碼或可解釋代碼、動態(tài)鏈接庫構(gòu)成的程序)所構(gòu)成。
例如,客戶機203包括執(zhí)行FIN應(yīng)用程序和PAY應(yīng)用程序的計算機程序。FIN應(yīng)用程序包括產(chǎn)生和分析企業(yè)的帳目和財務(wù)信息的軟件。PAY應(yīng)用程序產(chǎn)生和跟蹤關(guān)于企業(yè)的職員報酬的信息。
數(shù)據(jù)庫服務(wù)器222、232、和242的客戶機不限于經(jīng)由網(wǎng)絡(luò)與集群110互連的計算機。例如,數(shù)據(jù)庫服務(wù)器222可以是數(shù)據(jù)庫服務(wù)器232的客戶機。
諸如數(shù)據(jù)庫220、230、和240的數(shù)據(jù)庫是數(shù)據(jù)庫對象的集合。數(shù)據(jù)庫對象包括任何形式的結(jié)構(gòu)數(shù)據(jù)。結(jié)構(gòu)數(shù)據(jù)是根據(jù)限定該結(jié)構(gòu)的元數(shù)據(jù)描述而構(gòu)造的數(shù)據(jù)。結(jié)構(gòu)數(shù)據(jù)包括關(guān)系表、對象表、對象關(guān)系表、和根據(jù)可擴展標記語言(“XML”)而構(gòu)造的數(shù)據(jù)體,例如XML文檔。
會話為了使客戶機與集群110上的數(shù)據(jù)庫服務(wù)器交互,為該客戶機建立會話。會話,例如數(shù)據(jù)庫會話,是為客戶機建立的至服務(wù)器(例如數(shù)據(jù)庫實例)的特定連接,通過會話,客戶機發(fā)出一系列請求(請求執(zhí)行數(shù)據(jù)庫語句)。對于數(shù)據(jù)庫實例上建立的每個數(shù)據(jù)庫會話,會話狀態(tài)數(shù)據(jù)被保持為反映數(shù)據(jù)庫會話的當前狀態(tài)。這些信息包含了,例如,為其建立該會話的客戶機的身份,和由在數(shù)據(jù)庫會話內(nèi)執(zhí)行軟件的進程產(chǎn)生的臨時變量值。
客戶機通過向集群110發(fā)送數(shù)據(jù)庫連接請求來建立數(shù)據(jù)庫會話。
集群110的客戶機,例如客戶機203和205,可通過位于客戶機的同一計算機上的客戶機端界面組件來與集群110交互。客戶機端界面組件包括API函數(shù),其由被客戶機203和205執(zhí)行的應(yīng)用程序調(diào)用。當指派了對數(shù)據(jù)庫服務(wù)器的連接時,識別節(jié)點的連接信息被客戶機端界面組件接收,并被它們用來由客戶機向節(jié)點發(fā)送后續(xù)的請求。
指派給客戶機的數(shù)據(jù)庫會話可以遷移至另一數(shù)據(jù)庫實例。遷移數(shù)據(jù)庫會話必然要求在另一節(jié)點上創(chuàng)建新的數(shù)據(jù)庫會話。當將關(guān)于遷移和連接的信息發(fā)送給客戶機端界面組件時,該信息對于應(yīng)用程序是不可訪問的,該應(yīng)用程序“沒有意識”該遷移。由此,對于應(yīng)用程序,該遷移是透明地執(zhí)行的。在新數(shù)據(jù)庫會話內(nèi)執(zhí)行將與舊數(shù)據(jù)庫會話相關(guān)聯(lián)的請求。在“Transparent Session Migration AcrossServers(50277-2383)”中描述了以這種方式遷移數(shù)據(jù)庫會話的技術(shù)。
服務(wù)如上所述,服務(wù)是為了一個或多個客戶機的利益而執(zhí)行的特定類型或種類的工作。集群110向客戶機203和205提供用于訪問數(shù)據(jù)庫220的數(shù)據(jù)庫服務(wù)、用于訪問數(shù)據(jù)庫230的數(shù)據(jù)庫服務(wù)、和用于訪問數(shù)據(jù)庫240的數(shù)據(jù)庫服務(wù)。通常,數(shù)據(jù)庫服務(wù)是由數(shù)據(jù)庫服務(wù)器執(zhí)行的用于客戶機的工作,通常包括處理和/或計算要求訪問數(shù)據(jù)庫的查詢的工作。在此所用的術(shù)語“查詢”是指符合數(shù)據(jù)庫語言(例如SQL)的數(shù)據(jù)庫語句,以及包括指定操作的數(shù)據(jù)庫語句以添加、刪除、或修改數(shù)據(jù)以及創(chuàng)建和修改數(shù)據(jù)庫對象,例如表、對象視圖、和可執(zhí)行例程。
與任何服務(wù)一樣,數(shù)據(jù)庫服務(wù)可以進一步分成或分類成子類。用于數(shù)據(jù)庫220的數(shù)據(jù)庫服務(wù)可進一步分成FIN服務(wù)和PAY服務(wù)。FIN服務(wù)是由數(shù)據(jù)庫服務(wù)器222執(zhí)行的用于FIN應(yīng)用程序的數(shù)據(jù)庫服務(wù)。通常,該服務(wù)包括訪問數(shù)據(jù)庫220上的數(shù)據(jù)庫對象,該數(shù)據(jù)庫存儲了用于FIN應(yīng)用程序的數(shù)據(jù)庫數(shù)據(jù)。PAY服務(wù)是由數(shù)據(jù)庫服務(wù)器222執(zhí)行的用于PAY應(yīng)用程序的數(shù)據(jù)庫服務(wù)。通常,該服務(wù)包括訪問數(shù)據(jù)庫220上的數(shù)據(jù)庫對象,該數(shù)據(jù)庫存儲了用于PAY應(yīng)用程序的數(shù)據(jù)庫數(shù)據(jù)。
有多種方式可以將由集群實現(xiàn)的工作分成或分類為服務(wù)的多個種類或子類,本發(fā)明并不限定于任何特定的方式。例如,工作可以基于用戶或者用戶組(商業(yè)企業(yè),企業(yè)內(nèi)的部門)被分成多個服務(wù),其中工作是為用戶或用戶組而執(zhí)行的。
提供服務(wù)的參與者圖3示出了參與提供用于數(shù)據(jù)庫220的各種服務(wù)的集群110和多節(jié)點數(shù)據(jù)庫服務(wù)器222的組件。參照圖3,多節(jié)點數(shù)據(jù)庫服務(wù)器222包括數(shù)據(jù)庫實例322、332、342、352、和362,其分別位于節(jié)點320、330、340、350、和360上,并管理對數(shù)據(jù)庫220的訪問。數(shù)據(jù)庫實例可使用實例管理應(yīng)用程序提供給特定節(jié)點或從特定節(jié)點中刪除。例如作為Oracle9i Real Application Clusters或Oracle RealApplication Clusters 10g的一部分,可得到實例管理應(yīng)用程序。實例管理應(yīng)用程序提供可由管理員或客戶機調(diào)用的命令行界面或API,以為節(jié)點提供數(shù)據(jù)庫實例或從節(jié)點中刪除數(shù)據(jù)庫實例。
多節(jié)點數(shù)據(jù)庫服務(wù)器222的數(shù)據(jù)庫實例被分配了特定服務(wù)。數(shù)據(jù)庫實例322和332被分配了服務(wù)FIN。數(shù)據(jù)庫實例342和352被分配了服務(wù)PAY。實例362還沒有被分配任何服務(wù)。當實例、節(jié)點、或集群已經(jīng)被分配以執(zhí)行服務(wù)時,服務(wù)被稱作運行或位于或駐留在實例、節(jié)點或集群上。因此,F(xiàn)IN服務(wù)被稱作運行或位于數(shù)據(jù)庫實例322和332、以及節(jié)點320和330上。
接收器390是運行在集群110上的進程,其接收客戶機數(shù)據(jù)庫連接請求,并將它們指引至集群110內(nèi)的數(shù)據(jù)庫實例。所接收的客戶機連接請求與服務(wù)(例如,服務(wù)FIN、PAY)相關(guān)聯(lián)。將該客戶機請求指引至容留該服務(wù)的數(shù)據(jù)庫實例,在此為該客戶機建立數(shù)據(jù)庫會話。如上所述,該會話可以遷移至另一數(shù)據(jù)庫實例。接收器390以對應(yīng)用程序透明的方式將該請求指引至特定的數(shù)據(jù)庫實例和/或節(jié)點。接收器390可以在集群110內(nèi)的任何節(jié)點上運行。一旦為客戶機建立了數(shù)據(jù)庫會話,則客戶機可發(fā)布另外的請求,其可以是函數(shù)的形式或者遠程程序調(diào)用的形式,并且其包括了以下請求開始執(zhí)行交易、執(zhí)行查詢、執(zhí)行更新以及其他類型的交易操作、提交或終止交易、以及終止數(shù)據(jù)庫會話。
監(jiān)控工作負荷資源被分配和再分配以滿足資源上的性能的級別和基數(shù)限制。為特定服務(wù)建立的性能級別和資源可用性在此被稱作服務(wù)級別協(xié)定(service-level agreement)。通常應(yīng)用于多節(jié)點系統(tǒng)且并不一定應(yīng)用于特定服務(wù)的資源上的性能級別和基數(shù)約束在此被稱作策略。例如,用于服務(wù)FIN的服務(wù)級別協(xié)定可能要求用于服務(wù)FIN的平均交易時間不超過給定閾值作為性能級別,以及至少兩個實例容留服務(wù)FIN作為可用性要求。策略可能要求任何節(jié)點的CPU利用率不應(yīng)超過80%。
在此策略還可以被稱作后臺策略,因為它們被后臺管理員用來管理整個系統(tǒng)的性能,以及用來在認為資源不足以滿足所有服務(wù)組的服務(wù)級別協(xié)定時,在一組服務(wù)之間分配資源。例如,策略為一個數(shù)據(jù)庫指定相對于另一數(shù)據(jù)庫較高的優(yōu)先級。當資源不足以滿足兩個數(shù)據(jù)庫的服務(wù)的服務(wù)級別協(xié)定時,具有較高優(yōu)先級的數(shù)據(jù)庫,以及使用該數(shù)據(jù)庫的服務(wù)在分配資源時將會優(yōu)先。
為了滿足服務(wù)級別協(xié)定,需要一種機制來監(jiān)控和測量各種資源上的工作負荷。這些工作負荷的測量用于確定服務(wù)級別協(xié)定是否被滿足,以及根據(jù)滿足服務(wù)級別協(xié)定所需來調(diào)節(jié)資源的分配。
工作負荷監(jiān)控器,例如工作負荷監(jiān)控器388,是運行于集群的節(jié)點上的分布式進程組,以監(jiān)控和測量集群的工作負荷,并產(chǎn)生“性能度量”。工作負荷監(jiān)控器388運行在集群110上。性能度量是基于性能測量指示一個或多個資源或服務(wù)的性能級別的數(shù)據(jù)。在“Measuring Workload by Service(50277-2337)”中描述了執(zhí)行這些函數(shù)的方法。所產(chǎn)生的信息可以被多節(jié)點數(shù)據(jù)庫服務(wù)器222內(nèi)的各種組件訪問,其中各種組件負責(zé)管理資源的分配以滿足服務(wù)級別協(xié)定,后面將對此更詳細地描述。
可被用于測量指示性能或工作負荷的級別的特性或條件的特定類型的性能度量,在此被稱作性能指標(performance measure)。性能指標包括例如交易執(zhí)行時間或CPU使用百分率。通常,涉及性能級別的服務(wù)級別協(xié)定可通過基于性能指標的閾值和標準來限定。
例如,交易的執(zhí)行時間是性能指標?;谠撝笜说姆?wù)級別協(xié)定是,用于服務(wù)FIN的交易應(yīng)該在300毫秒內(nèi)執(zhí)行。然而,另一個工作指標是節(jié)點的CPU使用百分率。基于該指標的后臺策略是,節(jié)點不承受超過80%的使用率。
性能度量可指示集群的性能、在集群、集群中的節(jié)點、或特定數(shù)據(jù)庫實例上運行的服務(wù)的性能。服務(wù)所特有的性能度量或指標在此被稱作服務(wù)性能度量或指標。例如服務(wù)FIN的服務(wù)性能度量是為服務(wù)FIN執(zhí)行的用于交易的交易時間。
分層資源分配網(wǎng)格計算涉及動態(tài)分配計算機資源以滿足服務(wù)級別協(xié)定。在實施例中,以一級或多級的資源分配分層來平衡或調(diào)節(jié)計算機資源。該分層的每級具有在用戶(例如服務(wù))之間分配的不同的資源池組。資源池是特定類型的一群資源,例如服務(wù)可用的節(jié)點和數(shù)據(jù)庫實例、數(shù)據(jù)庫可用的節(jié)點或集群可用的節(jié)點。資源分配中的三級是數(shù)據(jù)庫級、集群級、和場級。
數(shù)據(jù)庫級在數(shù)據(jù)庫級,被分配的資源池是那些當前用于特定數(shù)據(jù)庫的資源池,包括數(shù)據(jù)庫的數(shù)據(jù)庫實例和容留它們的節(jié)點。數(shù)據(jù)庫級的資源池(即,可以在數(shù)據(jù)庫級被分配的資源)可以在數(shù)據(jù)庫的服務(wù)之間被分配,以滿足服務(wù)級別協(xié)定。通常,這涉及將服務(wù)安置于實例上,和將會話安置于實例上。
可以以多種方式安置會話。第一種方式在此稱作連接時間平衡。在連接時間平衡之下,接收器390通過指引向數(shù)據(jù)庫220的實例請求特定服務(wù)的數(shù)據(jù)庫連接請求來平衡多個服務(wù)實例之間的工作負荷。例如,假定數(shù)據(jù)庫實例322上的服務(wù)FIN比其他實例提供了更好的服務(wù)性能。因此,接收器390將要求FIN服務(wù)的數(shù)據(jù)庫連接請求的較大部分指引至數(shù)據(jù)庫實例322。
安置會話的第二種方法被稱作運行時(run-time)會話平衡。在運行時會話平衡之下,數(shù)據(jù)庫會話從一個數(shù)據(jù)庫實例遷移至另一個數(shù)據(jù)庫實例。數(shù)據(jù)庫會話利用透明的會話遷移來遷移。如上所述,“Transparent Session Migration Across Servers”中描述了用于執(zhí)行該遷移的技術(shù)。
服務(wù)安置需要擴展和壓縮服務(wù)。在服務(wù)擴展和壓縮之下,數(shù)據(jù)庫實例被分配給容留的服務(wù)或從容留的服務(wù)中解除分配。當數(shù)據(jù)庫實例被分配以容留業(yè)務(wù)時,在該實例上可為該服務(wù)創(chuàng)建更多的數(shù)據(jù)庫會話,從而增加與該服務(wù)相關(guān)聯(lián)和該服務(wù)可用的數(shù)據(jù)庫會話的數(shù)量。例如,為了滿足用于服務(wù)FIN的服務(wù)級別協(xié)定,實例322和332被分配以運行服務(wù)FIN。隨著用于該服務(wù)的需求的增長,該服務(wù)級別協(xié)定不再被滿足。當服務(wù)級別協(xié)定不被滿足時,該服務(wù)級別協(xié)定被稱作被違反。響應(yīng)于該服務(wù)級別違反,F(xiàn)IN服務(wù)被分配有另一實例,實例342。一個實例可以運行不止一個服務(wù)。出于說明的目的,一個實例僅運行一個服務(wù)。因此,當將FIN添加至實例342時,服務(wù)PAY從實例342中停止,即,實例342解除分配給用于PAY服務(wù)的資源,并停止該實例上的該服務(wù)。
集群級在集群級,在數(shù)據(jù)庫(即,數(shù)據(jù)庫服務(wù))之間平衡當前分配給集群的資源,以滿足服務(wù)級別協(xié)定。在該級別平衡的資源池是數(shù)據(jù)庫實例和容留數(shù)據(jù)庫實例的節(jié)點。通常,在此級別平衡資源涉及在該集群中現(xiàn)有的節(jié)點中加入實例和從中刪除實例。例如,響應(yīng)于服務(wù)級別違反,為了滿足服務(wù)級別協(xié)定,將實例362加入節(jié)點360,該節(jié)點已經(jīng)存在于用于多節(jié)點數(shù)據(jù)庫服務(wù)器222的集群中。
場級在該級,可在多個服務(wù)之間分配的資源是集群中的節(jié)點。用于集群的節(jié)點池是動態(tài)的。例如,響應(yīng)于服務(wù)級別違反,向多節(jié)點數(shù)據(jù)庫服務(wù)器222的集群中加入節(jié)點370。
調(diào)節(jié)資源分配的動作的分層通常,在較低級別的資源分配分層上調(diào)節(jié)資源比在較高級別的資源分配分層上有較少的破壞性(disruptive)。將數(shù)據(jù)庫對話和服務(wù)遷移到在數(shù)據(jù)庫級上的運行實例和從運行實例中遷移出,比在集群級提供或刪除新的數(shù)據(jù)庫實例具有較少的失敗和較低成本。重配置在實體(資源已經(jīng)分配給了這些實體)之間指派的資源比從較高級別請求指派更多的資源要便宜。在數(shù)據(jù)庫級別上的服務(wù)安置和會話遷移比在集群級改變用于數(shù)據(jù)庫的數(shù)據(jù)庫實例的數(shù)量要便宜。在數(shù)據(jù)庫級內(nèi),遷移會話以在已經(jīng)容留了服務(wù)的實例之間重配置這些會話比服務(wù)擴展和收縮要便宜,因為后者影響了服務(wù)的拓撲結(jié)構(gòu),可能會對負荷分布有較大的整體影響。
為了補救服務(wù)級別違反,從資源分配分層的最低級開始調(diào)節(jié)資源分配。以此方式,服務(wù)級別違反通常以較少的失敗和較低成本的方式被補救。如果可通過調(diào)節(jié)數(shù)據(jù)庫級的資源分配來解決服務(wù)級別違反,則不求助于較高級別的資源分配。某些服務(wù)級別違反要求一些或所有級別的調(diào)節(jié)。
例如,響應(yīng)于服務(wù)級別違反,將FIN提供給實例352,并從同一實例中刪除PAY,但只有當刪除服務(wù)PAY不違反PAY的服務(wù)級別協(xié)定時。否則,將服務(wù)FIN擴展至另一數(shù)據(jù)庫實例。然而,如果沒有可用的可向其提供服務(wù)FIN的實例,則提供新實例。這是通過在集群級進行分配,向集群中已有的節(jié)點360提供新實例362。然后,通過將服務(wù)FIN擴展至實例362,可在數(shù)據(jù)庫級進行分配,該實例在服務(wù)被提供時,是已經(jīng)分配給數(shù)據(jù)庫220的實例。
導(dǎo)控器(director)分層根據(jù)一個實施例,被稱作分布式導(dǎo)控器的分布式系統(tǒng)組件負責(zé)管理各級別上的資源的工作負荷和資源分配。作為在此使用的術(shù)語,系統(tǒng)組件是軟件、數(shù)據(jù)、以及一個或多個執(zhí)行該軟件以及使用和維護該數(shù)據(jù)以執(zhí)行特定函數(shù)的進程的結(jié)合。分布式系統(tǒng)組件是在多個節(jié)點上執(zhí)行。優(yōu)選地,但不是必須的,導(dǎo)控器是數(shù)據(jù)庫實例的系統(tǒng)組件,并在該數(shù)據(jù)庫實例的控制之下進行操作。分布式導(dǎo)控器包括在集群場101的多個節(jié)點上執(zhí)行的導(dǎo)控器。
根據(jù)一個實施例,導(dǎo)控器負責(zé)管理在資源分配分層的一個或多個級別上的資源分配。特別地,對于每個數(shù)據(jù)庫,導(dǎo)控器用作在數(shù)據(jù)庫級管理資源分配的數(shù)據(jù)庫導(dǎo)控器。數(shù)據(jù)庫的其他數(shù)據(jù)庫實例可具有用作備份數(shù)據(jù)庫導(dǎo)控器的導(dǎo)控器,準備如果當前有效的數(shù)據(jù)庫導(dǎo)控器由于例如系統(tǒng)故障而變得不能執(zhí)行該任務(wù),則接管來作為有效的數(shù)據(jù)庫導(dǎo)控器。
對于每個集群,集群被用作集群導(dǎo)控器。集群導(dǎo)控器負責(zé)管理在用于集群的集群級的資源分配。集群內(nèi)的其他導(dǎo)控器作為備份集群導(dǎo)控器。
最后,導(dǎo)控器充當場導(dǎo)控器。場導(dǎo)控器負責(zé)管理在場級的資源分配。集群內(nèi)的其他導(dǎo)控器充當備份場導(dǎo)控器。
導(dǎo)控器接收、保持、和產(chǎn)生管理在該導(dǎo)控器的對應(yīng)級上的工作負荷所需的信息。
參照圖3,導(dǎo)控器380在數(shù)據(jù)庫實例342上運行。導(dǎo)控器380充當用于數(shù)據(jù)庫220的數(shù)據(jù)庫導(dǎo)控器、用于集群110的集群導(dǎo)控器、和用于集群場101的場導(dǎo)控器。其他導(dǎo)控器分別用作用于數(shù)據(jù)庫230和240的數(shù)據(jù)庫導(dǎo)控器,以及分別用作用于集群120和130的集群導(dǎo)控器。
通常,為了解決服務(wù)級別違反,在資源分配分層的所有級別上的導(dǎo)控器可參與補救該違反。數(shù)據(jù)庫導(dǎo)控器試圖通過調(diào)節(jié)在數(shù)據(jù)庫級上的資源分配來補救服務(wù)級別違反。如果服務(wù)級別違反要求在資源分配分層的下一更高級別(即集群級)上的調(diào)節(jié),則數(shù)據(jù)庫導(dǎo)控器將服務(wù)級別違反的解決升級到集群導(dǎo)控器。如果服務(wù)級別違反要求在資源分配分層的最高級別(即,場級別)的調(diào)節(jié),則集群導(dǎo)控器將服務(wù)級別違反的解決升級到場導(dǎo)控器。對服務(wù)級別違反的補救可涉及通過所有導(dǎo)控器來調(diào)節(jié)資源分配。
導(dǎo)控器使用消息隊列相互通信。根據(jù)一個實施例,消息隊列是儲存于容留導(dǎo)控器的數(shù)據(jù)庫實例的數(shù)據(jù)庫中的表。該表的記錄或行對應(yīng)于消息隊列。記錄指示由負責(zé)響應(yīng)該類型消息的導(dǎo)控器響應(yīng)消息所采取的任何動作的狀態(tài)。例如,數(shù)據(jù)庫導(dǎo)控器可從集群導(dǎo)控器請求數(shù)據(jù)庫實例。將該請求被添加至隊列。集群導(dǎo)控器掃描消息隊列,檢測到該請求,然后對它作用,更新記錄以反映響應(yīng)于該請求所采取的動作。集群導(dǎo)控器發(fā)送消息至數(shù)據(jù)庫導(dǎo)控器,消息安置于數(shù)據(jù)庫導(dǎo)控器的消息隊列中。
使用數(shù)據(jù)庫220中的表的優(yōu)點是使得面向交易的數(shù)據(jù)庫系統(tǒng)(例如多節(jié)點數(shù)據(jù)庫服務(wù)器222)的能力(power)和容量可以用來持久地和可恢復(fù)地存儲消息隊列。當有效數(shù)據(jù)庫、集群、或場導(dǎo)控器失敗時,進入其位置的備份導(dǎo)控器可以以與導(dǎo)控器失敗時留下的方式一致的狀態(tài)訪問消息隊列。在“Recoverable AsynchronousMessage Driven Processing in a Multi-Node System”(50277-2414)中描述了這種消息隊列及其使用。
數(shù)據(jù)庫導(dǎo)控器數(shù)據(jù)庫導(dǎo)控器負責(zé)監(jiān)控服務(wù)的服務(wù)性能以確保滿足服務(wù)級別協(xié)定,用于從數(shù)據(jù)庫220的數(shù)據(jù)庫實例擴展或收縮服務(wù)、以及用于在數(shù)據(jù)庫220的數(shù)據(jù)庫實例之間遷移數(shù)據(jù)庫會話。數(shù)據(jù)庫導(dǎo)控器還可訪問和儲存用于每個使用數(shù)據(jù)庫的服務(wù)的服務(wù)性能度量和服務(wù)級別協(xié)定?;谶@些服務(wù)性能度量和服務(wù)級別協(xié)定,數(shù)據(jù)庫導(dǎo)控器確保了以兩種方式滿足服務(wù)級別協(xié)定(1)通過產(chǎn)生和發(fā)送信息至接收器,保持與服務(wù)級別協(xié)定一致的服務(wù)性能以允許接收器平衡在服務(wù)實例之間的負荷;以及(2)通過檢測服務(wù)級別違反和啟動對資源分配的調(diào)節(jié)來補救服務(wù)級別違反。
為了保持與服務(wù)級別協(xié)定一致的服務(wù)性能,使用了連接時間平衡。特別地,導(dǎo)控器380產(chǎn)生和提供在此稱作性能等級的信息至接收器390。性能等級引導(dǎo)具有平衡負荷的接收器390,以保持服務(wù)性能一致。性能等級指示一個實例上的服務(wù)相對于其他實例的相對服務(wù)性能?;谠撔阅艿燃?,接收器390將請求服務(wù)的連接用戶的分布傾向于提供更好服務(wù)性能的數(shù)據(jù)庫實例?!癈alculation ofService Performance Grades in a Multi-node Environment That Hoststhe Services”(50277-2410)中描述了產(chǎn)生性能等級和基于性能等級以該方式分配用戶請求的技術(shù)。
補救服務(wù)級別違反要求檢測服務(wù)級別違反。導(dǎo)控器380通過將服務(wù)性能度量與服務(wù)級別協(xié)定相比較來檢測服務(wù)的業(yè)務(wù)級別違反。例如,導(dǎo)控器380從工作負荷監(jiān)控器388接收指示用于服務(wù)FIN的平均交易時間超過30毫秒的服務(wù)性能度量。用于服務(wù)FIN的服務(wù)級別協(xié)定要求平均交易時間不多于20毫秒。導(dǎo)控器380通過將實際平均交易時間與服務(wù)級別協(xié)定相比較來檢測服務(wù)級別違反。
當數(shù)據(jù)庫導(dǎo)控器檢測到服務(wù)的服務(wù)級別違反時,其根據(jù)資源分配分層,在嘗試更有破壞性的和更高成本的資源分配調(diào)節(jié)之前先嘗試最不具破壞性的和最低成本的資源分配調(diào)節(jié)。為此,數(shù)據(jù)庫導(dǎo)控器首先確定,通過將分配給服務(wù)的數(shù)據(jù)庫會話遷移至另一服務(wù)性能更好的數(shù)據(jù)庫實例,來在已容留服務(wù)的實例之間平衡工作量是否可補救服務(wù)級別違反。以實現(xiàn)服務(wù)實例之間的平衡負荷為目標的方式來選取遷移的數(shù)據(jù)庫會話的數(shù)量。
如果數(shù)據(jù)庫導(dǎo)控器確定不應(yīng)該通過重新平衡現(xiàn)有服務(wù)實例之間的負荷來解決服務(wù)級別違反,則導(dǎo)控器380嘗試通過擴展服務(wù),即通過分配另外的現(xiàn)有數(shù)據(jù)庫實例(在此稱之為目標數(shù)據(jù)庫實例)容留該業(yè)務(wù)來補救該服務(wù)級別違反。如果目標數(shù)據(jù)庫實例不是正在容留業(yè)務(wù),則通過分配該目標數(shù)據(jù)庫實例容留該服務(wù)來擴展該服務(wù)。如果目標數(shù)據(jù)庫實例容留了另外的服務(wù),則如果數(shù)據(jù)庫導(dǎo)控器確定了如此做不會導(dǎo)致其他服務(wù)的服務(wù)級別違反,那么數(shù)據(jù)庫導(dǎo)控器可終止該服務(wù)。
圖4示出了當必須首先終止目標數(shù)據(jù)庫實例上的服務(wù)時,導(dǎo)控器380作為用于數(shù)據(jù)庫220的數(shù)據(jù)庫導(dǎo)控器所執(zhí)行的,用于擴展服務(wù)至另一目標數(shù)據(jù)庫(目標數(shù)據(jù)庫)實例的進程的流程圖。出于說明的目的,服務(wù)PAY由數(shù)據(jù)庫實例342、352、和362容留,后者位于節(jié)點360上。服務(wù)FIN被擴展至數(shù)據(jù)庫實例342。運行在實例342上的服務(wù)PAY的服務(wù)實例正被終止。
參照圖4,在步驟410,導(dǎo)控器380發(fā)送阻止消息至接收器390。阻止信息指示接收器390停止將用于服務(wù)PAY的用戶請求分配到目標數(shù)據(jù)庫實例342。
在步驟420,數(shù)據(jù)庫導(dǎo)控器380將目標數(shù)據(jù)庫實例上的數(shù)據(jù)庫會話遷移至容留服務(wù)FIN的其他數(shù)據(jù)庫實例。以平衡其他數(shù)據(jù)庫實例之間的工作負荷的方式來在其他數(shù)據(jù)庫實例之間分配數(shù)據(jù)庫會話。
在步驟430,導(dǎo)控器380發(fā)送服務(wù)啟動消息至接收器390。服務(wù)啟動消息指示接收器390服務(wù)FIN正在實例362上運行。
在步驟440,導(dǎo)控器380使用運行時平衡來平衡在其上正在運行服務(wù)FIN的實例(即實例322、332、342)之間的工作負荷。
有時,導(dǎo)控器380可能確定沒有服務(wù)能夠不違反目標實例上的服務(wù)級別協(xié)定而收縮來為其他業(yè)務(wù)的擴展騰出空間。在此情況下,導(dǎo)控器380可選擇將服務(wù)擴展至沒有容留任何服務(wù)的數(shù)據(jù)庫實例。如果沒有數(shù)據(jù)庫實例可用,則導(dǎo)控器380從集群導(dǎo)控器請求一個數(shù)據(jù)庫實例。響應(yīng)于此,集群導(dǎo)控器根據(jù)請求提供另外的數(shù)據(jù)庫實例,并通知導(dǎo)控器380。導(dǎo)控器380將服務(wù)擴展至該新的數(shù)據(jù)庫實例。
服務(wù)級別協(xié)定可限制服務(wù)的基數(shù)。例如,用于服務(wù)FIN的服務(wù)級別協(xié)定要求至少一個但不多于三個數(shù)據(jù)庫實例容留服務(wù)FIN,以及服務(wù)PAY則至少由三個數(shù)據(jù)庫實例來容留。
除了使用于擴展另一服務(wù)的數(shù)據(jù)庫實例可用以外,還可以有其他原因終止服務(wù)。例如,服務(wù)FIN的基數(shù)限制可根據(jù)天的時間而變化。在正常的辦公時間內(nèi),服務(wù)FIN的基數(shù)可以高達三,但在非辦公時間內(nèi),基數(shù)可以不高于一。在非辦公時間的開始,三個數(shù)據(jù)庫實例正在容留服務(wù)FIN。數(shù)據(jù)庫導(dǎo)控器380通過終止在兩個數(shù)據(jù)庫實例上的服務(wù)來收縮服務(wù)FIN。
數(shù)據(jù)庫導(dǎo)控器可能需要響應(yīng)集群導(dǎo)控器所產(chǎn)生的請求。這樣的動作包括響應(yīng)集群導(dǎo)控器的請求以終止數(shù)據(jù)庫實例,即,終止由數(shù)據(jù)庫實例當前容留的服務(wù)。當集群導(dǎo)控器希望用另一數(shù)據(jù)庫的數(shù)據(jù)庫實例替換一個數(shù)據(jù)庫的數(shù)據(jù)庫實例時,需要該步驟。
集群導(dǎo)控器集群導(dǎo)控器負責(zé)將數(shù)據(jù)庫實例提供給集群中現(xiàn)有的節(jié)點和從中刪除。集群導(dǎo)控器還實施數(shù)據(jù)庫級別策略。數(shù)據(jù)庫級別策略要求例如用于數(shù)據(jù)庫的數(shù)據(jù)庫實例的基數(shù)落入最小值和/或最大值內(nèi),或要求當沒有足夠的資源滿足所有服務(wù)級別協(xié)定時,集群導(dǎo)控器將數(shù)據(jù)庫實例的分配傾向于被指派為具有較高資源分配優(yōu)先級的數(shù)據(jù)庫。以此方式在數(shù)據(jù)庫之間傾斜,還可將資源分配傾向于使用了較高優(yōu)先級的數(shù)據(jù)庫的服務(wù)。集群導(dǎo)控器可訪問和存儲指定數(shù)據(jù)庫之間資源分配的優(yōu)先級的數(shù)據(jù)。這種數(shù)據(jù)可由集群的管理員來配置。
集群導(dǎo)控器響應(yīng)于數(shù)據(jù)庫導(dǎo)控器對數(shù)據(jù)庫實例的請求(“NEED-INSTANCE”請求),提供和刪除數(shù)據(jù)庫實例。如果在集群內(nèi)存在未容留數(shù)據(jù)庫實例的節(jié)點(“空閑節(jié)點”),則集群導(dǎo)控器通過向數(shù)據(jù)庫實例提供空閑節(jié)點來將另一節(jié)點分配給數(shù)據(jù)庫。
如果集群中沒有空閑節(jié)點,則集群導(dǎo)控器可通過向場導(dǎo)控器發(fā)布“NEED-NODE”請求來從場導(dǎo)控器請求一個節(jié)點。如果場導(dǎo)控器不能提供一個節(jié)點,則集群導(dǎo)控器裁定由該集群容留的數(shù)據(jù)庫之間的數(shù)據(jù)庫實例的分配。該裁定可能需要從集群中的節(jié)點中刪除數(shù)據(jù)庫的數(shù)據(jù)庫實例和提供為其產(chǎn)生NEED-INSTANCE請求的數(shù)據(jù)庫的數(shù)據(jù)庫實例。
圖5是示出了用于裁定數(shù)據(jù)庫之間的數(shù)據(jù)庫實例的分配的進程的流程圖。用于數(shù)據(jù)庫220的數(shù)據(jù)庫導(dǎo)控器確定了需要用于服務(wù)的另一數(shù)據(jù)庫實例,并產(chǎn)生了用于集群導(dǎo)控器的NEED-INSTANCE請求,該集群導(dǎo)控器是導(dǎo)控器380。導(dǎo)控器380憑借其作為集群導(dǎo)控器的能力,確定另一數(shù)據(jù)庫的數(shù)據(jù)庫實例應(yīng)該從集群110內(nèi)的節(jié)點刪除,從而該節(jié)點可用于提供用于數(shù)據(jù)庫220的另一數(shù)據(jù)庫實例。
參照圖5,在步驟510,作為集群導(dǎo)控器的導(dǎo)控器380發(fā)送“VOLUNTEER-TO-QUIESCE”請求至數(shù)據(jù)庫導(dǎo)控器,而不是請求數(shù)據(jù)庫導(dǎo)控器(即,發(fā)布NEED-INSTANCE請求的導(dǎo)控器)。VOLUNTEER-TO-QUIESCE請求的目的是詢問數(shù)據(jù)庫導(dǎo)控器,其是否可停止一個數(shù)據(jù)庫實例,即其是否可減少用于該導(dǎo)控器的數(shù)據(jù)庫的數(shù)據(jù)庫實例的基數(shù)。數(shù)據(jù)庫的數(shù)據(jù)庫導(dǎo)控器可通過自愿、發(fā)送指示用于數(shù)據(jù)庫的數(shù)據(jù)庫實例可被停止的消息來響應(yīng)。數(shù)據(jù)庫導(dǎo)控器可向停止數(shù)據(jù)庫實例傾斜,即減少數(shù)據(jù)庫實例的基數(shù)。數(shù)據(jù)庫導(dǎo)控器可發(fā)送拒絕該請求的消息的一個原因是,所有導(dǎo)控器的數(shù)據(jù)庫實例都需要滿足服務(wù)的可用性要求。
如果數(shù)據(jù)庫導(dǎo)控器380從數(shù)據(jù)庫導(dǎo)控器接收至少一個肯定數(shù)據(jù)庫實例可停止的消息,即多于一個的數(shù)據(jù)庫導(dǎo)控器自愿者,那么在步驟520,導(dǎo)控器380從這些自愿的數(shù)據(jù)庫中選擇數(shù)據(jù)庫。可選擇具有較低資源分配優(yōu)先級的數(shù)據(jù)庫,以有利于具有較高資源分配優(yōu)先級的數(shù)據(jù)庫。出于說明的目的,導(dǎo)控器380選擇數(shù)據(jù)庫240。集群導(dǎo)控器384發(fā)送消息至數(shù)據(jù)庫240的數(shù)據(jù)庫導(dǎo)控器,以從容留數(shù)據(jù)庫實例的節(jié)點中停止數(shù)據(jù)庫240的數(shù)據(jù)庫實例。
如果數(shù)據(jù)庫導(dǎo)控器380沒有從數(shù)據(jù)庫導(dǎo)控器接收到肯定數(shù)據(jù)庫實例可被停止的消息,即,沒有數(shù)據(jù)庫導(dǎo)控器自愿者,那么在步驟530,導(dǎo)控器380選擇具有較低資源分配優(yōu)先級的數(shù)據(jù)庫。導(dǎo)控器380然后發(fā)送消息至所選數(shù)據(jù)庫的數(shù)據(jù)庫導(dǎo)控器,以停止數(shù)據(jù)庫實例。在“On Demand Node and Server Allocation and DeAllocation”(50277-2413)中進一步詳細地描述了選擇要停止的數(shù)據(jù)庫實例的技術(shù)。
在步驟540,數(shù)據(jù)庫240的數(shù)據(jù)庫導(dǎo)控器停止節(jié)點上的數(shù)據(jù)庫實例,并向集群導(dǎo)控器,即導(dǎo)控器380發(fā)送數(shù)據(jù)庫實例被停止的通知(“INSTANCE-IDLE”通知)。在步驟550,導(dǎo)控器380接收該通知。
在步驟560,集群導(dǎo)控器380從節(jié)點中刪除該數(shù)據(jù)庫實例,然后使用例如集群軟件的實例提供API將數(shù)據(jù)庫230的數(shù)據(jù)庫實例提供給該節(jié)點。
作為裁定數(shù)據(jù)庫之間的數(shù)據(jù)庫實例分配的結(jié)果,由數(shù)據(jù)庫提供的服務(wù)放棄該節(jié)點可能遭受服務(wù)級被違反??稍黾蛹褐泄?jié)點的基數(shù)(下面將對此更詳細地說明),從而空閑節(jié)點變?yōu)榭捎?,并可用于補救這種服務(wù)級別違反。作為集群導(dǎo)控器的導(dǎo)控器380,監(jiān)控集群配置元數(shù)據(jù),以檢測何時更多的空閑節(jié)點變得可用,并可將這些空閑節(jié)點分配給遭受服務(wù)級別違反的數(shù)據(jù)庫。例如,在當前實例中,數(shù)據(jù)庫220的數(shù)據(jù)庫導(dǎo)控器在放棄該數(shù)據(jù)庫實例之后,繼續(xù)檢測服務(wù)級別違反,以及響應(yīng)于此,發(fā)送NEED-INSTANCE請求至其集群導(dǎo)控器,導(dǎo)控器380。最終,在檢測到更多空閑節(jié)點被加入集群110之后,導(dǎo)控器380能夠通過向空閑節(jié)點提供數(shù)據(jù)庫實例來響應(yīng)于請求中的一個。
場導(dǎo)控器場導(dǎo)控器負責(zé)在集群場中的集群之間分配節(jié)點,通過從一個集群中刪除節(jié)點,然后將該節(jié)點提供給另一集群,以在這些集群之間移動節(jié)點。集群導(dǎo)控器還實施集群范圍策略(cluster-wide policy)。集群寬策略可要求例如集群內(nèi)的節(jié)點的基數(shù)落入最小值和/或最大值內(nèi)。
響應(yīng)于來自集群導(dǎo)控器的NEED-NODE請求,場導(dǎo)控器依據(jù)集群服務(wù)級別協(xié)定,向集群提供節(jié)點,以及從另一集群中刪除空閑節(jié)點。場導(dǎo)控器與集群場內(nèi)的集群導(dǎo)控器一致,裁定節(jié)點的分配。該進程需要發(fā)送“RELINQUISH-NODE”請求至集群導(dǎo)控器,該集群導(dǎo)控器響應(yīng)它們指示他們是否可放棄節(jié)點?;谠擁憫?yīng),場導(dǎo)控器選擇集群,并與所選擇的集群的集群導(dǎo)控器交互,以從該集群中刪除節(jié)點。從該集群中刪除節(jié)點可能需要停止數(shù)據(jù)庫實例。一旦停止了數(shù)據(jù)庫實例,則場導(dǎo)控器從所選集群中刪除該節(jié)點以及向需要該節(jié)點的集群提供節(jié)點,這是通過調(diào)用使用用于該目的的API的集群軟件來實現(xiàn)的。
另外,場導(dǎo)控器使用從在每個集群上執(zhí)行的工作負荷監(jiān)控器接收的性能度量來監(jiān)控集群場內(nèi)的集群的性能。如果性能度量指示,集群正在違反服務(wù)級別協(xié)定或者沒有象其它集群一樣工作良好,則場導(dǎo)控器將一個或多個節(jié)點從較好工作的集群移動至較差工作的集群。
導(dǎo)控器的選擇如上所述,在數(shù)據(jù)庫的數(shù)據(jù)庫實例內(nèi),存在多個導(dǎo)控器可用作有效的導(dǎo)控器或備份導(dǎo)控器。因此,需要一種機制來確定哪個導(dǎo)控器是有效導(dǎo)控器。此外,當有效導(dǎo)控器故障時,需要選擇備份數(shù)據(jù)庫導(dǎo)控器做為有效數(shù)據(jù)庫導(dǎo)控器。對于集群導(dǎo)控器和場導(dǎo)控器來說存在同樣的需求。在此將選擇有效導(dǎo)控器的進程稱作導(dǎo)控器選擇。
有多種方式可選擇數(shù)據(jù)庫導(dǎo)控器。首先涉及數(shù)據(jù)庫全局鎖。數(shù)據(jù)庫全局鎖用于使在數(shù)據(jù)庫的所有數(shù)據(jù)庫實例的控制之下運行的進程同步。一旦啟動,數(shù)據(jù)庫導(dǎo)控器請求排它鎖。如果沒有數(shù)據(jù)庫導(dǎo)控器持有該鎖,則數(shù)據(jù)庫導(dǎo)控器被授予該鎖,并擔任數(shù)據(jù)庫導(dǎo)控器的位置。如果確實可以,則隨后請求該鎖的其他導(dǎo)控器不被授予該鎖,并擔任備份導(dǎo)控器的位置直到被授予該鎖。請求保持掛起(pending),直到被請求者授予或撤回。
多節(jié)點數(shù)據(jù)庫服務(wù)器檢測數(shù)據(jù)庫全局鎖的持有者何時經(jīng)歷系統(tǒng)故障。這樣,故障持有者的數(shù)據(jù)庫全局鎖被取消或被釋放,以及用于數(shù)據(jù)庫全局鎖的掛起請求被授予備份數(shù)據(jù)庫導(dǎo)控器。被授予鎖的備份數(shù)據(jù)庫導(dǎo)控器于是擔任數(shù)據(jù)庫導(dǎo)控器的角色。
用于導(dǎo)控器選擇的另一技術(shù)涉及進程組的使用。進程組是可由在集群內(nèi)的任何節(jié)點上執(zhí)行的進程加入的組。該組的成員被通知,另一成員何時停止運行(例如,由系統(tǒng)故障導(dǎo)致)或離開該進程組。另外,當加入該組時,成員被指派有標識符。
當導(dǎo)控器啟動時,其加入用于其數(shù)據(jù)庫的進程組。如果在加入的導(dǎo)控器上具有最高成員標識符,則該導(dǎo)控器擔當該數(shù)據(jù)庫的數(shù)據(jù)庫導(dǎo)控器的位置。當有效導(dǎo)控器停止運行時,進程組的成員被通知,并且具有最高成員標識符的成員擔當數(shù)據(jù)庫導(dǎo)控器的角色。
可使用類似的技術(shù)來選擇集群導(dǎo)控器。集群寬鎖可以被用于導(dǎo)控器選擇,或者用于集群的進程組可以被使用。
在這些技術(shù)之下,可以實現(xiàn),擔當集群導(dǎo)控器角色的導(dǎo)控器可以是不同于前面有效集群導(dǎo)控器的數(shù)據(jù)庫的導(dǎo)控器。因此,消息隊列可以位于不同的數(shù)據(jù)庫上。相比于位于另一數(shù)據(jù)庫上的數(shù)據(jù)庫實例,數(shù)據(jù)庫上的表可以被位于該數(shù)據(jù)庫的數(shù)據(jù)庫實例上的進程更有效地訪問。
一種可用于確保擔當有效導(dǎo)控器角色的備份導(dǎo)控器被同一數(shù)據(jù)庫的數(shù)據(jù)庫實例容留的技術(shù),是靜態(tài)數(shù)據(jù)指定技術(shù)。在該技術(shù)之下,數(shù)據(jù)庫被指定為容留(即,其數(shù)據(jù)庫實例容留)用于集群的集群導(dǎo)控器的數(shù)據(jù)庫。只有用于該數(shù)據(jù)庫的導(dǎo)控器起到用于集群的集群導(dǎo)控器的作用。這些導(dǎo)控器中的導(dǎo)控器選擇可以通過使用全局數(shù)據(jù)庫鎖或用于該數(shù)據(jù)庫的進程組來執(zhí)行。
數(shù)據(jù)庫可由管理員使用由集群軟件為此目的提供的接口來指定。為了加強備份集群導(dǎo)控器的可用性,可指定具有高優(yōu)先級和高最小/最大基數(shù)要求的數(shù)據(jù)庫,以確保相對較多數(shù)量的備份導(dǎo)控器。靜態(tài)數(shù)據(jù)庫指定方法可用于選擇有效的場導(dǎo)控器。
使用分層的導(dǎo)控器組織場集群內(nèi)的資源管理,有助于管理資源所需的信息的產(chǎn)生和交換。通常,在特定數(shù)據(jù)庫內(nèi)運行的進程(即,特定數(shù)據(jù)庫的數(shù)據(jù)庫實例的進程)相比于不在數(shù)據(jù)庫內(nèi)的進程,能夠與在該數(shù)據(jù)庫內(nèi)的其他進程更有效地通信。因此,用作數(shù)據(jù)庫的數(shù)據(jù)庫導(dǎo)控器并且從運行在數(shù)據(jù)庫內(nèi)的一個或多個工作負荷監(jiān)控器獲取的服務(wù)性能度量的導(dǎo)控器,能夠比在其他數(shù)據(jù)庫內(nèi)運行的導(dǎo)控器更有效地獲取數(shù)據(jù)。另外,因為在數(shù)據(jù)庫內(nèi)僅有一個數(shù)據(jù)庫導(dǎo)控器有效,所以獲得和產(chǎn)生用于運行數(shù)據(jù)庫的服務(wù)的信息的工作(例如服務(wù)性能度量、服務(wù)級別協(xié)定、消息隊列數(shù)據(jù)),僅需要由一個導(dǎo)控器執(zhí)行。
對于集群導(dǎo)控器而言,類似地,僅需要該集群內(nèi)的一個導(dǎo)控器執(zhí)行以下工作訪問消息隊列、和獲得集群服務(wù)級別協(xié)定和追蹤哪些節(jié)點在該集群中以及節(jié)點容留什么數(shù)據(jù)庫的什么數(shù)據(jù)庫實例所需的信息。
信息和信息交換被分配的方式被用于限定導(dǎo)控器本身可采取的管理服務(wù)性能的動作以及哪些動作可被導(dǎo)控器采用來升級或降低至另一導(dǎo)控器。例如,再分配數(shù)據(jù)庫之間的數(shù)據(jù)庫實例要求知道以下信息集群中哪些節(jié)點可用,以及哪些節(jié)點具有哪些數(shù)據(jù)庫實例。因此,當不知道這些信息的數(shù)據(jù)庫導(dǎo)控器檢測到要求數(shù)據(jù)庫之間的數(shù)據(jù)庫實例的重新分配形式的動作的服務(wù)級別被違反時,數(shù)據(jù)庫導(dǎo)控器將該動作升級至知道這種信息的集群導(dǎo)控器。
可選實施例的實例通過動態(tài)分配數(shù)據(jù)庫服務(wù)和數(shù)據(jù)庫服務(wù)的子類中的多節(jié)點系統(tǒng)的資源,描述本發(fā)明的實施例。然而,本發(fā)明并不限定于此。
例如,本發(fā)明的實施例可用于在由應(yīng)用程序服務(wù)器提供的服務(wù)中分配容留應(yīng)用程序服務(wù)器的多節(jié)點系統(tǒng)的計算機資源。例如,應(yīng)用程序服務(wù)器是部分三層結(jié)構(gòu)(three tier architecture),其中應(yīng)用程序服務(wù)器位于客戶機與數(shù)據(jù)庫服務(wù)器之間。應(yīng)用程序服務(wù)器主要用于存儲應(yīng)用程序代碼、提供對應(yīng)用程序代碼的訪問,和執(zhí)行應(yīng)用程序代碼,而數(shù)據(jù)庫服務(wù)器主要用于存儲和提供對用于應(yīng)用程序服務(wù)器的數(shù)據(jù)庫的訪問。應(yīng)用程序服務(wù)器將對數(shù)據(jù)的請求發(fā)送至數(shù)據(jù)庫服務(wù)器。響應(yīng)于執(zhí)行存儲于應(yīng)用程序服務(wù)器上的應(yīng)用程序代碼,該請求可由應(yīng)用程序服務(wù)器產(chǎn)生。應(yīng)用程序服務(wù)器的一個實例是Oracle 9i Application Server或Oracle 10g Application Server。類似于在此所述的多節(jié)點服務(wù)器的實例,應(yīng)用程序服務(wù)器可分配為在多個節(jié)點上執(zhí)行的多個服務(wù)器實例、容留可在服務(wù)器實例之間遷移的多個會話的服務(wù)器實例。
本發(fā)明也不限于僅由執(zhí)行相同軟件產(chǎn)品或相同版本的軟件產(chǎn)品的拷貝的服務(wù)器實例所構(gòu)成的同質(zhì)的多節(jié)點服務(wù)器。例如,多節(jié)點數(shù)據(jù)庫服務(wù)器可由多組服務(wù)器實例構(gòu)成,每組執(zhí)行來自不同廠商的不同的數(shù)據(jù)庫服務(wù)器軟件,或執(zhí)行來自相同廠商的不同版本的數(shù)據(jù)庫服務(wù)器軟件。
透明會話遷移透明會話遷移允許客戶機以對于為其創(chuàng)建初始會話的應(yīng)用程序而言是透明的方式,將客戶機從一個服務(wù)器上的會話切換至另一服務(wù)器上的另一個會話。術(shù)語遷移是指以下操作一個服務(wù)器上的現(xiàn)有會話的客戶機從現(xiàn)有的會話切換至另一會話,允許現(xiàn)有會話終止,并且允許該客戶機使用其他會話代替現(xiàn)有的會話?,F(xiàn)有會話在此是指已經(jīng)被遷移的。術(shù)語“透明”是指以下面的方式執(zhí)行操作相對于一個單元的軟件而言,不需要在單元中執(zhí)行被設(shè)計以執(zhí)行操作的指令。因此,在透明會話遷移之下,客戶機在會話之間轉(zhuǎn)換,而不用執(zhí)行被設(shè)計為實現(xiàn)該遷移的應(yīng)用程序指令。相反,客戶機側(cè)接口部件(應(yīng)用程序通過該客戶機側(cè)接口部件與服務(wù)器交互)處理遷移的細節(jié),修改客戶機側(cè)接口部件的內(nèi)部狀態(tài),以使其實現(xiàn)。為了運行在此描述的技術(shù),不必修改傳統(tǒng)的應(yīng)用程序。
會話的狀態(tài)被捕獲和恢復(fù),以遷移會話。捕獲會話狀態(tài)需要產(chǎn)生字節(jié)流,作為該會話的會話狀態(tài)的真正拷貝,其可儲存于對象、文件、或其他類型的數(shù)據(jù)結(jié)構(gòu)中,并隨后被訪問以恢復(fù)該會話。在透明會話遷移之下,在源服務(wù)器上捕獲客戶機會話,產(chǎn)生存儲于數(shù)據(jù)結(jié)構(gòu)中并被傳送至目的地服務(wù)器的字節(jié)流,其中,目的地服務(wù)器通過將該字節(jié)流裝載入為客戶機建立的目的地服務(wù)器上的會話中來恢復(fù)該會話。
會話的遷移當將來的應(yīng)用程序調(diào)用取決于前應(yīng)用程序調(diào)用所產(chǎn)生的會話狀態(tài)時,數(shù)據(jù)庫會話可以是“有狀態(tài)(statefull)”。因為將來的應(yīng)用程序調(diào)用對狀態(tài)滿會話的會話狀態(tài)的潛在依賴,所以狀態(tài)滿數(shù)據(jù)庫會話的遷移需要確定存儲于源實例上的部分會話狀態(tài)是否可以轉(zhuǎn)移至另一數(shù)據(jù)庫實例,如果可以,則在源數(shù)據(jù)庫實例與目的地實例之間轉(zhuǎn)移會話狀態(tài)的拷貝。在實施例中,為了確定存儲于源實例上的部分會話狀態(tài)是否可以轉(zhuǎn)移至另一數(shù)據(jù)庫實例,進行各種遷移檢查以確定會話狀態(tài)是否可以轉(zhuǎn)移至另一數(shù)據(jù)庫實例。這些遷移檢查包括確定數(shù)據(jù)庫會話是處于交易邊界,處于調(diào)用邊界、還是處于組件邊界。
如果當前沒有正在為該對話執(zhí)行的有效交易,則數(shù)據(jù)庫會話處于交易邊界。交易是作為原子單位被執(zhí)行的工作的邏輯單元。在數(shù)據(jù)庫系統(tǒng)的環(huán)境中,數(shù)據(jù)庫必須反映由交易做出的所有改變,或由交易得到的沒有改變,以確保數(shù)據(jù)庫的完整性。因此,由交易得到的沒有變化都永久地應(yīng)用至數(shù)據(jù)庫,直至該交易已被完全執(zhí)行。當由交易事務(wù)做出的改變是永久改變時,該交易被稱作“執(zhí)行”。如果交易還沒有被執(zhí)行、中止、或被其他形式地終止,則交易是有效的。
如果數(shù)據(jù)庫實例已經(jīng)結(jié)束了執(zhí)行客戶機調(diào)用而不是處于處理該調(diào)用的中間階段,則數(shù)據(jù)庫會話處于調(diào)用邊界。例如,為了處理執(zhí)行數(shù)據(jù)庫語句的調(diào)用,數(shù)據(jù)庫實例經(jīng)歷多個階段,每個階段對應(yīng)于特定類型的操作。這些階段是(1)創(chuàng)建指針;(2)分析數(shù)據(jù)庫語句并賦值其變量;(3)執(zhí)行數(shù)據(jù)庫語句;(4)讀取行以返回到查詢;以及(5)關(guān)閉指針。在“Oracle8 Server Concepts”Release 8.0,Volume 3(其內(nèi)容結(jié)合于此作為參考)的第23章中更詳細地描述了這些階段。中間階段是在該調(diào)用的處理結(jié)束之前執(zhí)行的操作。中間階段是階段(1)-(5)。在實例響應(yīng)于調(diào)用執(zhí)行步驟(5)之后,源會話處于調(diào)用邊界。
如果會話的每個“數(shù)據(jù)庫組件”位于其各自的組件邊界,則會話處于組件邊界。數(shù)據(jù)庫組件是數(shù)據(jù)庫服務(wù)器上的一組軟件模塊,其提供特定的和相關(guān)的函數(shù)。組件會話狀態(tài)由數(shù)據(jù)庫組件專門產(chǎn)生和使用。根據(jù)實施例,可將會話狀態(tài)看作組件會話狀態(tài)的聯(lián)合或結(jié)合。以下是數(shù)據(jù)庫組件的實例。指針組件管理數(shù)據(jù)庫實例內(nèi)的指針。指針是用于存儲關(guān)于分析的數(shù)據(jù)庫語句的信息和其他與處理數(shù)據(jù)庫語句有關(guān)的信息的存儲器的區(qū)域。PL/SQL組件是可負責(zé)執(zhí)行以PL/SQL(由Oracle Corporation發(fā)布的程序化數(shù)據(jù)庫語言)寫成的代碼(例如,程序)的數(shù)據(jù)庫組件。會話參數(shù)組件是負責(zé)管理通常控制與會話相關(guān)聯(lián)的調(diào)用和請求如何被處理的屬性的數(shù)據(jù)庫組件。屬性存儲在部件會話狀態(tài)中。例如,會話參數(shù)可包括控制用于通過執(zhí)行查詢返回的結(jié)果的特殊人類語言的屬性。Java組件是負責(zé)執(zhí)行以Java寫成的代碼(例如,類和對象方法)的數(shù)據(jù)庫組件。Java組件使用組件會話狀態(tài)以儲存與執(zhí)行Java代碼有關(guān)的信息。
如果數(shù)據(jù)庫組件的組件會話狀態(tài)可遷移至另一會話,則數(shù)據(jù)庫會話處于特定數(shù)據(jù)庫組件的組件邊界。數(shù)據(jù)庫組件提供返回指示數(shù)據(jù)庫組件的各個組件會話狀態(tài)是否可以被遷移的值的函數(shù)。數(shù)據(jù)庫會話的組件會話狀態(tài)不可以被遷移的原因是,組件會話狀態(tài)包括打開文件的文件描述符。文件描述符包含僅對容留該數(shù)據(jù)庫會話的實例有效的信息。
該函數(shù)是由每個數(shù)據(jù)庫組件支持的回叫函數(shù)的部分接口。調(diào)用這些函數(shù)以捕獲和恢復(fù)組件會話狀態(tài),以及確定組件會話狀態(tài)是否允許會話被遷移。
產(chǎn)生性能度量性能度量是指示為一個或多個資源由服務(wù)實現(xiàn)的服務(wù)質(zhì)量。后臺程序從為每個會話和駐留在數(shù)據(jù)庫實例上的服務(wù)產(chǎn)生的性能統(tǒng)計產(chǎn)生性能度量。類似于性能度量,性能統(tǒng)計可指示性能的質(zhì)量。然而,性能統(tǒng)計通常包括關(guān)于具體資源的具體使用的更多詳細信息。性能統(tǒng)計包括例如會話使用了多少CPU時間、調(diào)用的速度、會話產(chǎn)生的調(diào)用數(shù)量、完成會話的調(diào)用所需要的響應(yīng)時間、多少CPU處理時間用于分析用于會話的查詢、多少CPU處理時間用于執(zhí)行查詢、多少邏輯和物理讀取被執(zhí)行用于會話、以及用于輸入和輸出各種資源的操作的等待時間,例如讀取特定組的數(shù)據(jù)塊或?qū)懭胩囟ńM的數(shù)據(jù)塊的等待時間。為會話所產(chǎn)生的性能統(tǒng)計由與該會話相關(guān)聯(lián)的服務(wù)來合計。
對于在數(shù)據(jù)庫實例上所建立的每個會話,會話對象被創(chuàng)建為在數(shù)據(jù)庫實例上建立會話的部分。會話對象包含被數(shù)據(jù)庫實例使用的信息項以管理會話。在這些信息項中具有為對話限定的服務(wù)標識符。在實施例中,服務(wù)標識符是由服務(wù)的服務(wù)名稱產(chǎn)生的哈希值。
通過執(zhí)行會話內(nèi)請求的工作的程序產(chǎn)生并合計性能統(tǒng)計。例如,為發(fā)送請求以執(zhí)行查詢的客戶機建立數(shù)據(jù)庫會話。用于會話的程序執(zhí)行數(shù)據(jù)庫服務(wù)器軟件,分析查詢,并用公式表示用于并行計算查詢的執(zhí)行方案。分析數(shù)據(jù)庫查詢,用公式表示執(zhí)行方案并計算該查詢的數(shù)據(jù)庫服務(wù)器軟件還產(chǎn)生和合計性能統(tǒng)計。數(shù)據(jù)庫服務(wù)器軟件通過會話和該會話的服務(wù)來合計性能統(tǒng)計。性能統(tǒng)計被存儲于性能統(tǒng)計儲存庫中,該性能統(tǒng)計儲存庫可以是例如與會話相關(guān)聯(lián)或與不和任何會話有聯(lián)系的服務(wù)相關(guān)聯(lián)的存儲器內(nèi)的固定表。將用于會話的性能統(tǒng)計合計,且存儲于用于該會話的存儲器內(nèi)的表中。將用于服務(wù)的性能統(tǒng)計合計,且存儲于用于該服務(wù)的存儲器內(nèi)的表中。
例如,會話與服務(wù)PAY相關(guān)聯(lián)。為了計算查詢,指定給該會話的數(shù)據(jù)庫程序使用.4秒CPU時間。該程序?qū)?4添加到用于服務(wù)PAY的存儲器內(nèi)的表中的小計上。
工作負荷監(jiān)控器周期性地(例如每5秒)訪問性能統(tǒng)計儲存庫,以產(chǎn)生性能量度,并將產(chǎn)生的性能度量存儲于性能度量儲存庫中,該性能度量儲存庫優(yōu)選地是存儲器內(nèi)數(shù)據(jù)庫表。工作負荷監(jiān)控器可以每5秒訪問性能統(tǒng)計儲存庫,以產(chǎn)生性能度量,包括性能等級。將性能等級發(fā)送至用于連接時間平衡的接收器。接收器使用性能等級以執(zhí)行連接時間平衡,建立用于服務(wù)的提供較高性能的數(shù)據(jù)庫實例上的服務(wù)發(fā)出連接請求的會話。
工作負荷監(jiān)控器還可以在性能度量被產(chǎn)生示對其進行比較以檢測服務(wù)級別協(xié)定違反。當檢測到服務(wù)的性能違反時,工作負荷監(jiān)控器發(fā)送消息以警告負責(zé)響應(yīng)該服務(wù)級別違反的導(dǎo)控器(例如數(shù)據(jù)庫導(dǎo)控器)。
需要限定服務(wù)及其各種屬性和服務(wù)的質(zhì)量(例如,服務(wù)級別協(xié)定)。根據(jù)實施例,數(shù)據(jù)庫服務(wù)器提供命令行界面,該界面從人類管理員接收命令以創(chuàng)建和修改數(shù)據(jù)庫服務(wù)器的服務(wù)的限定。將這些限定作為數(shù)據(jù)庫配置數(shù)據(jù)存儲在數(shù)據(jù)庫中的詞典中,作為“服務(wù)配置”。
硬件綜述圖6是示出可以執(zhí)行本發(fā)明的實施例的計算機系統(tǒng)600的框圖。計算機系統(tǒng)600包括用于傳遞信息的總線602或其它通信裝置以及用于處理信息的與總線602連接的處理器604。計算機系統(tǒng)600還包括連接至總線602的主存儲器606,諸如隨機訪問存儲器(RAM)或者其它動態(tài)存儲裝置,用于儲存信息和將由處理器604執(zhí)行的指令。在執(zhí)行將由處理器604執(zhí)行的指令期間,主存儲器606還可用于儲存臨時變量或其他中間信息。計算機系統(tǒng)600進一步包括只讀存儲器(ROM)608或連接至總線602的其他靜態(tài)存儲裝置,用于存儲靜態(tài)信息和處理器604的指令。提供諸如磁盤或光盤的存儲設(shè)備610,并連接至總線602用于存儲信息和指令。
計算機系統(tǒng)600可以經(jīng)由總線602連接至諸如陰極射線管(CRT)的顯示器612,用于向計算機用戶顯示信息。包括字母數(shù)字鍵和其他鍵的輸入裝置614連接至總線602,用于將信息和指令選擇傳遞到處理器604。另一種類型的用戶輸入裝置是光標控制616,諸如鼠標、跟蹤球、或光標方向鍵,用于將方向信息和命令選擇傳遞到處理器604并用于控制顯示器612上的光標移動。輸入裝置通常在兩個軸上(第一個軸(例如X軸)和第二個軸(例如Y軸))具有兩個自由度,使裝置能指派平面上的位置。
本發(fā)明涉及計算機系統(tǒng)600的使用,用于執(zhí)行在此描述的技術(shù)。根據(jù)本發(fā)明的一個實施例,通過計算機系統(tǒng)600響應(yīng)于執(zhí)行包括在主存儲器606中的一個或多個指令的一個或多個序列的處理器604,來實現(xiàn)這些技術(shù)。這樣的指令可以從諸如存儲裝置610的其它計算機可讀介質(zhì)讀入主存儲器606。包括在主存儲器606中的指令序列的執(zhí)行,使得處理器604執(zhí)行此處所述的處理步驟。在可選實施例中,可以使用硬連線電路(hard-wired circuitry)來取代軟件指令或者與軟件指令結(jié)合來實施該發(fā)明。因此,本發(fā)明的實施例將不限于硬件電路和軟件的任何特定組合。
這里使用的術(shù)語“計算機可讀介質(zhì)”是指參與向處理器604提供指令用于執(zhí)行的任何介質(zhì)。這種介質(zhì)可以采取多種形式,包括但不限于非易失性介質(zhì)、易失性介質(zhì)、和傳遞介質(zhì)。非易失性介質(zhì)舉例來說包括光盤或磁盤,諸如存儲裝置610。易失性介質(zhì)包括動態(tài)存儲器,諸如主存儲器606。傳輸介質(zhì)包括同軸電纜、銅線、和光纖,包括組成總線602的導(dǎo)線。傳輸介質(zhì)還可采取聲波或光波形式,例如那些在無線電波和紅外線數(shù)據(jù)通信過程中產(chǎn)生的聲波和光波。
通常形式的計算機可讀介質(zhì)包括如軟盤、軟性盤、硬盤、磁帶,或者任何其它磁性介質(zhì)、CD-ROM、任何其它光介質(zhì)、打孔紙、紙帶、或者任何帶孔圖樣的物理介質(zhì)、RAM、PROM、EPROM、FLASH-EPROM、或者其他任何存儲芯片或者盒式磁帶,或者以下提到的載波、或者計算機可讀的任何其他介質(zhì)。
各種形式的計算機可讀介質(zhì)可參與將一個或者多個指令的一個或多個序列承載到處理器604用于執(zhí)行。例如,指令開始可承載在遠程計算機的磁盤中。遠程計算機可以將指令加載到其動態(tài)存儲器中,然后使用調(diào)制解調(diào)器通過電話線發(fā)送指令。計算機系統(tǒng)600本地的調(diào)制解調(diào)器可接收電話線上的數(shù)據(jù),并使用紅外發(fā)射器將數(shù)據(jù)轉(zhuǎn)換成紅外信號。紅外探測器可以接收紅外信號攜帶的數(shù)據(jù),并且合適的電路可以將數(shù)據(jù)放到總線602上。總線602將數(shù)據(jù)承載到主存儲器606,處理器604從主存儲器取回并執(zhí)行這些指令。在由處理器604執(zhí)行這些指令之前或之后,由主存儲器606接收的指令可隨意地儲存在存儲裝置610上。
計算機系統(tǒng)600還包括連接至總線602的通信接口618。提供雙向數(shù)據(jù)通信的通信接口618,連接到與局域網(wǎng)622連接的網(wǎng)絡(luò)鏈路620。例如,通信接口618可以是綜合業(yè)務(wù)數(shù)字網(wǎng)(ISDN)卡或者調(diào)制解調(diào)器,用于提供到相應(yīng)類型的電話線的數(shù)據(jù)通信連接。又如,通信接口618可以是局域網(wǎng)(LAN)卡,用于提供至兼容局域網(wǎng)(LAN)的數(shù)據(jù)通信連接。也可以使用無線鏈路。在任何這樣的實施中,通信接口618發(fā)送和接收承載表示各種類型的信息的數(shù)字數(shù)據(jù)流的電信號、電磁信號、和光學(xué)信號。
網(wǎng)絡(luò)鏈路620通??赏ㄟ^一個或者多個網(wǎng)絡(luò)向其它數(shù)據(jù)裝置提供數(shù)據(jù)通信。例如,網(wǎng)絡(luò)鏈路620可通過局域網(wǎng)622與主機624連接,或者與互聯(lián)網(wǎng)業(yè)務(wù)提供商(ISP)626操作的數(shù)據(jù)設(shè)備連接。ISP626又通過目前通稱為“互聯(lián)網(wǎng)”628的全球分組數(shù)據(jù)通信網(wǎng)絡(luò)提供數(shù)據(jù)通信業(yè)務(wù)。局域網(wǎng)622和互聯(lián)網(wǎng)628都使用承載數(shù)字數(shù)據(jù)流的電信號、電磁信號、或光學(xué)信號。通過各種網(wǎng)絡(luò)的信號和網(wǎng)絡(luò)鏈路620上的信號以及通過通信接口618的信號,都傳送數(shù)字數(shù)據(jù)給計算機系統(tǒng)600或者傳送來自計算機系統(tǒng)的數(shù)字數(shù)據(jù),是傳輸信息的載波的示例性形式。
計算機系統(tǒng)600能通過網(wǎng)絡(luò)、網(wǎng)絡(luò)鏈路620、和通信接口618發(fā)送消息和接收數(shù)據(jù)(包括程序代碼)。在互聯(lián)網(wǎng)的實例中,服務(wù)器630可通過互聯(lián)網(wǎng)628、ISP 626、局域網(wǎng)622、和通信接口618,傳送用于應(yīng)用程序的所請求的程序代碼。
所接收的代碼可以在其被接收時由處理器604執(zhí)行,和/或儲存在存儲裝置610或者其它非易失性介質(zhì)中用于隨后執(zhí)行。按照這種方式,計算機系統(tǒng)600可以以載波的形式獲得應(yīng)用代碼。
以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種用于動態(tài)分配多節(jié)點計算機系統(tǒng)的計算機資源的方法,所述方法包括以下計算機執(zhí)行的步驟監(jiān)控由運行在所述多節(jié)點計算機系統(tǒng)上的多個服務(wù)實現(xiàn)的性能,其中所述多個服務(wù)包括第一服務(wù)和第二服務(wù);基于所述的監(jiān)控多個服務(wù)的所述性能,產(chǎn)生性能度量,所述性能度量指示由所述多個服務(wù)的每個服務(wù)實現(xiàn)的性能;基于所述性能度量,所述多節(jié)點計算機系統(tǒng)為所述第一服務(wù)檢測服務(wù)級別協(xié)定的違反;以及響應(yīng)于檢測所述服務(wù)級別協(xié)定的所述違反,所述多節(jié)點計算機系統(tǒng)調(diào)節(jié)在所述第一服務(wù)與所述第二服務(wù)之間的所述多節(jié)點系統(tǒng)的計算機資源的分配。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述調(diào)節(jié)資源分配的步驟包括分配所述多節(jié)點系統(tǒng)的另一節(jié)點以容留所述第一服務(wù)。
3.根據(jù)權(quán)利要求1所述的方法,其中,第一服務(wù)器運行在所述多節(jié)點系統(tǒng)的第一節(jié)點上,其中,所述調(diào)節(jié)資源的分配的步驟包括將所述第一服務(wù)擴展至所述第一服務(wù)器。
4.根據(jù)權(quán)利要求3所述的方法,其中,調(diào)節(jié)資源的分配包括將所述第一服務(wù)器提供給所述第一節(jié)點,以執(zhí)行將所述第一服務(wù)擴展至所述第一服務(wù)器的所述步驟。
5.根據(jù)權(quán)利要求1所述的方法,其中所述多節(jié)點系統(tǒng)包括第一節(jié)點和第二節(jié)點;為所述第一節(jié)點上的所述第一服務(wù)建立第一組會話;為所述第二節(jié)點上的所述第一服務(wù)建立第二組會話;以及所述分配資源的步驟包括將至少一個會話從所述第二組遷移至所述第一節(jié)點。
6.根據(jù)權(quán)利要求1所述的方法,其中所述計算機資源包含資源池;所述調(diào)節(jié)計算機資源的分配的步驟包括在嘗試調(diào)節(jié)在分層中較高的第二資源池的分配之前,嘗試通過為所述第一服務(wù)調(diào)節(jié)在所述分層中較低的第一資源池的分配來解決所述性能違反;以及所述資源池包括第一資源池和第二資源池。
7.根據(jù)權(quán)利要求6所述的方法,其中所述資源池包括作為所述第一資源池的第一服務(wù)器池和作為所述第二資源池的第二節(jié)點池;以及所述嘗試解決所述性能違反的步驟包括在嘗試添加來自所述第二池的另一節(jié)點以容留所述第一服務(wù)之前,嘗試分配來自所述第一池的另一服務(wù)器以容留所述第一服務(wù)。
8.根據(jù)權(quán)利要求7所述的方法,其中,所述步驟進一步包括,響應(yīng)于增加所述另一節(jié)點,向所述另一節(jié)點提供另一服務(wù)器。
9.根據(jù)權(quán)利要求6所述的方法,其中所述第一多節(jié)點服務(wù)器包括第一服務(wù)器、第二服務(wù)器、和第三服務(wù)器;所述第一服務(wù)器容留用于所述第一服務(wù)的多個會話;以及所述嘗試解決所述性能違反的步驟包括在分配所述第三服務(wù)器以容留所述第一服務(wù)之前,嘗試將所述多個會話中的至少一個會話遷移至所述第二服務(wù)器。
10.根據(jù)權(quán)利要求1所述的方法,其中所述多個服務(wù)中的每個服務(wù)是由所述多節(jié)點系統(tǒng)執(zhí)行的一類工作;以及所述調(diào)節(jié)所述多節(jié)點系統(tǒng)的計算機資源的分配的步驟包括調(diào)節(jié)分配至所述多類工作的每類的計算機資源。
11.根據(jù)權(quán)利要求10所述的方法,其中多個軟件單元執(zhí)行在與所述多節(jié)點系統(tǒng)互連的一組客戶計算機上;以及每類工作對應(yīng)于來自所述多個單元的一個特定軟件單元。
12.根據(jù)權(quán)利要求11所述的方法,其中,每類工作對應(yīng)于響應(yīng)由來自所述多個單元的某個特定軟件單元所產(chǎn)生的請求而執(zhí)行的工作。
13.一種用于動態(tài)分配包括第一組節(jié)點和第二組節(jié)點的多節(jié)點計算機系統(tǒng)的計算機資源的方法,所述方法包括以下步驟監(jiān)控容留在所述多節(jié)點系統(tǒng)上的多個服務(wù)的性能,以產(chǎn)生性能度量;基于所述的監(jiān)控多個服務(wù)的所述性能,產(chǎn)生性能度量,所述性能度量指示由所述多個服務(wù)的每個服務(wù)實現(xiàn)的性能;其中,所述多節(jié)點系統(tǒng)包括第一組節(jié)點和第二組節(jié)點;在所述第一組節(jié)點上運行第一多節(jié)點服務(wù)器和第二多節(jié)點服務(wù)器;其中,所述多個服務(wù)包括由所述第一多節(jié)點服務(wù)器容留的第一服務(wù)和第二服務(wù);運行在所述第一組節(jié)點上的第一系統(tǒng)組件,基于所述性能度量調(diào)節(jié)在所述第一服務(wù)與所述第二服務(wù)之間的所述第一多節(jié)點服務(wù)器的資源的分配;以及運行在所述第一組節(jié)點上的第二系統(tǒng)組件,基于所述性能度量調(diào)節(jié)在所述第一多節(jié)點服務(wù)器與所述第二多節(jié)點服務(wù)器之間的所述第一組節(jié)點的資源的分配。
14.根據(jù)權(quán)利要求13所述的方法,其中,所述步驟進一步包括所述第一系統(tǒng)組件為所述第一服務(wù)檢測服務(wù)級別違反;以及響應(yīng)于為所述第一服務(wù)檢測的所述服務(wù)級別違反,所述第一系統(tǒng)組件發(fā)送第一請求至所述第二系統(tǒng)組件,以調(diào)節(jié)在所述第一多節(jié)點服務(wù)器與所述第二多節(jié)點服務(wù)器之間的所述第一組節(jié)點的資源的分配。
15.根據(jù)權(quán)利要求13所述的方法,其中,所述第二系統(tǒng)組件調(diào)節(jié)在所述第一多節(jié)點服務(wù)器與所述第二多節(jié)點服務(wù)器之間的所述第一組節(jié)點的資源的分配包括,所述第二系統(tǒng)組件分配在所述第一多節(jié)點服務(wù)器與所述第二多節(jié)點服務(wù)器之間的節(jié)點。
16.根據(jù)權(quán)利要求13所述的方法,所述步驟進一步包括所述第一系統(tǒng)組件為所述第一服務(wù)檢測服務(wù)級別違反;以及響應(yīng)于為所述第一服務(wù)檢測所述服務(wù)級別違反,所述第一系統(tǒng)組件調(diào)節(jié)在所述第一服務(wù)與所述第二服務(wù)之間的所述第一多節(jié)點服務(wù)器的資源的分配。
17.根據(jù)權(quán)利要求16所述的方法,其中所述第一多節(jié)點服務(wù)器包括第一服務(wù)器實例和第二服務(wù)器實例;以及其中,所述調(diào)節(jié)所述第一多節(jié)點服務(wù)器的資源的分配的步驟包括,使所述第二服務(wù)器容留所述第一服務(wù)。
18.根據(jù)權(quán)利要求16所述的方法,其中所述第一多節(jié)點服務(wù)器包括第一服務(wù)器實例和第二服務(wù)器實例;所述第一服務(wù)器實例容留用于所述第一服務(wù)的至少一個會話;所述第二服務(wù)器實例容留用于所述第一服務(wù)的至少一個會話;以及所述調(diào)節(jié)所述第一多節(jié)點服務(wù)器的資源的分配的步驟包括,在所述第一服務(wù)器實例與所述第二服務(wù)器實例之間調(diào)節(jié)用于所述第一服務(wù)的會話的平衡。
19.根據(jù)權(quán)利要求14所述的方法,其中,響應(yīng)于接收所述第一請求,所述第二系統(tǒng)組件將所述第一多節(jié)點服務(wù)器的另一服務(wù)器實例提供給另一節(jié)點。
20.根據(jù)權(quán)利要求19所述的方法,其中所述第一組節(jié)點是共享對至少一個永久性存儲裝置的訪問的節(jié)點的第一集群;所述第二系統(tǒng)組件發(fā)送第二請求至在所述多節(jié)點系統(tǒng)上運行的第三系統(tǒng)組件,以請求另一節(jié)點;以及所述第三系統(tǒng)組件基于所述性能度量,在所述多節(jié)點系統(tǒng)內(nèi)的所述第一集群與另一集群之間分配節(jié)點。
21.根據(jù)權(quán)利要求19所述的方法,其中,提供另一服務(wù)器實例,使所述第二系統(tǒng)組件發(fā)送消息至所述第一系統(tǒng)組件,以指示所述另一服務(wù)器實例是可用的。
全文摘要
用于有效且高效地在多節(jié)點數(shù)據(jù)庫系統(tǒng)所提供的服務(wù)之間管理多節(jié)點數(shù)據(jù)庫系統(tǒng)的資源的動態(tài)分配的方法。服務(wù)是駐留在數(shù)據(jù)庫服務(wù)器上的一類工作。所述方法管理不同級別上的資源分配。對于使用特定數(shù)據(jù)庫的服務(wù),該服務(wù)所實現(xiàn)的性能被監(jiān)控。在這些服務(wù)之間分配指定給該數(shù)據(jù)庫的資源,以確保每個的性能目標被滿足。在數(shù)據(jù)庫之間分配指定給節(jié)點的集群的資源,以確保使用數(shù)據(jù)庫的所有服務(wù)的性能目標都被滿足。基于服務(wù)級別協(xié)定和后臺策略,在集群之中指定被指定給集群的場的資源。該方法使用分層的導(dǎo)控器來管理不同級別上的資源。
文檔編號G06F7/00GK1836212SQ200480023057
公開日2006年9月20日 申請日期2004年8月13日 優(yōu)先權(quán)日2003年8月14日
發(fā)明者本尼·蘇德爾, 德巴希什·查特吉, 拉克希米納拉亞南·奇丹巴拉恩, 戴維·布勞爾, 卡羅爾·科爾雷恩, 丹尼爾·塞姆勒, 克里斯托弗·坎塔爾吉葉夫, 詹姆斯·W·斯塔莫斯 申請人:甲骨文國際公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
尖扎县| 枣阳市| 稷山县| 辽源市| 全椒县| 汶川县| 平和县| 长宁县| 台湾省| 邵阳市| 宁城县| 华坪县| 康定县| 苏尼特右旗| 洞口县| 古浪县| 桂林市| 务川| 体育| 越西县| 湾仔区| 新巴尔虎左旗| 阿勒泰市| 新沂市| 万荣县| 浦东新区| 盈江县| 镶黄旗| 白沙| 苏尼特右旗| 称多县| 庆元县| 光山县| 湟源县| 黄骅市| 九江市| 志丹县| 慈溪市| 札达县| 龙南县| 博爱县|