專利名稱:用于改進的高可用性組件實現(xiàn)的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于高可用性處理的系統(tǒng),該系統(tǒng)包括協(xié)議組件、具有至
少兩個節(jié)點的群集和用于維持傳輸連接(例如TCP連接)上的與群集中的 節(jié)點的協(xié)議會話的服務(wù)器,所述群集用于運行協(xié)議組件。本發(fā)明還涉及用 于通過傳輸連接上的協(xié)議會話而進行高可用性處理的方法。
背景技術(shù):
由于需要較高可靠性和較少停止時間的應(yīng)用的不斷增長,對于容錯和 高可用性處理系統(tǒng)的關(guān)注也不斷增加。 一種已知的解決方案是互連處理器 群集組的網(wǎng)絡(luò)。群集是基于硬件冗余的原理并且通常包括為增加可用性而 用作單個系統(tǒng)的多個節(jié)點。
高可用性群集的最常見的大小是兩個節(jié)點,例如主節(jié)點和備用節(jié)點。 目前,當(dāng)銷售商聲稱組件實現(xiàn)高度可用時,他們是指該組件運行在群集環(huán) 境中并且該組件的一個實例維持與服務(wù)器的協(xié)議會話。主組件通常由備用 組件支持,只要主組件啟動并運行,備用組件就停止工作,但是當(dāng)主組件 出故障時,備用組件就變?yōu)榭捎?。換句話說,當(dāng)前的"高可用性"結(jié)構(gòu)包 括組件的幾個實例(主組件和一個或多個備用組件)但是在主組件和服務(wù) 器之間僅有一個協(xié)議會話。如果主組件出故障,則需要在服務(wù)器與備用組 件之間開始新的協(xié)議會話。因此,服務(wù)器將察覺該服務(wù)在一段時間內(nèi)的不 可用性。實際上,組件上的處理負(fù)擔(dān)及它出故障的可能性并沒有減少。當(dāng) 然,由備用組件協(xié)助該組件并沒有減少組件上的處理負(fù)擔(dān)。具有或不具有 備用組件不會影響組件變?yōu)椴豢捎玫目赡苄?。此外,備用組件上的處理負(fù) 擔(dān)通常接近于主組件上的處理負(fù)擔(dān),以使得方案的總處理負(fù)擔(dān)幾乎是單個組件的處理負(fù)擔(dān)的兩倍。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種基于傳輸連接的高可用性組件實現(xiàn),其降低 了組件上的處理負(fù)擔(dān)并且可被配置成減少可用資源上的負(fù)載,因而降低了 組件的實例毀壞和/或出故障的可能性。
為此,根據(jù)本發(fā)明的系統(tǒng)的區(qū)別在于,群集被安排用來維持所述至少 兩個節(jié)點中每一個上的 一個協(xié)議組件實例,以使得至少兩個實例是激活的, 并且所述服務(wù)器被安排用來同時維持與每個實例的協(xié)議會話。現(xiàn)有技術(shù)問 題被本發(fā)明方法解決,其特征在于,在至少兩個節(jié)點上分配協(xié)議組件,同 一協(xié)i義組件的 一個實例運行在每個節(jié)點上,并且利用該協(xié)議組件而打開一 個或多個傳輸連接上的至少兩個協(xié)議會話。
本發(fā)明的系統(tǒng)和方法的優(yōu)點在于,由于所述協(xié)議組件分布于至少兩個 節(jié)點上,所述協(xié)議可以通過降低協(xié)議組件使得處理負(fù)擔(dān)而受益于真正的負(fù) 載平衡機制,并且由于至少兩個協(xié)議會話保持激活而使得至這些節(jié)點的業(yè) 務(wù)可以連續(xù)地被適當(dāng)調(diào)整。
應(yīng)當(dāng)指出,術(shù)語"協(xié)議^""應(yīng)當(dāng)以寬泛的含義來解釋,其是指傳輸
連接上的任何持續(xù)時間長的連接,例如TCP (傳輸控制協(xié)議)連接上的 XMPP會話,但是也包括例如TCP或SCTP (流控制傳輸協(xié)i義)連接上的 Diameter協(xié)議連接。原則上,可以設(shè)想采用任何其他使用協(xié)議會話并且適 于使用傳輸連接的協(xié)議。
從屬權(quán)利要求中公開了有利的實施例。
優(yōu)選地,所述系統(tǒng)被安排用來當(dāng)實例失敗時將協(xié)議會話上發(fā)送的業(yè)務(wù) 重新分配給另一個激活的協(xié)議會話。這可以確保永久的可用性。
根據(jù)優(yōu)選實施例,所述服務(wù)器配備有用于根據(jù)預(yù)定算法而將協(xié)議分組 可選地分配給多個實例中的每一個的模塊。所述模塊通常能夠訪問具有協(xié) 議組件的激活協(xié)議會話的列表,并且所述服務(wù)器被安排用來將協(xié)議分組遞 送給按照預(yù)定算法發(fā)送這些分組的模塊。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,可以
5使用許多不同的算法,例如輪詢方法、散列方法、隨機方法、固定分配方 法、基于會話標(biāo)識符的方法,所述方法中一個或多個的組合,等等。將參
考圖4進一步說明這些方法。
根據(jù)本發(fā)明方法的另 一方面,服務(wù)器測量協(xié)議組件的每個實例上的處 理負(fù)載,其中協(xié)議分組的分配U于處理負(fù)栽測量結(jié)果的。以該方式,可 以在實例之間執(zhí)行相當(dāng)高效的負(fù)栽平衡。
附圖用于說明本發(fā)明的優(yōu)選的、非限制性示例實施例。參考附圖,通 過閱讀下面的詳細(xì)描述,本發(fā)明的上述及其他有利特征和目的將變得更加 明顯并且能更好地理解本發(fā)明,其中
-圖1示出了典型的計算機網(wǎng)絡(luò)的示例,其中可以實現(xiàn)本發(fā)明的系統(tǒng) 和方法;
-圖2 (A) - (B)概略性地示出了現(xiàn)有技術(shù)的高可用性實現(xiàn);
-圖3 (A) - (B)概略性地示出了本發(fā)明的系統(tǒng)和方法的實施例;
-圖4概略性地示出了用于本發(fā)明的系統(tǒng)和方法的XMPP服務(wù)器。
具體實施例方式
圖1示出了典型的計算機系統(tǒng),其具有若干客戶端1、若干服務(wù)器2 和包括第一服務(wù)器4和第二服務(wù)器5的服務(wù)器群集3。注意,服務(wù)器群集3 通常包括可運行于同 一機器上或可位于不同機器上的若干服務(wù)器實例或過 程。服務(wù)器群集的服務(wù)器實例被安排用于運行若干組件6、 7。
圖2說明了由具有所謂的高可用性XMPP組件實現(xiàn)的XMPP(可擴展 消息處理現(xiàn)場協(xié)議)組件銷售商使用的現(xiàn)有技術(shù)方法。XMPP是一種用于 傳輸XML元素以交換消息并且?guī)缀鯇崟r地呈現(xiàn)信息的協(xié)議。IETF的 XMPP工作組進一步將Jabber協(xié)i義適配為IETF許可的即時消息傳送 (IM )和現(xiàn)場4支術(shù)。所撰寫的協(xié)議是可從h"p:〃www.ietf.org/rfc/rfc3920.txt 獲得的RFC3920 ( XMPP核心)和可從http:〃www.ietf.org/rfc/rfc3921.txt獲得的RFC3921 (XMPP核心的IM和現(xiàn)場擴展),所述RFC文本在這 里被引入作為參考。此外,Jabber團體管理jabber擴展協(xié)議(XEP)。
XMPP使得可信組件能夠連接到XMPP服務(wù)器,其中XMPP服務(wù)器和 XMPP組件維持彼此之間的一個或幾個XMPP會話。這種^St是建立在傳 輸連接上的,特別是TCP連接。消息^是作為XML流而在TCP連接 上被承載的。
如圖2 (A)所示,現(xiàn)有技術(shù)的高可用性實現(xiàn)在于使用備用XMPP組 件20來在主XMPP組件21失敗的情況下接管工作。為了運行XMPP組 件,XMPP服務(wù)器22僅維持與主組件21的單個會話。只要主組件21啟 動并運行,備用組件20就離線工作。在這種情況下,備用組件復(fù)制所有需 要的來自主組件21的實時信息和/或配置,以j吏得在主組件變?yōu)椴豢捎脮r, 備用組件可以立即接管,如圖2(B)所示。然而,由于缺乏存在的XMPP 會話并且需要打開XMPP服務(wù)器與備用組件之間的新會話,用戶將獲知服 務(wù)在一段時期內(nèi)不可用。
本發(fā)明的主要思想是在提供備用組件之后, 一方面在服務(wù)器和備用組 件之間而另 一方面在所述組件和備用組件之間提供備用協(xié)議會話。
圖3 (A)和3 (B)說明了所述概念的一種可能的實施例。在這個示 例中使用XMPP協(xié)議。然而,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,所示出的系統(tǒng)和 方法也可以用通常使用TCP的傳輸連接上所承載的其他協(xié)議來執(zhí)行。 XMPP的可選方案的一個例子是Diameter。 Diameter ^i^出協(xié)議旨在為例 如網(wǎng)M入或IP移動性的應(yīng)用提供認(rèn)證、授權(quán)和計費(AAA)框架,并 且在可從http:〃www.ietf.org/rfc/rfc3588.txt獲得的RFC3588中被定義。
在圖3 (A)的示例中,XMPP組件分布于三個節(jié)點的群集上。在每 個節(jié)點上存在同一XMPP組件的一個實例31、 32、 33,并且每個實例31、 32、 33維持與服務(wù)器30的單個XMPP會話34、 35、 36。所有這些實例 31-33和它們相應(yīng)的會話34-36是同時激活的,以使得業(yè)務(wù)可以在所有 XMPP會話上被高效地分割。換言之,同一XMPP組件的總處理負(fù)擔(dān)可以 均勻分布于在群集中為激活的不同實例上。在這種均勻分布的情況下,n個節(jié)點的群集的每個實例的處理負(fù)擔(dān)近似地等于除以因子n。
然而,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,在一些系統(tǒng)中采用非均勻分配可能 是優(yōu)選的。這例如是當(dāng)一個組件具有比另一組件更高的可用處理能力的情 況。根據(jù)一種可能的變型,服務(wù)器可以被安排用于測量每個組件的負(fù)載, 并且業(yè)務(wù)的分割可以是基于這種負(fù)載測量的。這將在下面參考圖4進一步
討論o
如果實例中的一個失敗,例如圖3(B)中的實例3,會話3所發(fā)送到 業(yè)務(wù)自動被重新分配^^話1和/或會話2。
朝向在群集中同時為激活的不同協(xié)議^t的業(yè)務(wù)分配以及失敗情況下 的自動重新分配可以由服務(wù)器中提供的專用模塊來完成。現(xiàn)在將參考圖4 說明這種協(xié)議會話分配模塊的實施例,其也稱為容錯(FT)模塊。
根據(jù)FT模塊42的這個實施例被實現(xiàn)在XMPP服務(wù)器40中并且負(fù)責(zé) 確定如何在可用XMPP會話的集合之中分割去往XMPP組件的業(yè)務(wù),所 述會話通常在一個或幾個TCP連接之上打開。
當(dāng)XMPP會話集合與同 一組件的^"開始時,XMPP服務(wù)器40將通 知所建立的XMPP會話的列表41的FT模塊,所建立的XMPP會話通常 用M ID來標(biāo)識。當(dāng)分組應(yīng)當(dāng)被轉(zhuǎn)發(fā)給XMPP組件時,F(xiàn)T模塊將判定使 用哪個XMPP會話并且相應(yīng)地發(fā)送所述分組。不同的算法可以被使用,例 如
畫輪詢方法,其中依次使用每個XMPP會話。FT模塊記住最后一個 M ID (或其相關(guān)變型)并且將下一分組發(fā)送給由下一^S舌ID標(biāo)識的下 一會話。這種算法在存在許多組件的情況下是有用的并且具有實施簡單的 優(yōu)點。
畫散列方法FT模塊首先通過在XMPP分組中的標(biāo)識了 "流,,(例 如與"線程ID"(若有的話)有關(guān)的"去往"和"來自"屬性)的一些 域上執(zhí)行散列(例如CRC16 )來選擇關(guān)鍵字。為每個會話ID分配關(guān)鍵字 空間中的唯一區(qū)域。FT模塊使用關(guān)鍵字來判定需要向其發(fā)送分組的會話 ID。這種算法在專用組件需要被識別出的情況下特別合適,但是更加復(fù)雜。-散列方法和輪詢方法或任何其他簡單算法的組合如果散列方法返
回可能組件的列表,則另一方法應(yīng)當(dāng)被用來進行判定,這可以例如是輪詢
方法或下面列出的其他方法之一。
-基于負(fù)載的方法服務(wù)器可以被安排用于獲得與每個組件上的處理
負(fù)載有關(guān)的信息。分組然后可以凈議送給具有最低負(fù)載的組件的M。 -"隨^U"方法,其隨機地發(fā)送分組至"任何"組件。 畫"總是相同,,方法,其中,總是在相同的M上發(fā)送某些分組。 -基于標(biāo)識符的方法,例如將分組發(fā)送至具有最低標(biāo)識符的組件,等。 盡管上面已經(jīng)結(jié)合特定實施例闡述了本發(fā)明的原理,然而應(yīng)當(dāng)清楚地
理解,該描述只是作為示例而不是對由所附權(quán)利要求限定的保護范圍的限制。
9
權(quán)利要求
1. 一種用于進行高可用性處理的計算機系統(tǒng),包括-協(xié)議組件,-具有至少兩個節(jié)點的群集,其被安排用于運行所述協(xié)議組件,和-服務(wù)器,其被安排用于維持傳輸連接上的與所述群集中一個節(jié)點的協(xié)議會話,其特征在于,所述群集被安排用于維持所述至少兩個節(jié)點中每一個上的所述協(xié)議組件的一個實例,以使得至少兩個實例是激活的;并且所述服務(wù)器被安排用于同時維持與每個實例的協(xié)議會話。
2. 根據(jù)權(quán)利要求l所述的計算機系統(tǒng),其特征在于,所述系統(tǒng)還被安 排用于在所述至少兩個實例中的一個實例失敗的情況下將協(xié)議會話上發(fā)送 的業(yè)務(wù)重新分配給利用所述至少兩個實例中的另 一個實例來維持的另 一個 協(xié)議會話。
3. 根據(jù)權(quán)利要求1所述的計算機系統(tǒng),其特征在于,所述傳輸連接上 的所述協(xié)議^H吏用下列協(xié)議中的一個XMPP、 DIAMETER、或任何其 他適合用在傳輸連接上的信令協(xié)議。
4. 根據(jù)權(quán)利要求1所述的計算機系統(tǒng),其特征在于,所述服務(wù)器被配 備以用于按照預(yù)定算法而將協(xié)議分組可選地分配給多個實例中的每一個的 模塊。
5. 根據(jù)權(quán)利要求4所述的計算機系統(tǒng),其特征在于,所述模塊能夠訪 問與所述協(xié)議組件的激活協(xié)議會話的列表,并且所述服務(wù)器被安排用于遞 送協(xié)議分組至所g塊。
6. —種用于通過傳輸連接上的會話來進行高可用性處理的方法,其用 在具有至少兩個節(jié)點的群集中,所述群集被安排用于運行協(xié)議組件,其特征在于,-協(xié)議組件分布于所述至少兩個節(jié)點中的至少兩個之上,所述協(xié)議組 件的一個實例運行在每個節(jié)點上,以及-服務(wù)器向所述協(xié)議組件在一個或多個傳輸連接上打開至少兩個協(xié)議 M。
7. 根據(jù)權(quán)利要求6所述的方法,其特征在于,基于預(yù)定算法而將協(xié) 議分組分配給所述至少兩個協(xié)議會話。
8. 根據(jù)權(quán)利要求7所述的方法,其特征在于,所述算法是下列算法 中的一個輪詢方法、散列方法、隨機方法、固定分配方法、基于會話標(biāo) 識符的方法、或所述方法中的一個或多個的組合。
9. 根據(jù)權(quán)利要求6所述的方法,其特征在于,所述服務(wù)器測量所述協(xié) 議組件的每個實例上的處理負(fù)載,并且所述協(xié)議分組的分配^^于處理負(fù) 載測量結(jié)果的。
10. 根據(jù)權(quán)利要求6所述的方法,其特征在于,在所述至少兩個協(xié)議 會話中的 一個協(xié)議會話上被發(fā)送給所述至少兩個實例中的失敗實例的協(xié)議 分組,被重新分配給所述至少兩個協(xié)議會話中的另一個協(xié)議會話。
全文摘要
本發(fā)明涉及一種用于通過傳輸連接上的會話進行高可用性處理的、用在具有至少兩個節(jié)點的群集中的計算機系統(tǒng)和方法。所述系統(tǒng)包括協(xié)議組件;具有至少兩個節(jié)點的群集,其被安排用于運行所述協(xié)議組件;和服務(wù)器,其被安排用于維持傳輸連接上的與所述群集中的一個節(jié)點的協(xié)議會話。所述群集被安排用于維持所述至少兩個節(jié)點中的每一個上的所述協(xié)議組件的一個實例,以使得至少兩個實例是激活的;所述服務(wù)器被安排用于同時維持與每個實例的協(xié)議會話。
文檔編號H04L29/06GK101447989SQ20081017817
公開日2009年6月3日 申請日期2008年11月25日 優(yōu)先權(quán)日2007年11月28日
發(fā)明者G·克里斯塔洛, J·M·C·莫雷爾, N·詹森斯 申請人:阿爾卡特朗訊公司