本專利文檔的公開內(nèi)容的一部分包含受版權(quán)保護的材料。版權(quán)所有者不反對任何人對專利文檔或?qū)@_內(nèi)容按照在專利商標局的專利文件或記錄中出現(xiàn)的那樣進行傳真復(fù)制,但是除此之外在任何情況下都保留所有版權(quán)。
技術(shù)領(lǐng)域
本發(fā)明的實施例一般地涉及應(yīng)用服務(wù)器和云平臺環(huán)境,并且具體涉及用于提供用在多租戶應(yīng)用服務(wù)器環(huán)境中的工作管理器的系統(tǒng)和方法。
背景技術(shù):
軟件應(yīng)用服務(wù)器(其示例包括Oracle WebLogic Server(WLS)與Glassfish)通常提供用于運行企業(yè)軟件應(yīng)用的受管理的環(huán)境。近來,允許用戶或者租戶在云環(huán)境內(nèi)開發(fā)和運行它們的應(yīng)用以及利用由環(huán)境提供的分布式資源的技術(shù)也已經(jīng)被研發(fā),以用在云環(huán)境中。
技術(shù)實現(xiàn)要素:
根據(jù)實施例,本文描述了用于提供用在應(yīng)用服務(wù)器環(huán)境中的工作管理器的系統(tǒng)和方法。根據(jù)實施例,系統(tǒng)管理員可以配置分區(qū)工作管理器以向多租戶應(yīng)用服務(wù)器環(huán)境內(nèi)的每個分區(qū)提供分區(qū)工作請求優(yōu)先級排序(公允份額值(fair share value))。系統(tǒng)管理員可以附加地將分區(qū)工作管理器配置為施加最小線程約束限制、分區(qū)容量約束、和/或分區(qū)最大線程約束,其中所有都制約環(huán)境內(nèi)的分區(qū)對線程資源的使用。
附圖說明
圖1示出了根據(jù)實施例的用于在應(yīng)用服務(wù)器、云或者其他環(huán)境中支持多租賃的系統(tǒng)。
圖2進一步示出了根據(jù)實施例的用于在應(yīng)用服務(wù)器、云或者其他環(huán)境中支持多租賃的系統(tǒng)。
圖3進一步示出了根據(jù)實施例的用于在應(yīng)用服務(wù)器、云或者其他環(huán)境中支持多租賃的系統(tǒng)。
圖4示出了根據(jù)實施例的用于示例性多租戶環(huán)境的域配置。
圖5進一步示出了根據(jù)實施例的示例性多租戶環(huán)境。
圖6示出了根據(jù)實施例的在多租戶應(yīng)用服務(wù)器環(huán)境中分區(qū)工作管理器的使用。
圖7示出了根據(jù)實施例的在多租戶應(yīng)用服務(wù)器環(huán)境中分區(qū)工作管理器的使用。
圖8是用于提供用在多租戶應(yīng)用服務(wù)器環(huán)境中的工作管理器的示例性方法的流程圖。
圖9是用于提供用在多租戶應(yīng)用服務(wù)器環(huán)境中的工作管理器的示例性方法的流程圖。
具體實施方式
根據(jù)實施例,本文描述了用于提供用在應(yīng)用服務(wù)器環(huán)境中的工作管理器的系統(tǒng)和方法。根據(jù)實施例,系統(tǒng)管理員可以配置分區(qū)工作管理器以向多租戶應(yīng)用服務(wù)器環(huán)境內(nèi)的每個分區(qū)提供分區(qū)工作請求優(yōu)先級排序(公允份額值)。系統(tǒng)管理員可以附加地將分區(qū)工作管理器配置為施加最小線程約束限制、分區(qū)容量約束、和/或分區(qū)最大線程約束,其中所有都制約環(huán)境內(nèi)的分區(qū)對線程資源的使用。
應(yīng)用服務(wù)器(例如,多租戶(MT))環(huán)境
圖1示出了根據(jù)實施例的用于在應(yīng)用服務(wù)器、云或者其他環(huán)境中支持多租賃的系統(tǒng)。
如圖1中所示,根據(jù)實施例,應(yīng)用服務(wù)器(例如多租戶(MT))環(huán)境100或者啟用軟件應(yīng)用的部署和執(zhí)行的其他計算環(huán)境可以被配置為包括在運行時被用來定義應(yīng)用服務(wù)器域的域102的配置以及根據(jù)域102的配置來操作。
根據(jù)實施例,應(yīng)用服務(wù)器可以包括被定義用于在運行時使用的一個或更多分區(qū)104。每個分區(qū)可以與全局唯一的分區(qū)標識符(ID)以及分區(qū)配置關(guān)聯(lián),并且可以進一步包括一個或更多資源組124連同對資源組模板的引用126,和/或分區(qū)特定(partition-specific)的應(yīng)用或資源128。域級別的資源組、應(yīng)用和/或資源140也可以在域級別上被定義,可選地具有對資源組模板的引用。
每個資源組模板160可以定義一個或更多應(yīng)用A 162、B 164、資源A 166、B 168和/或其他可部署應(yīng)用或資源170,并且可以被資源組引用。例如,如圖1中所示,分區(qū)104中的資源組124可以引用(190)資源組模板160。
通常,系統(tǒng)管理員可以定義分區(qū)、域級別的資源組和資源組模板,以及安全性領(lǐng)域;而分區(qū)管理員可以定義其自己分區(qū)的方面,例如通過創(chuàng)建分區(qū)級別資源組、部署應(yīng)用到該分區(qū)、或者引用用于該分區(qū)的特定的領(lǐng)域。
圖2進一步示出了根據(jù)實施例的用于在應(yīng)用服務(wù)器、云或者其他環(huán)境中支持多租賃的系統(tǒng)。
如圖2中所示,根據(jù)實施例,分區(qū)202可以包括:例如,包括對資源組模板210的引用206的資源組205,虛擬目標(例如虛擬主機)信息207,以及可插拔的數(shù)據(jù)庫(PDB)信息208。資源組模板(例如210)可以定義例如多個應(yīng)用A 211和B 212,以及諸如Java Message Server(JMS)服務(wù)器213、存儲并轉(zhuǎn)發(fā)(SAF)代理215、郵件會話組件216或者Java Database Connectivity(JDBC)資源217之類的資源。
圖2中示出的資源組模板是以示例的方式提供的;根據(jù)其他實施例,可以提供不同類型的資源組模板和元素。
根據(jù)實施例,當分區(qū)(例如202)內(nèi)的資源組引用(220)具體資源組模板(例如210)時,與具體分區(qū)關(guān)聯(lián)的信息可以結(jié)合被引用的資源組模板使用,以指示分區(qū)特定的信息230,例如分區(qū)特定的PDB信息。分區(qū)特定的信息可以隨后被應(yīng)用服務(wù)器使用以配置資源(例如PDB資源)用于被該分區(qū)使用。例如,與分區(qū)202關(guān)聯(lián)的分區(qū)特定的PDB信息可以被應(yīng)用服務(wù)器使用來配置(232)具有適當?shù)腜DB 238的容器數(shù)據(jù)庫(CDB)236以被該分區(qū)使用。
類似地,根據(jù)實施例,與具體分區(qū)關(guān)聯(lián)的虛擬目標信息可以被用來定義(239)分區(qū)特定的虛擬目標240(例如,baylandurgentcare.com)以被該分區(qū)使用,該虛擬目標240隨后可以被置為可以經(jīng)由統(tǒng)一資源定位符(URL)訪問,例如http://baylandurgentcare.com。
圖3進一步示出了根據(jù)實施例的用于在應(yīng)用服務(wù)器、云或者其他環(huán)境中支持多租賃的系統(tǒng)。
根據(jù)實施例,諸如config.xml配置文件的系統(tǒng)配置被用于定義分區(qū),該系統(tǒng)配置包括用于與該分區(qū)關(guān)聯(lián)的資源組的配置元素和/或其他分區(qū)特性??梢允褂锰匦悦?值對來每個分區(qū)地指定值。
根據(jù)實施例,在受管理的服務(wù)器/集群242或者類似的環(huán)境內(nèi)可以執(zhí)行多個分區(qū),該多個分區(qū)可以提供對CDB 243的訪問并可以經(jīng)由網(wǎng)絡(luò)層244訪問。這允許例如域或分區(qū)與(CDB中的)PDB中的一個或更多個關(guān)聯(lián)。
根據(jù)實施例,多個分區(qū)中的每個分區(qū)(在此示例中是分區(qū)A 250和分區(qū)B 260)可以被配置為包括與該分區(qū)關(guān)聯(lián)的多個資源。例如,分區(qū)A可以被配置為包括資源組251,資源組251包含應(yīng)用A1 252、應(yīng)用A2 254和JMS A 256,以及與PDB A 259關(guān)聯(lián)的數(shù)據(jù)源A 257,其中分區(qū)可經(jīng)由虛擬目標A 258訪問。類似地,分區(qū)B 260可以被配置為包括資源組261,資源組261包含應(yīng)用B1 262、應(yīng)用B2 264和JMS B 266,以及與PDB B 269關(guān)聯(lián)的數(shù)據(jù)源B 267,其中分區(qū)可經(jīng)由虛擬目標B 268訪問。
盡管上述示例中的一些示出了CDB和PDB的使用,但根據(jù)其他實施例,其他類型的多租戶數(shù)據(jù)庫或者非多租戶數(shù)據(jù)庫也能夠被支持,其中可以例如通過模式的使用或者不同數(shù)據(jù)庫的使用來為每個分區(qū)提供具體配置。
資源
根據(jù)實施例,資源是可以被部署到環(huán)境的域的系統(tǒng)資源、應(yīng)用或者其他資源或?qū)ο?。例如,根?jù)實施例,資源可以是可以被部署到服務(wù)器、集群或者其他應(yīng)用服務(wù)器目標的應(yīng)用、JMS、JDBC、JavaMail、WLDF、數(shù)據(jù)源、或者其他系統(tǒng)資源或其他類型的對象。
分區(qū)
根據(jù)實施例,分區(qū)是可以與分區(qū)標識符(ID)及配置關(guān)聯(lián)的、并且可以包含應(yīng)用和/或通過資源組和資源組模板的使用來引用(refer to)域范圍的資源的、域的運行時和監(jiān)管性細分或片段。
通常,分區(qū)可以包含它自己的應(yīng)用、經(jīng)由資源組模板引用域范圍的應(yīng)用、以及具有它自己的配置??煞謪^(qū)的實體可以包括例如JMS、JDBC、JavaMail、WLDF資源的資源,和諸如JNDI命名空間、網(wǎng)絡(luò)流量、工作管理器的其他部件,以及安全性策略和領(lǐng)域。在多租戶環(huán)境的上下文中,系統(tǒng)可以被配置為向租戶提供對與租戶關(guān)聯(lián)的分區(qū)的監(jiān)管性和運行時方面的訪問。
根據(jù)實施例,分區(qū)內(nèi)的每個資源組可以可選地引用資源組模板。分區(qū)可以具有多個資源組,并且它們中的每一個可以引用資源組模板。每個分區(qū)可以定義用于在該分區(qū)的資源組所引用的資源組模板中未指定的配置數(shù)據(jù)的特性。這使得分區(qū)能夠充當在資源組模板中定義的可部署資源到用于該分區(qū)的特定的值的綁定。在一些情況下,分區(qū)可以超越由資源組模板指定的配置信息。
根據(jù)實施例,分區(qū)配置(如例如通過config.xml配置文件定義的)可以包括多個配置元素,例如:“分區(qū)”,包含定義分區(qū)的屬性和子元素;“資源組”,包含部署到分區(qū)的應(yīng)用和資源;“資源組模板”,包含由該模板定義的應(yīng)用和資源;“JDBC系統(tǒng)資源超越”,包含數(shù)據(jù)庫特定的服務(wù)名、用戶名以及密碼;以及“分區(qū)特性”,包含可以被用于資源組模板中的宏替換的特性鍵值。
在啟動時,系統(tǒng)可以使用由配置文件提供的信息以為來自資源組模板的每個資源生成分區(qū)特定的配置元素。
資源組
根據(jù)實施例,資源組是可部署資源的已命名的、完全限定的集合,資源組可以被在或者域級別或者分區(qū)級別上定義,并且可以引用資源組模板。資源組中的資源被認為是完全限定的,因為管理員已經(jīng)提供了啟動或者連接到那些資源的全部信息,例如用于連接到數(shù)據(jù)源的憑證、或者用于應(yīng)用的定向信息。
系統(tǒng)管理員可以在域級別上或在分區(qū)級別上聲明資源組。在域級別上,資源組提供了將相關(guān)資源分組的便利方式。系統(tǒng)可以與未組織的資源同樣地管理域級別的資源組中的已聲明的資源,使得資源可以在系統(tǒng)啟動期間啟動,并在系統(tǒng)關(guān)閉期間停止。管理員也可以分別地停止、啟動或者移除組中的資源,并且可以通過對組操作而隱式地作用在組中的全部資源上。例如,停止資源組停止組中全部尚未停止的資源;啟動資源組啟動組中尚未啟動的任意資源;而移除資源組移除組中包含的全部資源。
在分區(qū)級別上,受控于任意安全性制約,系統(tǒng)管理員或者分區(qū)管理員可以在分區(qū)中配置零個或者更多個資源組。例如,在SaaS使用情況下,各種分區(qū)級別的資源組可以引用域級別的資源組模板;而在PaaS使用情況下,可以創(chuàng)建不引用資源組模板而是表示要被置為只在該分區(qū)內(nèi)可用的應(yīng)用及其相關(guān)資源的、分區(qū)級別的資源組。
根據(jù)實施例,資源分組可以被用來將應(yīng)用和它們使用的資源一起分組為域內(nèi)有區(qū)別的監(jiān)管性單元。例如,在以下描述的醫(yī)療記錄(MedRec)應(yīng)用中,資源分組定義MedRec應(yīng)用及其資源。多個分區(qū)可以運行同一MedRec資源組,每個分區(qū)使用分區(qū)特定的配置信息,使得作為每個MedRec實例的一部分的應(yīng)用被置為特定于每個分區(qū)。
資源組模板
根據(jù)實施例,資源組模板是可以從資源組被引用的、在域級別上定義的可部署資源的集合,并且激活其資源所要求的信息中的一些可以不作為模板本身的一部分而存儲,使得它支持分區(qū)級別配置的指定。域可以包含任意數(shù)量的資源組模板,其中每個資源組模板可以包括例如一個或更多相關(guān)的Java應(yīng)用以及那些應(yīng)用所依賴的資源。關(guān)于這些資源的信息中的一些可以是跨全部分區(qū)相同的,而其他信息可以從一個分區(qū)到下一個分區(qū)變化。并非所有配置都需要在域級別上指定——代之以可以通過宏或者特性名/值對的使用在資源組模板中指定分區(qū)級別的配置。
根據(jù)實施例,具體資源組模板可以被一個或更多資源組引用。通常,在任意給定的分區(qū)內(nèi),在一個時刻資源組模板只可以被一個資源組引用,即它不能被同一分區(qū)內(nèi)的多個資源組同時引用;然而,它可以在同一時刻被不同分區(qū)中的另一個資源組引用。包含資源組的對象(例如域或者分區(qū))可以使用特性名/值分配來設(shè)置資源組模板中任意令牌的值。當系統(tǒng)使用引用資源組來激活資源組模板時,它可以使用在資源組的包含對象中設(shè)置的值來替換那些令牌。在一些情況下,系統(tǒng)也可以使用靜態(tài)配置的資源組模板和分區(qū)來生成用于每個分區(qū)/模板組合的運行時配置。
例如,在SaaS使用情況下,系統(tǒng)可以多次激活同一應(yīng)用和資源,包括為使用它們的每個分區(qū)激活一次。當管理員定義資源組模板時,它們可以使用令牌來表示將在其他地方被提供的信息。例如,要用在連接到CRM相關(guān)的數(shù)據(jù)源中的用戶名在資源組模板中可以被指示為\${CRMDataUsername}。
租戶
根據(jù)實施例,在諸如多租戶(MT)應(yīng)用服務(wù)器環(huán)境的多租戶環(huán)境中,租戶是能夠被一個或更多分區(qū)和/或一個或更多感知租戶的應(yīng)用所表示的、或者以其他方式與之關(guān)聯(lián)的實體。
例如,租戶可以表示有區(qū)別的用戶組織,諸如不同的外部公司,或者具體企業(yè)內(nèi)不同的部門(例如,人事和財務(wù)部門),其中每一個用戶組織可以與不同的分區(qū)關(guān)聯(lián)。租戶全局唯一身份(租戶ID)是在具體時刻具體用戶與具體租戶的關(guān)聯(lián)。系統(tǒng)可以例如通過參考用戶身份存儲器來從用戶身份推知具體用戶屬于哪一個租戶。用戶身份使得系統(tǒng)能夠?qū)嵤┯脩舯皇跈?quán)執(zhí)行的那些動作,包括但不限于用戶可以屬于哪一個租戶。
根據(jù)實施例,系統(tǒng)啟用不同租戶相互間的監(jiān)管和運行時隔離。例如,租戶可以配置其應(yīng)用的一些行為,以及配置它們能夠訪問的資源。系統(tǒng)可以確保具體租戶不能監(jiān)管屬于另一個租戶的產(chǎn)物(artifact);并且可以確保在運行時代表具體租戶工作的應(yīng)用只引用與該租戶關(guān)聯(lián)的資源,而不引用與其他租戶關(guān)聯(lián)的資源。
根據(jù)實施例,不感知租戶的應(yīng)用是不包含顯式地處理租戶的邏輯的應(yīng)用,使得無論什么用戶提交了該應(yīng)用正在響應(yīng)的請求,應(yīng)用所使用的任何資源都可以被訪問。相反地,感知租戶的應(yīng)用包括顯式地處理租戶的邏輯。例如,基于用戶的身份,應(yīng)用可以推知用戶所屬的租戶并且可以使用該信息來訪問租戶特定的資源。
根據(jù)實施例,系統(tǒng)使得用戶能夠部署被顯式地寫為感知租戶以使得應(yīng)用開發(fā)者可以獲得當前租戶的租戶ID的應(yīng)用。感知租戶的應(yīng)用于是可以使用租戶ID來處置正在使用應(yīng)用的單個實例的多個租戶。
例如,支持單個醫(yī)生的辦公室或者醫(yī)院的MedRec應(yīng)用可以暴露于兩個不同的分區(qū)或者租戶(例如Bayland Urgent Care租戶以及Valley Health租戶),其中的每一個能夠在不改變底層應(yīng)用代碼的情況下訪問單獨的租戶特定的資源,諸如單獨的PDB。
示例性域配置與多租戶環(huán)境
根據(jù)實施例,應(yīng)用可以被部署到在域級別上的資源組模板,或者被部署到受分區(qū)限制或受域限制的資源組??梢允褂妹繎?yīng)用或每分區(qū)地指定的部署計劃來超越應(yīng)用配置。部署計劃也可以作為資源組的一部分被指定。
圖4示出了根據(jù)實施例的用于示例性多租戶環(huán)境的域配置。
根據(jù)實施例,當系統(tǒng)啟動分區(qū)時,它根據(jù)所提供的配置創(chuàng)建虛擬目標(例如,虛擬主機)和到各自數(shù)據(jù)庫實例的連接池,包括每個分區(qū)一個。
典型地,每個資源組模板可以包括一個或更多相關(guān)的應(yīng)用以及那些應(yīng)用所依賴的資源。每個分區(qū)可以通過提供資源組模板中的可部署資源到與該分區(qū)關(guān)聯(lián)的特定值的綁定,來提供在它所引用的資源組模板中未指定的配置數(shù)據(jù);在一些情況下,包括超越由資源組模板指定的某些配置信息。這使得系統(tǒng)能夠使用每個分區(qū)已經(jīng)定義的特性值來為每個分區(qū)不同地激活由資源組模板表示的應(yīng)用。
在一些實例中,分區(qū)可以包含不引用資源組模板的、或者直接定義其自己的受分區(qū)限制的可部署資源的資源組。在分區(qū)內(nèi)定義的應(yīng)用和數(shù)據(jù)源通常只對該分區(qū)可用??梢圆渴鹳Y源,使得可以通過使用partition:<partitionName>/<resource JNDI name>或者domain:<resource JNDI name>來從跨分區(qū)訪問它們。
例如,MedRec應(yīng)用可以包括多個Java應(yīng)用、數(shù)據(jù)源、JMS服務(wù)器以及郵件會話。為了為多個租戶運行MedRec應(yīng)用,系統(tǒng)管理員可以定義單個MedRec資源組模板286,同時在模板中聲明那些可部署資源。
與域級別的可部署資源相比,在資源組模板中聲明的可部署資源可能在模板中未完全配置或者不能原樣激活,因為它們?nèi)鄙僖恍┡渲眯畔ⅰ?/p>
例如,MedRec資源組模板可以聲明由應(yīng)用使用的數(shù)據(jù)源,但是它可能未指定用于連接到數(shù)據(jù)庫的URL。與不同租戶關(guān)聯(lián)的分區(qū),例如分區(qū)BUC-A 290(Bayland Urgent Care,BUC)和分區(qū)VH-A 292(Valley Health,VH),可以通過各自包括引用(296、297)MedRec資源組模板的MedRec資源組293、294來引用一個或更多資源組模板。該引用于是可以被用來為每個租戶創(chuàng)建(302、306)虛擬目標/虛擬主機,包括與BUC-A分區(qū)關(guān)聯(lián)的、用于被Bayland Urgent Care租戶使用的虛擬主機baylandurgentcare.com 304;以及與VH-A分區(qū)關(guān)聯(lián)的、用于被Valley Health租戶使用的虛擬主機valleyhealth.com 308。
圖5進一步示出了根據(jù)實施例的示例性多租戶環(huán)境。如圖5中所示,并且繼續(xù)來自以上的示例(其中兩個分區(qū)引用MedRec資源組模板),根據(jù)實施例,小服務(wù)程序(servlet)引擎310可以被用來支持多個租戶環(huán)境,在此示例中是Bayland Urgent Care Physician租戶環(huán)境320和Valley Health Physician租戶環(huán)境330。
根據(jù)實施例,每個分區(qū)321、331可以定義不同的虛擬目標以在其上接受用于該租戶環(huán)境的進入流量,并且可以定義用于連接到分區(qū)及其資源324、334(在本示例中分別包括或者Bayland Urgent Care數(shù)據(jù)庫或者Valley Health數(shù)據(jù)庫)的不同的URL 322、332。數(shù)據(jù)庫實例可以使用兼容模式,因為同一應(yīng)用代碼將針對兩種數(shù)據(jù)庫執(zhí)行。當系統(tǒng)啟動分區(qū)時,它可以創(chuàng)建虛擬目標和到各自數(shù)據(jù)庫實例的連接池。
工作管理器
如以上所述,根據(jù)實施例,分區(qū)是在以多租戶模式運行應(yīng)用服務(wù)器時為租戶或多個租戶創(chuàng)建的應(yīng)用服務(wù)器(例如,WebLogic Server)域的片段。
根據(jù)實施例,調(diào)節(jié)分區(qū)間的線程使用以便是公允的,并且它們的相對優(yōu)先級可以被系統(tǒng)管理員配置。根據(jù)實施例,工作管理器可被用于在運行于同一WLS實例中的分區(qū)間提供公允性和優(yōu)先級排序。
根據(jù)實施例,工作管理器對由應(yīng)用服務(wù)器自調(diào)整線程池提供的線程資源的相對線程使用進行調(diào)節(jié),以在共享同一應(yīng)用服務(wù)器實例(例如,多租戶應(yīng)用服務(wù)器環(huán)境)的各種分區(qū)之間提供恰當?shù)姆?wù)質(zhì)量(QoS)和公允性。沒有它的情況下,來自一個分區(qū)和/或分區(qū)管理員的應(yīng)用可能潛在地耗盡用于其他分區(qū)的線程資源,進而妨礙它們恰當?shù)剡\作。
根據(jù)實施例,工作管理器可以將共享的線程資源分攤到各種分區(qū)所依照的公允性可以基于若干因素,諸如例如各種分區(qū)為服務(wù)支付的各種量、每個分區(qū)的重要性、以及每個分區(qū)對共享線程的需求。
分區(qū)工作管理器——每分區(qū)的相對線程資源使用
圖6示出了根據(jù)實施例的在多租戶應(yīng)用服務(wù)器環(huán)境中分區(qū)工作管理器的使用。
圖6中描繪的實施例顯示了應(yīng)用服務(wù)器環(huán)境600,應(yīng)用服務(wù)器環(huán)境600包括分區(qū)工作管理器610以及域620。圖6中的實施例附加地包括系統(tǒng)管理員630。分區(qū)工作管理器610包括分區(qū)A工作管理器615和分區(qū)B工作管理器616。域620包括分區(qū)A 640、分區(qū)B 650、虛擬目標A 660以及虛擬目標B 670。在分區(qū)A和分區(qū)B內(nèi)分別是分區(qū)A線程使用645和分區(qū)B線程使用655。此外在分區(qū)A和分區(qū)B內(nèi)分別定義了資源組646和資源組656。
根據(jù)實施例,在應(yīng)用服務(wù)器環(huán)境600內(nèi),系統(tǒng)管理員630配置分區(qū)工作管理器610以調(diào)節(jié)每個分區(qū)對線程池(諸如WLS自調(diào)整線程池)的訪問。系統(tǒng)管理員的工作管理器的配置調(diào)節(jié)線程資源的相對線程使用,以在共享同一應(yīng)用服務(wù)器實例的各種分區(qū)之間提供恰當?shù)腝oS和公允性。例如,當配置分區(qū)工作管理器610時,通常有系統(tǒng)管理員可以使用的若干配置(或者分別地使用或者互相組合地使用),包括但不限于分區(qū)工作請求優(yōu)先級排序(或者公允份額值)、分區(qū)最小線程約束、以及分區(qū)容量約束。
根據(jù)實施例,系統(tǒng)管理員630可以使用分區(qū)工作請求優(yōu)先級排序或者公允份額值來配置分區(qū)工作管理器610。系統(tǒng)管理員630經(jīng)由通信路徑635在分區(qū)工作管理器610內(nèi)指定用于在應(yīng)用服務(wù)器環(huán)境600內(nèi)配置的每個分區(qū)(例如分區(qū)A 640和分區(qū)B 650)的公允份額值。此公允份額值可以被包含在例如包含于分區(qū)工作管理器610內(nèi)的分區(qū)特定的工作管理器內(nèi)。公允份額值是該分區(qū)的線程使用對比于全部分區(qū)的線程使用的百分比。此外,由系統(tǒng)管理員630初始分配給分區(qū)的公允份額值可以被系統(tǒng)管理員630更新和/或編輯。
根據(jù)實施例,分配給分區(qū)的公允份額值是1與99之間的數(shù)。推薦域中運行的全部分區(qū)的這些值之和加起來為100。假如它們加起來不為100,應(yīng)用服務(wù)器環(huán)境600可以基于不同分區(qū)的相對值給不同分區(qū)分配線程使用時間和線程隊列位置。
例如,根據(jù)實施例,系統(tǒng)管理員630向分區(qū)A 640分配公允份額值20,并向分區(qū)B 650分配公允份額值30。這些公允份額值被分別記錄在分區(qū)工作管理器610內(nèi)的分區(qū)A工作管理器615和分區(qū)B工作管理器616中。在運行時,如果發(fā)生線程池中沒有足夠的線程資源來處置全部請求,并且有來自分區(qū)A和分區(qū)B的排隊等待處理的待處理工作請求,則工作管理器將分派線程使用時間的40%給來自于分區(qū)A640中的應(yīng)用的工作請求(和已排隊的請求),并且分派線程使用時間的60%給來自于分區(qū)B 650中的應(yīng)用的工作請求(和已排隊的請求)。線程使用(例如,分區(qū)A線程使用645和分區(qū)B線程使用655)的此分派是系統(tǒng)管理員在分區(qū)工作管理器610內(nèi)設(shè)置公允份額值的結(jié)果。
根據(jù)實施例,系統(tǒng)管理員630可以使用最小線程約束來配置分區(qū)工作管理器610。最小線程約束保證將被分派給每個分區(qū)或者分區(qū)內(nèi)應(yīng)用的、來自線程池的指定數(shù)量的線程,以避免死鎖。
根據(jù)實施例,系統(tǒng)管理員630可以可選地在應(yīng)用服務(wù)器環(huán)境600內(nèi)的每個分區(qū)的最小線程約束值上設(shè)置限制。如果系統(tǒng)管理員630配置這樣的限制,則這將在每個分區(qū)的最小線程約束值上施加上限。在分區(qū)中全部最小線程約束的配置值之和超出此配置值的情況下,可以記載警告消息,并且應(yīng)用服務(wù)器環(huán)境600可以針對這些約束自動地減少線程池將分派的線程的數(shù)量。
例如,根據(jù)實施例,系統(tǒng)管理員630給分區(qū)A 640配置最小線程約束為5個線程。在部署到分區(qū)A的應(yīng)用中存在2個被定義的最小線程約束;一個具有配置值3,而另一個具有配置值7。自調(diào)整線程池將只保證將給這2個最小線程約束分派5個線程而不是組合的配置值10。
在某些實施例中,當除應(yīng)用服務(wù)器環(huán)境中每個分區(qū)具有公允份額值集合之外,還由系統(tǒng)管理員630在分區(qū)工作管理器610內(nèi)配置有分區(qū)最小線程約束限制時,這將導致分區(qū)接收多于其公允份額的線程,因為分區(qū)最小線程約束可以壓倒公允份額值。
根據(jù)實施例,系統(tǒng)管理員630使用分區(qū)共享容量來配置分區(qū)工作管理器610。分區(qū)共享容量在來自分區(qū)的工作請求的數(shù)量上設(shè)有限制。此限制可以包括或者正在運行或者正在排隊并等待可用線程的工作請求。當超出所配置的限制時,應(yīng)用服務(wù)器環(huán)境600可以拒絕從受限制的分區(qū)提交的更多請求。該限制的值可以被表達為應(yīng)用服務(wù)器環(huán)境600的容量的百分比,諸如1%和100%之間。
例如,根據(jù)實施例,系統(tǒng)管理員可以設(shè)置分區(qū)A上的分區(qū)共享容量為50%。針對工作管理器配置,使用值65536配置應(yīng)用程序服務(wù)器環(huán)境的共享容量。因為分區(qū)A上的分區(qū)共享容量,所以如果工作請求的數(shù)量超出32738(它是總?cè)萘?5535的50%),則工作管理器將開始拒絕來自分區(qū)A的請求。
根據(jù)實施例,系統(tǒng)管理員630使用分區(qū)最大線程約束來配置分區(qū)工作管理器610。此約束可以限制在自調(diào)整線程池中同時工作于來自分區(qū)的請求上的線程的最大數(shù)量。這可以用于防止分區(qū)使用多于其公允份額的線程資源,尤其是在異常環(huán)境中,諸如當線程被阻塞在I/Q上等待來自未響應(yīng)的遠程服務(wù)器的響應(yīng)時。在這種情景中設(shè)置最大線程約束將有助于確保一些線程可用于處理來自系統(tǒng)中其他分區(qū)的請求。
根據(jù)實施例,除給分區(qū)分配可用線程的公允份額值之外,公允份額值還可以在全部可用線程當前都在使用中時,將來自分區(qū)的請求在要被運行的優(yōu)先級隊列中排序。例如,系統(tǒng)管理員經(jīng)由分區(qū)工作管理器為分區(qū)X分配公允份額值60、為分區(qū)Y分配公允份額值40。當分區(qū)在它們之間已經(jīng)使用了源池中全部可用線程時,則來自分區(qū)的后續(xù)請求被放置在隊列中。分配給分區(qū)X和分區(qū)Y的公允份額值可以確定在隊列中來自分區(qū)X的請求相對于來自分區(qū)Y的請求將被放置的位置。在所示例的情況下,來自分區(qū)X的請求將被放置在隊列中在來自分區(qū)Y的請求之前,因為分區(qū)X具有比分區(qū)Y高的公允份額值。
根據(jù)實施例,應(yīng)用服務(wù)器環(huán)境600可以包括多租戶應(yīng)用服務(wù)器(MT)環(huán)境。
分區(qū)級別的工作管理器
圖7示出了根據(jù)實施例的在多租戶應(yīng)用服務(wù)器環(huán)境中工作管理器的使用。
圖7中描繪的實施例顯示了應(yīng)用服務(wù)器環(huán)境700,應(yīng)用服務(wù)器環(huán)境700包括分區(qū)工作管理器790以及源域720。圖7中的實施例附加地包括分區(qū)A管理員730、分區(qū)B管理員735、以及系統(tǒng)管理員780。分區(qū)工作管理器790包括分區(qū)A工作管理器795和分區(qū)B工作管理器796。源域720包括分區(qū)A 740、分區(qū)B 750、虛擬目標A 760和虛擬目標B 770。分區(qū)A 740包括工作管理器A 745和分區(qū)A線程使用746。分區(qū)B 760包括工作管理器B 755和分區(qū)B線程使用756。
在實施例中,類似于系統(tǒng)管理員780是如何能夠配置分區(qū)工作管理器790以為分區(qū)A和分區(qū)B配置公允份額值的,分區(qū)管理員730和735可以就它們自己的分區(qū)配置分區(qū)級別的工作管理器,該分區(qū)級別的工作管理器管理它們各自分區(qū)內(nèi)的工作。當配置它們各自的分區(qū)工作管理器時,通常存在分區(qū)管理員可以使用的若干配置(或者單獨使用或者互相組合使用),包括但不限于工作請求優(yōu)先級排序(或者公允份額值)、最小線程約束、最大線程約束。
例如,在實施例中,分區(qū)管理員可以使用公允份額值來配置它們各自的分區(qū)工作管理器。分區(qū)A管理員可以在運行于分區(qū)A內(nèi)的應(yīng)用之間分配用于分區(qū)A 740的總線程使用的公允份額值。分區(qū)A管理員730將通過經(jīng)由通信路徑731配置工作管理器A 745來做到這一點,以給運行于分區(qū)A 740內(nèi)的各種應(yīng)用分配公允份額值(類似地,分區(qū)B管理員可以經(jīng)由通信路徑736配置工作管理器B)。然而,對分區(qū)A 740可用的、來自全局線程池的線程仍然是由分區(qū)工作管理器790設(shè)置的,并且對于對分區(qū)B 750可用的線程也是如此。分區(qū)工作管理器790是由系統(tǒng)管理員780經(jīng)由通信路徑785配置的,并且用于分區(qū)A和分區(qū)B的配置(如以上所述)被分別存儲在分區(qū)A工作管理器795和分區(qū)B工作管理器796中。
在實施例中,分區(qū)工作管理器充當為每個已部署的應(yīng)用創(chuàng)建的每個已配置的工作管理器的模板和實例。例如,分區(qū)工作管理器可以是默認工作管理器??梢詾槊總€已部署的應(yīng)用創(chuàng)建默認工作管理器的一個實例,并且除非指定另一種調(diào)度策略,該實例可被用于處置來自該應(yīng)用的工作請求。
在實施例中,分區(qū)管理員可以可選地為它們自己各自的分區(qū)覆寫分區(qū)工作管理器。該分區(qū)內(nèi)的每個應(yīng)用可以被賦予使用針對該工作管理器的分區(qū)特定的配置而創(chuàng)建的分區(qū)工作管理器的實例。對于在分區(qū)級別中未被超越的分區(qū)工作管理器,當為分區(qū)中每個已部署的應(yīng)用創(chuàng)建這種工作管理器的實例時,將使用config.xml級別中的模板配置,該配置受控于由系統(tǒng)管理員設(shè)定的任何分區(qū)特定的限制,如以上就分區(qū)工作管理器所闡述的那樣。
例如,在實施例中,默認工作管理器被配置為不具有最小線程約束或者最大線程約束,并且附加地給分區(qū)分配公允份額請求類值50。分區(qū)管理員可以使用最小線程約束1來超越它們各自分區(qū)中的默認工作管理器。作為結(jié)果,分區(qū)內(nèi)的每個已部署的應(yīng)用于是將具有使用配置值為1的最小線程約束創(chuàng)建的默認工作管理器。
根據(jù)實施例,盡管分區(qū)管理員可以重寫分配給它們的具體分區(qū)的公允份額值,但是這不改變在分區(qū)工作管理器處分配給分區(qū)的公允份額。例如,在分區(qū)工作管理器的配置中,分區(qū)X和分區(qū)Y各自被系統(tǒng)管理員分配公允份額值50。然而,分區(qū)X的分區(qū)管理員在它們的工作管理器中設(shè)置它們的公允份額值為90。盡管分區(qū)管理員嘗試索取多于它們的公允份額的線程,但是分區(qū)工作管理器可以確保分區(qū)X只收到池中線程的一半。
在實施例中,在系統(tǒng)級別(例如,在config.xml中的自調(diào)整區(qū)段)定義的約束是共享的。例如,分區(qū)工作管理器被創(chuàng)建,并且定義最小線程約束,稱為min-ThreadConstraint-1。每個分區(qū)將得到min-ThreadConstraint-1的副本。如以上討論的,如有需要分區(qū)管理員可以超越min-ThreadConstraint-1。
根據(jù)實施例,應(yīng)用服務(wù)器環(huán)境700可以包括多租戶應(yīng)用服務(wù)器(MT)環(huán)境。
圖8是用于提供用在應(yīng)用服務(wù)器環(huán)境中的工作管理器的示例性方法800的流程圖。方法800可以在步驟801處開始,在包括執(zhí)行于其上的應(yīng)用服務(wù)器環(huán)境的一個或多個計算機處,提供可以在應(yīng)用服務(wù)器環(huán)境內(nèi)使用的多個可部署資源、定義域內(nèi)可部署資源的分組的一個或多個資源組模板、以及一個或多個分區(qū),其中每個分區(qū)提供域的監(jiān)管性和運行時細分。方法800可以在步驟802處繼續(xù),提供分區(qū)工作管理器,分區(qū)工作管理器可被系統(tǒng)管理員配置。示例性方法800可以在步驟803處結(jié)束,配置分區(qū)工作管理器以給應(yīng)用服務(wù)器環(huán)境內(nèi)的一個或多個分區(qū)中的每一個分區(qū)分配公允份額值,每個公允份額值被配置為被系統(tǒng)用于控制與一個或多個分區(qū)關(guān)聯(lián)的線程使用。
根據(jù)實施例,且未在圖8中示出,方法可以繼續(xù)配置分區(qū)工作管理器以除了公允份額值以外提供以下中的一個或多個:分區(qū)容量約束、分區(qū)最小線程約束限制、以及分區(qū)最大線程約束。
圖9是用于提供用在應(yīng)用服務(wù)器環(huán)境中的工作管理器的示例性方法900的流程圖。方法900可以在步驟901處開始,在包括執(zhí)行于其上的應(yīng)用服務(wù)器環(huán)境的一個或多個計算機處,提供可以在應(yīng)用服務(wù)器環(huán)境內(nèi)使用的多個可部署資源、定義域內(nèi)可部署資源的分組的一個或多個資源組模板、以及一個或多個分區(qū),其中每個分區(qū)提供域的監(jiān)管性和運行時細分。方法900可以在步驟902處繼續(xù),提供分區(qū)工作管理器,分區(qū)工作管理器可被系統(tǒng)管理員配置。示例性方法900可以在步驟903處繼續(xù),配置分區(qū)工作管理器以給應(yīng)用服務(wù)器環(huán)境內(nèi)的一個或多個分區(qū)中的每一個分區(qū)分配公允份額值,每個公允份額值被配置為被系統(tǒng)用于控制與一個或多個分區(qū)關(guān)聯(lián)的線程使用。在步驟904處,方法900提供一個或多個分區(qū)級別的工作管理器,一個或多個分區(qū)中的每個分區(qū)包括一個或多個分區(qū)級別的工作管理器中的一個。最后,方法900以配置一個或多個分區(qū)級別的工作管理器中的每一個以給在各自分區(qū)內(nèi)執(zhí)行的一個或多個應(yīng)用分配分區(qū)公允份額值而結(jié)束,每個分區(qū)公允份額值被配置為被系統(tǒng)用于控制與在各自分區(qū)內(nèi)執(zhí)行的一個或多個應(yīng)用關(guān)聯(lián)的線程使用。
應(yīng)用工作管理器
在實施例中,工作管理器及其產(chǎn)物(artifact)(諸如約束)可以從應(yīng)用內(nèi)定義。當這樣的應(yīng)用定義工作管理器和/或其約束時,這樣的工作管理器可以被部署于分區(qū)內(nèi)。然而,所定義的工作管理器和/或其約束可以由系統(tǒng)管理員經(jīng)由分區(qū)工作管理器或者由分區(qū)管理員經(jīng)由已定義的分區(qū)級別的工作管理器基于已經(jīng)施加的任何已配置的限制或工作管理器(例如,公允份額值)而調(diào)整。
分區(qū)ID傳播
在實施例中,從其調(diào)度和/或請求工作請求的分區(qū)ID可以被傳播到其中正運行工作請求的自調(diào)整線程池。分區(qū)ID可以從部件調(diào)用上下文(component invocation context,CIC)取得。這允許工作請求在請求所來源的分區(qū)的上下文之下運行。這可以允許對錯誤記載及診斷的支持和/或?qū)Π踩缘闹С帧?/p>
本發(fā)明可以使用一個或更多傳統(tǒng)通用數(shù)字計算機或?qū)S脭?shù)字計算機、計算設(shè)備、機器、或者微處理器(包括一個或更多處理器、存儲器和/或根據(jù)本公開的教導編程的計算機可讀存儲介質(zhì))方便地實現(xiàn)。如軟件領(lǐng)域技術(shù)人員清晰的,熟練的編程者基于本公開的教導可以容易地準備適當?shù)能浖幋a。
在一些實施例中,本發(fā)明包括計算機程序產(chǎn)品,該產(chǎn)品是具有存儲于其上/中的指令的非暫時性存儲介質(zhì)或者計算機可讀介質(zhì),該指令可被用來編程計算機以執(zhí)行本發(fā)明的任何處理。存儲介質(zhì)可以包括但不限于任意類型的盤,包括軟盤、光盤、DVD、CD-ROM、微驅(qū)動器以及磁光盤、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、閃存存儲器設(shè)備、磁卡或光學卡、納米系統(tǒng)(包括分子記憶IC)或者適于存儲指令和/或數(shù)據(jù)的任意類型的介質(zhì)或設(shè)備。
為了示意和描述的目的,已經(jīng)提供了本發(fā)明的以上描述。它不旨在窮舉或者限制本發(fā)明為所公開的確切形式。對本領(lǐng)域技術(shù)人員而言,許多修改和變形是顯而易見的。實施例是為了最好地解釋本發(fā)明的原理及其實際應(yīng)用而選擇和描述的,從而使得其他本領(lǐng)域技術(shù)人員能夠理解各種實施例的本發(fā)明以及理解帶有適于所預(yù)期的具體用途的各種修改的本發(fā)明。本發(fā)明的范圍旨在由以下權(quán)利要求及其等價物定義。