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