用于在中間件機(jī)器環(huán)境中支持協(xié)同并發(fā)性的系統(tǒng)和方法
【專利說(shuō)明】用于在中間件機(jī)器環(huán)境中支持協(xié)同并發(fā)性的系統(tǒng)和方法
[0001]版權(quán)聲明
[0002]本專利文檔公開(kāi)內(nèi)容的一部分包含受版權(quán)保護(hù)的素材。版權(quán)擁有者不反對(duì)任何人對(duì)專利文檔或?qū)@_(kāi)內(nèi)容按照其在專利商標(biāo)局的專利文件或記錄中出現(xiàn)的那樣進(jìn)行影印再現(xiàn),但是除此之外在任何情況下都保留所有版權(quán)。
技術(shù)領(lǐng)域
[0003]本發(fā)明一般而言涉及諸如中間件的計(jì)算機(jī)系統(tǒng)和軟件,并且具體而言,涉及用于支持中間件機(jī)器環(huán)境中的隊(duì)列的系統(tǒng)和方法。
【背景技術(shù)】
[0004]在任何大型機(jī)構(gòu)中,經(jīng)過(guò)多年之后,該機(jī)構(gòu)通常發(fā)現(xiàn)自己具有包括各種不同的計(jì)算機(jī)硬件、操作系統(tǒng)和應(yīng)用軟件的雜亂的IT基礎(chǔ)設(shè)施。盡管這種基礎(chǔ)設(shè)施中每個(gè)單獨(dú)的組件可能自身是精心設(shè)計(jì)并良好維護(hù)的,但是當(dāng)試圖互連這些組件或共享公共資源時(shí),其通常是艱難的管理任務(wù)。近年來(lái),機(jī)構(gòu)已經(jīng)將其注意力轉(zhuǎn)向能夠提供共享的基礎(chǔ)設(shè)施的基礎(chǔ)的諸如虛擬化和集中式存儲(chǔ)的技術(shù),并且甚至最近轉(zhuǎn)向云計(jì)算。但是,幾乎不存在特別適合于在這種環(huán)境中使用的一體化平臺(tái)。這些是本發(fā)明的實(shí)施例想要解決的一般領(lǐng)域。
【發(fā)明內(nèi)容】
[0005]提供了用于支持優(yōu)先級(jí)隊(duì)列中的協(xié)同并發(fā)性的系統(tǒng)和方法。其中包括日歷環(huán)和快道的優(yōu)先級(jí)隊(duì)列能夠檢測(cè)競(jìng)爭(zhēng)申明優(yōu)先級(jí)隊(duì)列中的一個(gè)或多個(gè)請(qǐng)求的一個(gè)或多個(gè)線程。然后,犧牲者線程能夠?qū)⒄?qǐng)求放置在優(yōu)先級(jí)隊(duì)列中的快道中,并且釋放競(jìng)爭(zhēng)線程,其中競(jìng)爭(zhēng)線程繼續(xù)消費(fèi)快道中的請(qǐng)求。
[0006]根據(jù)對(duì)各種實(shí)施例的以下詳細(xì)描述,當(dāng)結(jié)合附圖閱讀時(shí),對(duì)本領(lǐng)域技術(shù)人員而言本發(fā)明的其它目的和優(yōu)點(diǎn)將變得明顯。
【附圖說(shuō)明】
[0007]圖1根據(jù)本發(fā)明的實(shí)施例示出了中間件機(jī)器環(huán)境100的說(shuō)明。
[0008]圖2根據(jù)本發(fā)明的實(shí)施例示出了中間件機(jī)器平臺(tái)或環(huán)境的另一個(gè)圖示。
[0009]圖3根據(jù)本發(fā)明的各種實(shí)施例示出了利用優(yōu)先級(jí)隊(duì)列處理中間件機(jī)器環(huán)境中的請(qǐng)求的圖示。
[0010]圖4示出了在中間件機(jī)器環(huán)境中支持非阻塞隊(duì)列的圖示。
[0011]圖5根據(jù)本發(fā)明的各種實(shí)施例示出了支持并發(fā)優(yōu)先級(jí)隊(duì)列的圖示。
[0012]圖6根據(jù)本發(fā)明的各種實(shí)施例示出了將請(qǐng)求添加到并發(fā)優(yōu)先級(jí)隊(duì)列中的圖示。
[0013]圖7根據(jù)本發(fā)明的各種實(shí)施例示出了從并發(fā)優(yōu)先級(jí)隊(duì)列中申明請(qǐng)求的圖示。
[0014]圖8根據(jù)本發(fā)明的各種實(shí)施例示出了支持優(yōu)先級(jí)隊(duì)列中的協(xié)同并發(fā)性的圖示。
[0015]圖9根據(jù)本發(fā)明的實(shí)施例圖示了用于從優(yōu)先級(jí)隊(duì)列中申明請(qǐng)求的示例性流程圖。
[0016]圖10根據(jù)本發(fā)明的實(shí)施例圖示了用于支持優(yōu)先級(jí)隊(duì)列中的協(xié)同并發(fā)性的示例性流程圖。
【具體實(shí)施方式】
[0017]本文描述的是能夠支持中間件機(jī)器環(huán)境中的協(xié)同并發(fā)性的系統(tǒng)和方法。
[0018]圖1根據(jù)本發(fā)明的實(shí)施例示出了中間件機(jī)器環(huán)境100的圖示。如在圖1中示出的,每個(gè)中間件機(jī)器系統(tǒng)102包括若干個(gè)中間件機(jī)器機(jī)架組件104,其中每個(gè)組件包括高性能中間件機(jī)器硬件節(jié)點(diǎn)106(例如,64-位處理器、高性能大存儲(chǔ)器以及冗余InfiniBand和以太網(wǎng)聯(lián)網(wǎng))和中間件機(jī)器軟件環(huán)境108的組合。結(jié)果是能夠按分鐘而不是按天或月提供并且能夠按需縮放的完整的應(yīng)用服務(wù)器環(huán)境。根據(jù)實(shí)施例,每個(gè)中間件機(jī)器系統(tǒng)能夠被部署為全部、一半、四分之一的機(jī)架或機(jī)架組件的其它配置,并且若干個(gè)中間件機(jī)器系統(tǒng)能夠再次利用InfiniBand耦合到一起,以創(chuàng)建更大的環(huán)境。每個(gè)中間件機(jī)器軟件環(huán)境能夠具有若干個(gè)應(yīng)用服務(wù)器或其它軟件實(shí)例。例如,如在圖1中示出的,應(yīng)用服務(wù)器實(shí)例109可以包括虛擬機(jī)116、操作系統(tǒng)120、虛擬化層124和應(yīng)用服務(wù)器層128 (例如包括小服務(wù)程序132、EJB134和Gridlink 136容器的WebLogic)。另一個(gè)應(yīng)用服務(wù)器實(shí)例110可以包括虛擬機(jī)118、操作系統(tǒng)122、虛擬化層126和數(shù)據(jù)網(wǎng)格層140 (例如包括活動(dòng)高速緩存142的Coherence)。每個(gè)實(shí)例都能夠利用中間件機(jī)器集成組件150彼此間以及與其中間件機(jī)器硬件節(jié)點(diǎn)和其它節(jié)點(diǎn)兩者進(jìn)行通信,其中中間件機(jī)器集成組件150諸如ExaLogic集成包,該中間件機(jī)器集成組件150自身提供了若干種優(yōu)化特征,諸如支持InfiniBand以及其它特征,如以下進(jìn)一步詳細(xì)描述的。
[0019]圖2根據(jù)本發(fā)明的實(shí)施例示出了中間件機(jī)器平臺(tái)或環(huán)境的另一個(gè)圖示。如在圖2中示出的,每個(gè)應(yīng)用服務(wù)器實(shí)例可以在中間件機(jī)器環(huán)境中充當(dāng)發(fā)送者160和/或接收者161。每個(gè)應(yīng)用服務(wù)器實(shí)例還與多路復(fù)用器162、163相關(guān)聯(lián),其中多路復(fù)用器允許應(yīng)用服務(wù)器經(jīng)InfiniBand網(wǎng)絡(luò)164彼此通信。在圖2示出的例子中,應(yīng)用服務(wù)器實(shí)例能夠包括內(nèi)核空間165、用戶空間167以及應(yīng)用服務(wù)器(例如,WebLogic空間)166,其又能夠與套接字直接協(xié)議168、JVM(例如JRockit/Hotspot層)170、WLS內(nèi)核172、小服務(wù)程序容器174和JSP編譯器176相關(guān)聯(lián)。根據(jù)其它的例子,能夠包括中間件類型軟件的其它組合。根據(jù)各種實(shí)施例,機(jī)器集成組件能夠提供諸如零緩沖區(qū)拷貝(Zero Buffer Copies)、分散/收集I/O (Scatter/Gather 1/0)、T3 連接、惰性反序列化(Lazy Deserializat1n)和 GridLink 數(shù)據(jù)源的特征180,以便為共享的基礎(chǔ)設(shè)施提供基礎(chǔ),并提高其中的性能。
[0020]優(yōu)先級(jí)隊(duì)列
[0021]根據(jù)本發(fā)明的各種實(shí)施例,并發(fā)系統(tǒng)能夠使用優(yōu)先級(jí)隊(duì)列來(lái)對(duì)傳入的請(qǐng)求劃分優(yōu)先級(jí),以便提供具有適當(dāng)服務(wù)水平協(xié)議(SLA)的服務(wù)。
[0022]圖3根據(jù)本發(fā)明的各種實(shí)施例示出了利用優(yōu)先級(jí)隊(duì)列處理中間件機(jī)器環(huán)境中的請(qǐng)求的圖示。如在圖3中示出的,一個(gè)或多個(gè)線程,例如反序列化線程A-B 311-312,能夠反序列化包含一個(gè)或多個(gè)請(qǐng)求320的傳入網(wǎng)絡(luò)流量310。反序列化線程A-B 311-312能夠例如利用add()方法將請(qǐng)求320放置在優(yōu)先級(jí)隊(duì)列301中。然后,多個(gè)工作者線程,例如工作者線程A-C 321-323,能夠并發(fā)地訪問(wèn)優(yōu)先級(jí)隊(duì)列301并且能夠例如利用delete_min()方法申明請(qǐng)求320。
[0023]優(yōu)先級(jí)隊(duì)列301能夠被設(shè)計(jì)為滿足苛刻的并發(fā)性標(biāo)準(zhǔn),使得競(jìng)爭(zhēng)者之間的交互不會(huì)引起系統(tǒng)吞吐量整體上的退化。此外,優(yōu)先級(jí)隊(duì)列301可以實(shí)現(xiàn)為具有固定的存儲(chǔ)器占用空間(footprint),使得JVM能夠更好地在原語(yǔ)的固定大小的數(shù)組上優(yōu)化其操作,并且能夠?qū)崿F(xiàn)相當(dāng)高的高速緩存效率。
[0024]根據(jù)本發(fā)明的各種實(shí)施例,優(yōu)先級(jí)隊(duì)列301能夠基于日歷隊(duì)列實(shí)現(xiàn),例如在WebLogic應(yīng)用服務(wù)器中提供的日歷隊(duì)列。日歷隊(duì)列能夠包括具有多個(gè)桶的日歷,其中每個(gè)桶可以存儲(chǔ)落在特定時(shí)間片內(nèi)的事件。例如,能夠通過(guò)將目標(biāo)服務(wù)時(shí)間與當(dāng)前時(shí)間進(jìn)行比較來(lái)排序和布置多個(gè)桶。如果時(shí)間中的差異在第一個(gè)字節(jié),則請(qǐng)求可以被存儲(chǔ)在第一個(gè)256個(gè)桶的桶中。能夠利用執(zhí)行該請(qǐng)求的目標(biāo)時(shí)間的實(shí)際值選擇具體的桶。此外,如果時(shí)間中的差異在第二個(gè)字節(jié),則請(qǐng)求可以存儲(chǔ)在第二個(gè)256個(gè)桶的桶中。
[0025]當(dāng)消費(fèi)者,例如通過(guò)工作者線程A-C 321-323的其中之一,試圖去除被配置為要最早被執(zhí)行的下一個(gè)請(qǐng)求時(shí),系統(tǒng)能夠?yàn)榉强盏牡谝粋€(gè)桶掃描日歷。如果這個(gè)桶不是第一個(gè)256個(gè)桶之一,則日歷隊(duì)列能夠使用循環(huán)和提升方法將請(qǐng)求移動(dòng)到朝第一個(gè)256個(gè)桶的方向的“下一級(jí)”的桶中。最終,一些請(qǐng)求能夠被提升到第一個(gè)256個(gè)桶中的一個(gè)或多個(gè)桶中,并且消費(fèi)者能夠申明請(qǐng)求并相應(yīng)地繼續(xù)進(jìn)行。
[0026]上面的提升過(guò)程會(huì)涉及對(duì)數(shù)成本,這可能對(duì)系統(tǒng)的整體性能產(chǎn)生影響。此外,可以存在日歷隊(duì)列的其它設(shè)計(jì),其性能可以限定于在“O (I) add,O(1gN) delete_min”和“O(1gN) add,0(1) delete_min” 之間的選擇。
[0027]圖4示出了在中間件機(jī)器環(huán)境中支持非阻塞隊(duì)列的圖示。如在圖4中示出的,多個(gè)消費(fèi)者,例如消費(fèi)者A-B 411-412,能夠并發(fā)地訪問(wèn)中間件機(jī)器環(huán)境400中的優(yōu)先級(jí)隊(duì)列401。優(yōu)先級(jí)隊(duì)列401能夠被實(shí)現(xiàn)為非阻塞隊(duì)列,并且能夠經(jīng)請(qǐng)求管理器402進(jìn)行訪問(wèn)。
[0028]管理線程池403的請(qǐng)求管理器402能夠具有用于將不同線程與不同請(qǐng)求相關(guān)聯(lián)