用于支持集群中的工作共享復(fù)用的系統(tǒng)和方法
【專利說明】用于支持集群中的工作共享復(fù)用的系統(tǒng)和方法
[0001]版權(quán)聲明
[0002]本專利文獻(xiàn)中的一部分公開內(nèi)容包含受版權(quán)保護(hù)的素材。版權(quán)所有人不反對任何人影印再現(xiàn)專利文獻(xiàn)或?qū)@_,因?yàn)閷@墨I(xiàn)或?qū)@_出現(xiàn)在美國專利商標(biāo)局的專利文件或檔案中,不過保留其它方面的所有版權(quán)。
技術(shù)領(lǐng)域
[0003]本發(fā)明一般涉及計(jì)算機(jī)系統(tǒng)和諸如中間件之類的軟件,尤其涉及用于集群中的服務(wù)器之間的復(fù)用的系統(tǒng)和方法。
【背景技術(shù)】
[0004]在任何大型機(jī)構(gòu)內(nèi),經(jīng)過多年之后,所述機(jī)構(gòu)常常發(fā)現(xiàn)自己具有散亂的IT基礎(chǔ)結(jié)構(gòu),所述IT基礎(chǔ)結(jié)構(gòu)包含各種不同的計(jì)算機(jī)硬件、操作系統(tǒng)和應(yīng)用軟件。盡管這種基礎(chǔ)結(jié)構(gòu)的各個(gè)單獨(dú)組件本身設(shè)計(jì)得很好并且維護(hù)得很好,不過當(dāng)試圖互連這樣的組件,或者共享公共資源時(shí),這常常是一項(xiàng)困難的管理任務(wù)。近年來,機(jī)構(gòu)已將其注意力轉(zhuǎn)向可提供共享基礎(chǔ)結(jié)構(gòu)的基礎(chǔ)的諸如虛擬化和集中存儲(chǔ)之類的技術(shù),甚至最近轉(zhuǎn)向云計(jì)算。然而,幾乎不存在特別適合于在這種環(huán)境中使用的一體化平臺(tái)。這些是本發(fā)明的實(shí)施例意圖致力于的大致領(lǐng)域。
【發(fā)明內(nèi)容】
[0005]提供用于提供集群中的服務(wù)器之間的高效、低延時(shí)復(fù)用的系統(tǒng)和方法。一種這樣的系統(tǒng)可包括一個(gè)或多個(gè)高性能計(jì)算系統(tǒng)的集群,每個(gè)計(jì)算系統(tǒng)包括一個(gè)或多個(gè)處理器和高性能存儲(chǔ)器。所述集群通過無限帶寬網(wǎng)絡(luò)進(jìn)行通信。所述系統(tǒng)還可包括在所述集群上運(yùn)行的中間件環(huán)境,所述中間件環(huán)境包括一個(gè)或多個(gè)應(yīng)用服務(wù)器實(shí)例。所述系統(tǒng)可包括一個(gè)或多個(gè)選擇器,其中每個(gè)所述選擇器包含讀取就緒文件描述符的隊(duì)列。此外,所述系統(tǒng)可包括共享隊(duì)列,其中每個(gè)所述選擇器中的讀取就緒文件描述符可被注入所述共享隊(duì)列中。另夕卜,多個(gè)復(fù)用器線程運(yùn)行,以從所述共享隊(duì)列接受工作。
[0006]當(dāng)結(jié)合附圖閱讀時(shí),根據(jù)各個(gè)實(shí)施例的以下詳細(xì)說明,本發(fā)明的其它目的和優(yōu)點(diǎn)對本領(lǐng)域的技術(shù)人員來說將變得明顯。
【附圖說明】
[0007]圖1表示按照本發(fā)明的實(shí)施例的中間件機(jī)器環(huán)境100的例示。
[0008]圖2表示按照本發(fā)明的實(shí)施例的中間件機(jī)器平臺(tái)或環(huán)境的另一個(gè)例示。
[0009]圖3表示按照本發(fā)明的各個(gè)實(shí)施例的支持簡單復(fù)用的例示。
[0010]圖4表示按照本發(fā)明的各個(gè)實(shí)施例的支持并行復(fù)用的例示。
[0011]圖5表示按照本發(fā)明的各個(gè)實(shí)施例的支持工作共享復(fù)用的例示。
[0012]圖6表示按照本發(fā)明的各個(gè)實(shí)施例的支持工作共享復(fù)用的示例性偽碼的例示。
[0013]圖7表示按照本發(fā)明的各個(gè)實(shí)施例的支持工作共享復(fù)用的其它示例性偽碼的例不O
[0014]圖8圖解說明按照本發(fā)明的實(shí)施例的支持工作共享復(fù)用的示例性流程圖。
【具體實(shí)施方式】
[0015]下面說明能夠支持集群中的工作共享復(fù)用的系統(tǒng)和方法。
[0016]圖1表示按照本發(fā)明的實(shí)施例的中間件機(jī)器環(huán)境100的例示。如圖1所示,每個(gè)中間件機(jī)器系統(tǒng)102包括幾個(gè)中間件機(jī)器機(jī)架組件104,每個(gè)機(jī)架組件104包括高性能中間件機(jī)器硬件節(jié)點(diǎn)106 (例如,64位處理器,高性能大容量存儲(chǔ)器,和冗余無限帶寬和以太網(wǎng)網(wǎng)絡(luò)體系),和中間件機(jī)器軟件環(huán)境108的組合。其結(jié)果是在數(shù)分鐘內(nèi)而非數(shù)天或數(shù)月內(nèi)就能夠被提供并且可應(yīng)請求進(jìn)行縮放的完整的應(yīng)用服務(wù)器環(huán)境。按照實(shí)施例,每個(gè)中間件機(jī)器系統(tǒng)可被部署成全機(jī)架、半機(jī)架或四分之一機(jī)架或者機(jī)架組件的其它結(jié)構(gòu),同樣利用無限帶寬,可將幾個(gè)中間件機(jī)器系統(tǒng)耦接在一起,以創(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(例如,WebLogic,包括小服務(wù)程序132、EJB 134和Gridlink 136容器);而另一個(gè)應(yīng)用服務(wù)器實(shí)例110可包含虛擬機(jī)118、操作系統(tǒng)122、虛擬化層126和數(shù)據(jù)網(wǎng)格層140(例如,Coherence,包括活動(dòng)高速緩存142)。通過利用中間件機(jī)器集成組件150,比如ExaLogic集成包,每個(gè)實(shí)例可以相互通信,以及與其中間件機(jī)器硬件節(jié)點(diǎn)和其它節(jié)點(diǎn)通信,中間件機(jī)器集成組件150本身提供幾種優(yōu)化特征,比如對無限帶寬和其他特征的支持,如下進(jìn)一步詳細(xì)說明。
[0017]圖2表示按照本發(fā)明的實(shí)施例的中間件機(jī)器平臺(tái)或環(huán)境的另一個(gè)例示。如圖2中所示,每個(gè)應(yīng)用服務(wù)器實(shí)例可充當(dāng)中間件機(jī)器環(huán)境內(nèi)的發(fā)送器和/或接收器160。每個(gè)應(yīng)用服務(wù)器實(shí)例還與允許應(yīng)用服務(wù)器通過無限帶寬網(wǎng)絡(luò)164相互通信的復(fù)用器162、163關(guān)聯(lián)。在圖2中所示的例子中,應(yīng)用服務(wù)器實(shí)例可包括內(nèi)核空間165、用戶空間167和應(yīng)用服務(wù)器(例如,WebLogic空間)166,所述應(yīng)用服務(wù)器166又可與套接字直接協(xié)議168、JVM(例如,JRockit/Hotspot層)170、WLS核心172、小服務(wù)程序容器174和JSP編譯器176關(guān)聯(lián)。按照其它例子,可以包括中間件類型的軟件的其它組合。按照各個(gè)實(shí)施例,機(jī)器集成組件可以提供諸如零緩存拷貝、分散/集中10、T3連接、惰性反序列化和GridLink數(shù)據(jù)源之類的特征,以便為共享基礎(chǔ)結(jié)構(gòu)提供基礎(chǔ),以及改善共享基礎(chǔ)結(jié)構(gòu)內(nèi)的性能。
[0018]簡單復(fù)用
[0019]圖3表示支持中間件機(jī)器環(huán)境中的簡單復(fù)用的例示。如圖3中所示,由中間件機(jī)器環(huán)境300中的操作系統(tǒng)(OS)保持的文件描述符高速緩存或者說FD高速緩存301可包含一個(gè)或多個(gè)讀取就緒文件描述符,比如套接字(用X標(biāo)記)。這里,在OS中,掃描大型高速緩存和/或維持對大型高速緩存的并發(fā)存取效率低下。
[0020]輪詢設(shè)備,比如可通過選擇器接口而暴露出來的選擇器302,可包括諸如套接字(列表中表示為圓點(diǎn))的讀取就緒文件描述符的隊(duì)列。一個(gè)或多個(gè)復(fù)用器線程305a-305c可利用選擇器302來輪詢FD高速緩存301。線程305a-305c可能例如在發(fā)出Selector.select O函數(shù)調(diào)用的時(shí)候被阻塞在選擇器302處,等待對于FD高速緩存301的掃描結(jié)束。隨后,線程305a-305c可將讀取就緒文件描述符拷貝到選擇器列表302中。
[0021]每個(gè)復(fù)用器線程305a_305c可保持線程本地列表303a_303c。線程本地列表303a-303c包括可被線程305a-305c處理的讀取就緒套接字(列表中表示為圓點(diǎn))的列表。由于列表303a-303c是本地線程,因此即使當(dāng)其它線程空閑時(shí),其它線程也不能幫助處理該列表。
[0022]如圖3中所示,線程本地列表303a_303c具有數(shù)目不同的圓點(diǎn),這表示不同量的工作被移交給各個(gè)復(fù)用器線程。例如,復(fù)用器線程305b可能需要處理較長的讀取就緒套接字的列表,而復(fù)用器線程305c卻空閑。
[0023]請求管理器304可用于處理來自中間件機(jī)器環(huán)境300中的不同服務(wù)器的一個(gè)或多個(gè)請求。請求管理器304是具有多個(gè)隊(duì)列的組件,復(fù)用器線程305a-305c準(zhǔn)備的請求可被加入所述隊(duì)列中。這些隊(duì)列可以是先入先出(FIFO)隊(duì)列,或者優(yōu)先隊(duì)列。另外,可以對請求管理器304中的各個(gè)隊(duì)列實(shí)施對于線程計(jì)數(shù)的限制。
[0024]如圖3中所示,對于多個(gè)復(fù)用器線程305a_305c,僅僅提供了一個(gè)選擇器302。例如,當(dāng)復(fù)用器線程305b獲得讀取就緒套接字時(shí),它進(jìn)行的工作都在它自己的線程本地列表303b中。同時(shí),其它復(fù)用器線程305a和305b可等待進(jìn)入Selector, select O。因此,復(fù)用器的性能受損,因?yàn)樽x取就緒套接字是按照單線程模型來處理的。
[0025]此外,一旦復(fù)用器線程305b從Selector, select O返回,另一個(gè)線程,例如305c可再次進(jìn)入Selector, select O。在這種情況下,由于選擇器302剛被騰空,因此它可能阻塞復(fù)用器線程305c。因此,存在多數(shù)復(fù)用器線程在等待,而一個(gè)復(fù)用器線程繁忙的情形。
[0026]因此,在該例子中,如圖3中所示,不同的復(fù)用器線程305a_305c在訪問共享選擇器302和FD高速緩存301方面存在競爭。此外,不共享讀取就緒套接字會(huì)導(dǎo)致其中空閑線程可用卻不能開始處理讀取就緒套接字的線程饑餓。
[0027]在2011 年 5 月 17 日提交的名稱為“SYSTEM AND METHOD FOR PARALLELMUXING BETWEEN SERVERS IN A CLUSTER” 的美國專利申請 N0.13/109,871 (代理人卷號N0.0RACL-05121US0)中,公開了關(guān)于簡