專利名稱:正好一次高速緩存器結(jié)構(gòu)的制作方法
技術(shù)領域:
本發(fā)明涉及用于在網(wǎng)絡群集器中的服務器當中分布對象的技術(shù)。
背景技術(shù):
在分布式計算機系統(tǒng)中,經(jīng)常存在這樣的情況,即若干個服務器和/或網(wǎng)絡節(jié)點必須一起工作。當在所述多個設備當中存在需要共享的典型網(wǎng)絡信息以便允許它們用做單一實體時,必須對這些服務器和節(jié)點進行協(xié)調(diào)。就資源和效率而言,通常可對設備進行協(xié)調(diào)的方法是非常昂貴的。
通常,由于在多個節(jié)點之間存在若干信息傳送,因此,為了使這些節(jié)點一致,需要某種同步。然而,在群集網(wǎng)絡環(huán)境中這種同步要求是所不希望的。許多群集環(huán)境簡單避免了利用任何這種同步要求。然而,在某些應用中,這種一致是必需的。
在某些需要一致的情況下,存在一個群集器試圖排除對其進行訪問的設備。一種這樣的設備是一個事項注冊文件系統(tǒng)。只要事項處理在進行中,就存某些必須以持續(xù)方式保存的對象,從而如果出現(xiàn)故障,則可恢復持續(xù)保存的對象。
對于其需要被保存在一個位置上的對象而言,一般存在其運行于群集器或域中每個服務器上的一事項監(jiān)視器,該事項監(jiān)視器此后使用本地文件系統(tǒng)來訪問對象。每個服務器可以具有其自己的事項管理器,以便在持續(xù)性上幾乎不存在問題。由于每個服務器都具有其自己的事項管理器,所以,也不需要協(xié)調(diào),。
例如,可能存在包括三個服務器的群集器,每個服務器具有一事項管理器。這些服務器中的一個可能遇到故障或者由于該服務器不可用于群集器所引起的其它問題。由于有故障的服務器是唯一可訪問特定事項處理記錄的服務器,所以,在該服務器再次可用于該群集器之前,不可能恢復特定記錄上的任何事項。由于服務器必須花費大量的時間來解決這些問題,所以恢復該記錄是很困難的或者至少效率很低,。重要的服務器問題可能包括諸如服務器上的母板短路或者電源被燒壞這樣的事件。
發(fā)明內(nèi)容
本發(fā)明包括這樣一個系統(tǒng),該系統(tǒng)用于對諸如存儲在網(wǎng)絡或者群集器上的服務器中的對象進行管理。該系統(tǒng)包括一數(shù)據(jù)源、應用、或者諸如文件系統(tǒng)或者Java消息服務部件這樣的位于群集器之內(nèi)或者群集器之外的服務。該系統(tǒng)包括若干個服務器,這些服務器諸如通過高速網(wǎng)絡連接而與該文件系統(tǒng)或者應用進行通信。
該系統(tǒng)包括諸如另一個服務器所同意的一主服務器(lead server)。該主服務器包含于硬件或者軟件群集器中。該系統(tǒng)包括用于從服務器當中選擇主服務器的一算法,該算法例如可以是內(nèi)置在硬件群集器設備中的算法。該主服務器依次包括諸如Paxos算法這樣的用于選擇主服務器的一分布式一致性算法。用于選擇主服務器的算法可以與用于選擇主服務器的算法不同或者與其相同。
該主服務器包括諸如存儲在局部超高速緩存器中的事項或者對象的拷貝。主服務器提供了可對網(wǎng)絡或者群集器中的任何服務器進行訪問的本地拷貝。主服務器還可以提供對存儲在文件系統(tǒng)中的對象進行訪問的唯一接入點,或者可提供對應用或者服務進行訪問的唯一接入點。還可以在文件系統(tǒng)、應用、或者服務中更新對主服務器所高速緩沖的、所接納的、或者所擁有的事項所做出的任何變化。
如果主服務器變得不能接納所述對象,那么使用分布一致性算法選擇新的主機,此后從文件系統(tǒng)或者服務中取出該對象所需的數(shù)據(jù)。群集器中的另一個服務器被通知一個新的服務器正在接納該對象。通過諸如點到點連接或者通過多點傳送這樣的適當裝置來通知服務器。
圖1給出了根據(jù)本發(fā)明一個實施例的分布式對象系統(tǒng)的示意圖;圖2給出了根據(jù)本發(fā)明一個實施例的另一個分布式對象系統(tǒng)的示意圖;圖3給出了根據(jù)本發(fā)明的用于選擇主服務器的一方法的流程圖;圖4給出了根據(jù)本發(fā)明的用于選擇新的主服務器的一方法的流程圖;圖5給出了根據(jù)本發(fā)明的用于使用主服務器的一方法的流程圖;圖6給出了根據(jù)本發(fā)明一個實施例的JMS消息存儲系統(tǒng)的示意圖;圖7給出了根據(jù)本發(fā)明所使用的計算機系統(tǒng)的部件的方框圖。
具體實施例方式
根據(jù)本發(fā)明的系統(tǒng)提供了諸如當擁有數(shù)據(jù)對象的服務器變得不可用于服務器群集器時發(fā)布有效性的解決方案。這樣一種解決方案可使該群集器中的另一個服務器擁有該數(shù)據(jù)對象的所有權(quán)。但是,出現(xiàn)了這樣一個問題,即在不需對兩個服務器上的數(shù)據(jù)對象進行復制的情況下即可到這兩個服務器訪問所述數(shù)據(jù)對象。
如果群集器使用文件系統(tǒng)、數(shù)據(jù)存儲器、或者數(shù)據(jù)庫(在下文中被總稱為“文件系統(tǒng)”)以持續(xù)的存儲數(shù)據(jù),并且不止一個服務器可訪問該文件系統(tǒng),那么如果擁有那個對象的第一服務器遇到問題,第二服務器即可自動地接管訪問數(shù)據(jù)對象的任務。另外,可利用群集器或者群集器中的服務器所使用的算法來指令服務器接管所述項的所有權(quán)。然而,另一個基本問題包括使群集器同意哪一個服務器目前擁有資源或者對象,或者在服務器中間實現(xiàn)“一致同意”。
圖1給出了根據(jù)本發(fā)明的群集器系統(tǒng)100的一個例子,在該例子中將諸如事項注冊114這樣的對象存儲在文件系統(tǒng)112中。群集器110中的所有服務器106,116,118都可訪問該文件系統(tǒng)112,但是這些服務器中只有一個每次都可訪問注冊114。諸如通過存儲注冊114的拷貝108或者通過都可訪問文件系統(tǒng)112中的注冊114,群集器110中的服務器當中的主服務器106將“擁有”或者“接納”該注冊114。群集器110中的其它任何服務器116,118可以訪問該記錄的拷貝108,和/或可通過主服務器106來訪問注冊114。例如,一客戶或者瀏覽器102可以對其指群集器110中的服務器116的網(wǎng)絡104進行請求。該服務器可通過網(wǎng)絡104來訪問主服務器106上的事項記錄的拷貝108。如果必須更新事項記錄,那么拷貝108與文件系統(tǒng)112上的原注冊114一起被更新。
例如當服務器作為對象的存儲器時,諸如通過將數(shù)據(jù)對象的拷貝存儲在本地超高速緩存器中并且使該群集器中的其它服務器可使用該拷貝,或者通過使唯一的服務器可隨機訪問文件系統(tǒng)中的對象,該服務器則可“擁有”或者“接納”該數(shù)據(jù)對象,以致該群集器中的所有其它服務器必須通過該主服務器來訪問那些對象。這保證了對象“正好一次”存在于服務器群集器中。
圖3給出了一個處理300,該處理300用于建立對一個對象的接納。利用諸如Paxos算法這樣的分布式一致性算法302來選擇主服務器。因為群集器中的服務器通常必須就怎樣在群集器服務器中分布對象而達成一般同意或一致同意,所以,這種算法被稱為“分布式一致性”算法。
如果被接納的對象例如是被高速緩存在主服務器中,那么,從文件系統(tǒng)中取出的數(shù)據(jù)對象的拷貝被傳送至主服務器并做為一個對象存儲在本地超高速緩存器304中。此后諸如通過主服務器向網(wǎng)絡或者適當群集器中的其它服務器通知該對象的本地拷貝存在于主服務器中并且本地拷貝將被用在對將來的網(wǎng)絡要求306進行的處理中。
在是分布式一致性算法的一個例子的Paxos算法中,通過網(wǎng)絡服務器來選擇一服務器以作為主機或者主服務器,該網(wǎng)絡服務器引導了一系列的“一致循環(huán)(consensus rounds)”。在每個一致循環(huán)中,建議了新的主機或者主服務器。循環(huán)一直繼續(xù)直到多數(shù)或者法定數(shù)目的服務器接受所建議的服務器。盡管該系統(tǒng)被配置成總是由主服務器啟動一循環(huán)以便選擇一主服務器,但是,任何服務器都可通過啟動一循環(huán)來建議主機或者主服務器。同時可進行用于不同選擇的循環(huán)。因此,通過循環(huán)數(shù)或者這樣一對值來識別循環(huán)選擇,至于這一對值,其中的一個與所述循環(huán)相關(guān),而另一個與引導所述循環(huán)的服務器相關(guān)。
用于這樣一個循環(huán)的步驟如下,盡管其它步驟和/或方法可適于某些情況或者應用。首先,通過引導服務器將一“集中”消息傳送到群集器中的其它服務器來啟動一個循環(huán)。集中消息集中了來自群集器中服務器的與在前這些服務器所參與進行的循環(huán)有關(guān)的信息。如果對于一個特定的選擇處理存在在前的一致循環(huán),那么所述集中消息還通知服務器不要提交來自在前循環(huán)的選擇。例如,一旦引導服務器已集聚了來自至少一半群集器服務器的回應,那么引導服務器就可以決定所述值以建議下一個循環(huán)并且將該建議傳送到群集器服務器以作為“啟動”消息。為了在這種方法中使引導服務器選擇一值以提供建議,必須接收來自服務器的初始值信息。
一旦服務器接收到來自引導服務器的啟動消息,它通過傳送一“接受”消息來做出響應,這表明該服務器接受所建議的主機/主服務器。如果該引導服務器接收到多數(shù)或者法定數(shù)目服務器的接受消息,那么引導服務器將其輸出值設置為在循環(huán)中所建議的值。如果引導服務器在規(guī)定的時段內(nèi)沒有接收到多數(shù)或者法定數(shù)目的接受(“一致同意”),那么引導服務器可啟動新的循環(huán)。如果引導服務器接收到一致同意,那么引導服務器可以通知所述群集器或者網(wǎng)絡服務器所述服務器將被指定為所選擇的服務器??赏ㄟ^任何適當?shù)膹V播技術(shù)將該通知廣播到網(wǎng)絡服務器,例如可通過點到點連接或者多點傳送。
通過建議利用與在前循環(huán)有關(guān)的信息的選擇可保證一致同意方法的一致同意條件。要求該信息來自至少大多數(shù)的網(wǎng)絡服務器,以便對于任意兩個循環(huán)來說存在至少一個參與了兩個循環(huán)的服務器。
所述引導服務器可通過向每個服務器詢問服務器接受一值的最新循環(huán)編號、可能還要詢問所接受的值來選擇一值。一旦引導服務器從多數(shù)或者法定數(shù)目的服務器中獲得了該信息,它可以選擇用于新循環(huán)的值,該值等于響應當中最新循環(huán)的值。如果沒有一個服務器涉及在前的循環(huán),那么引導服務器還可以選擇初始值。例如,如果引導服務器接收到上次所接受的循環(huán)是x的一響應,并且當前循環(huán)是y,那么服務器表示不接受x與y之間的任何循環(huán),以便保持一致性。
循環(huán)引導服務器與網(wǎng)絡服務器之間的抽樣交互包括以下消息(1)“Collect”——將一消息傳送到正在啟動一個新循環(huán)“r”的服務器。該消息可采取m=(“Collect”,r)的形式。
(2)“Last”——將來自一網(wǎng)絡服務器的消息傳送給引導服務器,該網(wǎng)絡服務器提供了上次循環(huán)所接受的“a”以及該循環(huán)的值“v”。該消息可采取m=(“Last”,r,a,v)的形式。
(3)“Begin”——將一消息傳送給發(fā)布與循環(huán)r相關(guān)的所述值的服務器。該消息可采取m=(“Begin”,r,v)的形式。
(4)“Accept”——將一消息從用于接受與循環(huán)r相關(guān)的所述值的服務器傳送給所述引導服務器。該消息可采取m=(“Accept”,r)的形式。
(5)“Success”——將一信息傳送給用于發(fā)布與循環(huán)r相關(guān)的所述值v的選擇的服務器。該信息可采取m=(“Success”,r,v)的形式。
(6)“Ack”——將一消息從一服務器傳送給引導服務器,該服務器承認已經(jīng)接收到與循環(huán)r相關(guān)的決定。該信息可采取m=(“Ack”,r)的形式。
存在與其位于硬件群集器或者軟件群集器內(nèi)部或者外部的服務器相分離的一文件系統(tǒng)。該文件系統(tǒng)諸如通過將記錄存儲在第一磁盤并將該記錄拷貝到位于文件系統(tǒng)之內(nèi)的第二磁盤來持續(xù)的存儲事項記錄。如果第一磁盤劃碰了,那么文件系統(tǒng)可使所述群集器和/或服務器無法察覺所述劃碰并且可從第二磁盤中獲得記錄信息。該文件系統(tǒng)還可以選擇以將該記錄拷貝到其用作第二磁盤備份的第三磁盤上。
從群集器中的服務器的角度來看,該文件系統(tǒng)可以是單一資源。在一個實施例中,該服務器可以只關(guān)心單一服務器在任何時間處擁有該文件系統(tǒng)。
根據(jù)本發(fā)明的另一個例子包括位于服務器群集器中的高速緩存器。例如因為網(wǎng)絡性能的原因,因此希望在群集環(huán)境中使單一高速緩存器群集器中的服務器示出了數(shù)據(jù)對象。將多個項保存在單一高速緩存器中可能是有利的,因為群集器中的服務器可訪問高速緩存器而無需不斷的回到永久性存儲器。取出已位于存儲器中的多個項可極大的增加該系統(tǒng)的利用率,因為命中數(shù)據(jù)庫或者文件系統(tǒng)的時間相對集中。
然而,單一高速緩存器所具有的一個問題就是必須保證存儲在存儲器中的對象與存儲在文件系統(tǒng)一磁盤中的對象相同。需要這種一致性的理由是保證在所高速緩存對象上所進行的任何操作或者計算產(chǎn)生了正確結(jié)果。另一個原因就是必須對由于高速緩存器劃碰或者以別的方式而感染或者不可用所造成的文件系統(tǒng)的高速緩存器進行修復。
至少有兩個基本方式來處理群集器中的這類高速緩存,雖然其它方式至少對某些應用起作用。一種方式就是在多個地方復制該高速緩存器。該處理是有問題的,因為正被高速緩存項的任何變化都要求拷貝所述高速緩存器的所有服務器一致同意該變化,或者至少知道該變化。就資源以及性能來講,經(jīng)證明這是非常昂貴的。
根據(jù)本發(fā)明的一可替換方法分布特定的服務器以使其是群集器中高速緩存器的所有者,并且通過這些特定的服務器都可訪問高速緩存器。群集器中的任何服務器接納這種高速緩存器。每個服務器可以接納一個、若干個、或者不接納高速緩存器。在單一服務器上寄主該高速緩存器,或者將其散布到群集器中某些或者所有服務器當中。群集器本身可以是任何適當?shù)娜杭?,例如硬件群集器或者由處于給定“軟件”群集器中的軟件應用所指定的一組服務器。
還可以考慮作為位于系統(tǒng)上某處的一種對象的事項登錄和/或高速緩存器中的一個例子。可以指望保證任何一個這種對象在一個群集器中僅僅存在一次,并且該對象總是可用的。還可以指望保證如果接納該對象的服務器出現(xiàn)了故障則所述對象可以被恢復到另一個服務器上,并且該對象可用于該群集器。
圖4給出了用于恢復的一個方法400。在該方法中,確定主服務器是否能夠繼續(xù)接納對象402,例如確定服務器是否仍可用于該網(wǎng)絡。如果不是,利用分布式一致性算法選擇新的主機。這個選擇可以是根據(jù)選擇原主機404所使用的方法來執(zhí)行。從文件系統(tǒng)中取出數(shù)據(jù)對象的拷貝被提供給新的主機,并且將其存儲在本地超高速緩存器406中。網(wǎng)絡上或適當群集器中的其它服務器被通知新的主服務器包括所述對象的本地拷貝,并且本地拷貝將用在對將來的任何網(wǎng)絡要求408進行處理當中。
根據(jù)本發(fā)明的系統(tǒng)和方法可以定義存在于群集器中正好一個位置中的對象,并且可保證這些對象總是存在的。從服務器的角度來看,是否利用諸如一個文件系統(tǒng)來鏡像或者拷貝諸如事項記錄這樣的對象是無關(guān)緊要的。從服務器的角度來看,總有一個可被群集器中任何一個服務器訪問的永久性存儲器,該系統(tǒng)周期地檢查對象的存在,或?qū)ο笏袡?quán)指定為很短的時間周期,以便頻繁的再指定對象以確保網(wǎng)絡上或者群集器中的某個設備上的存在。
硬件群集器包括一組設備,每個設備可運行多個服務器。在每個設備之后還存在一文件系統(tǒng)。硬件群集器中的服務器通常是由硬件構(gòu)成的,所以,它們能更快的做出決定并且對硬件群集器內(nèi)部的服務器故障進行處理。硬件群集器的大小被限制為包括有所述服務器的設備的實際硬件。硬件群集器中的服務器可以被用作軟件群集器中的服務器,并且由于該設備上的單獨的服務器可以用于該網(wǎng)絡,所以還可以包括網(wǎng)絡服務器,。
用于這些設備中的一個的共享文件系統(tǒng)諸如通過高速網(wǎng)絡而可以用于群集器中的所有服務器。文件系統(tǒng)還可以是冗余的。在一個實施例中,通過使用文件系統(tǒng)的多個數(shù)據(jù)磁盤來實現(xiàn)該冗余。在這樣一種冗余的實現(xiàn)中,在將對象寫入到該文件系統(tǒng)的任何時候都可通過多個磁盤來拷貝對象。當將該文件系統(tǒng)看作是“黑盒子”時,該文件系統(tǒng)可承受任一磁盤當中的故障并且仍可提供群集器中任何服務器對數(shù)據(jù)項的訪問。
假設保存在存儲器中的這些對象總是通過可靠的、永久性的存儲器機構(gòu)來恢復,則可建立根據(jù)本發(fā)明的其被稱為“正好一次”結(jié)構(gòu)的結(jié)構(gòu)。例如,存在有表示事項處理記錄的一個對象。只要產(chǎn)生了對該對象的調(diào)用,則更新對應的事項記錄。這包括從數(shù)據(jù)庫中所讀取的或者寫入到數(shù)據(jù)庫中的一個調(diào)用。表示事項記錄的對象位于諸如主機服務器這樣的群集器中的一個服務器上。只要群集器中至少一個服務器啟動(up)并且運行,那么正好一次結(jié)構(gòu)可確保如果另一個服務器有故障則該服務器可接管該記錄的所有權(quán)。
可能存在一個表示高速緩存器的對象。每當更新高速緩存器時,還可以將該更新寫回到永久存儲器中。當多個服務器中的一個服務器需要使用數(shù)據(jù)項時,要求該服務器全面研究(go through)該對象。如果用于接納表示高速緩存器的對象的所述服務器發(fā)生故障,則將該對象恢復在另一個服務器上。所恢復的對象可以從永久存儲器中取出所有的必要信息。
正好一次結(jié)構(gòu)可用作群集器所使用的存儲緩沖器。該結(jié)構(gòu)提供了其可提供系統(tǒng)中數(shù)據(jù)的單個高速緩存器,該系統(tǒng)是通過一可靠的、永久的存儲器來恢復的。只要從高速緩存器中讀取數(shù)據(jù),無需訪問永久的存儲器即可執(zhí)行該讀取。然而,當將該更新寫入到高速緩存器中時,必須通過永久的存儲器來寫回,以便如果存在一故障則可使該系統(tǒng)恢復。
正好一次結(jié)構(gòu)的一個重要方面包括一種方式,可在該方式中抽象出一種根據(jù)應用和/或?qū)崿F(xiàn)而變化的方法。創(chuàng)建了諸如被稱為“正好一次對象”的新型分布式對象。正好一次對象例如是文件系統(tǒng)中數(shù)據(jù)項的本地高速緩存拷貝,或者是對群集器中服務器的該數(shù)據(jù)項進行訪問的唯一接入點。實現(xiàn)該抽象的根本技術(shù)也很重要。
本發(fā)明的系統(tǒng)可利用其可用于分布式一致性的多個方法中的任何一個,諸如利用上述Paxos算法的一方法。選擇這樣一種算法,該算法提供了有效的方法以使多節(jié)點和/或分布式結(jié)點同意對象的一個值。即使節(jié)點有故障和/或在協(xié)商處理過程中返回,也可選擇該算法以使其起作用。
網(wǎng)絡群集器的一般方法是利用可靠廣播,在該方法中保證將每個消息傳送到其所預定的接受者,或者至少將其傳送到每個預定作用的服務器。該方法很難使系統(tǒng)并行化,因為可靠廣播需要在移到下一個消息或者接受者上之前接受者要肯定應答收到一消息。利用多點傳送的分布式算法可降低保證的次數(shù),因為多點傳送不能保證所有服務器接收一消息。然而,多點傳送可使該方法簡單化以便該系統(tǒng)可參與并行處理,因為單一消息被并發(fā)的多點傳送到所有群集器服務器,而無需等待來自每個服務器的反應。未接收到多點傳送消息的服務器最后可從主服務器或者另一個群集器服務器或者網(wǎng)絡服務器中取出信息。如這里所使用的,網(wǎng)絡服務器可參照網(wǎng)絡上的任何服務器,無論該網(wǎng)絡服務器是在硬件群集器中、軟件群集器中、或者任何群集器之外。
正好一次結(jié)構(gòu)的一個重要方面是降低了一致的困難性。根據(jù)本發(fā)明,通過利用分布式一致性算法來多點傳送消息可改善分布式一致性實現(xiàn)的性能。該方法可為使所有服務器相互一致同意而所需的消息交換和/或網(wǎng)絡通信量最小化。
當多點傳送時,可采用若干方法中的一個。在其被稱為“單相分布”的第一個方法中,主服務器將一消息多點傳送到位于網(wǎng)絡上的所有其它服務器上,例如用在Paxos算法的循環(huán)中或者用于這樣一種狀態(tài),即已為一對象選擇了新的主機。在該方法中,主服務器只須傳送一個消息,該消息被傳送到網(wǎng)絡中任何可用服務器上。如果一服務器臨時的斷開該網(wǎng)絡,那么該服務器要求在回到該網(wǎng)絡上之后對新的主機進行識別。
利用另一個其被稱為“雙相分布”的多點傳送方法,主服務器可利用適當?shù)乃惴ǖ膩眍A選擇一主機服務器。然而,在將一對象分布給該主機之前,該主服務器可與群集器中的所有其它服務器相連接以確定服務器是否同意所選擇的新主機服務器。主服務器可通過點到點連接而與每個服務器相連接,或者可傳送多點傳送要求并且此后等待每個服務器以應答。如果服務器不同意所選的主機,那么主服務器利用該算法來預選擇新的主機。主服務器此后在另一個循環(huán)中傳送另一個多點傳送請求以及所重新預選擇的主機的標識。
如果每個服務器都同意預選擇的主機,那么主服務器將該對象分布給主機服務器。此后主服務器多點傳送一提交信息以通知服務器將新的變化已生效并且因此服務器將更新其信息。
正好一次結(jié)構(gòu)還可以利用“出租”機構(gòu)。在利用這種機構(gòu)的過程中,使用一種算法以使群集器服務器與主服務器一致,例如通過利用分布式一致性算法。一旦選擇了,該主服務器擔負將對象正好一次分布給群集器中的各種服務器。建立該系統(tǒng)以便如果現(xiàn)有的主服務器出現(xiàn)了故障,那么群集器服務器總是與新的引導服務器一致。
在所述主服務器被激活的同時,該主服務器可以知道需要存在于該系統(tǒng)之中的所有正好一次對象。該主服務器可決定哪個服務器將接納每個對象,并且因此可將該對象“出租”給所選擇的服務器。當一對象被出租給一服務器時,該服務器可擁有或者接納該對象某一段時間,例如出租時間段。將該主服務器配置成定期更新這些出租。該方法可提供一方式以保證如果一服務器有故障或者以任何一種方式而斷開了或者否則不能在群集器內(nèi)正常的操作,那么該服務器不會使其出租被更新。
在出現(xiàn)故障的情況下分布式系統(tǒng)所具有的最大問題是很難分辨出具有故障的服務器與僅是未做出響應的一個服務器之間的不同。由于某種原因而與該網(wǎng)絡斷開的任何服務器不再接納對象。即使該服務器不可以用于該群集器,但是其仍然知道在出租時間之后它將結(jié)束對所有對象的接納。當該服務器不能被用于該群集器時,其出租將不會被更新。
如果主服務器不能在一定量的時間之內(nèi)到達主服務器,那么該主服務器將放棄該對象的所有權(quán)。出租周期可以是任一適當?shù)臅r間,例如幾秒。出租周期對群集器中的所有對象都相同,或者可在對像之間變化。
利用正好一次結(jié)構(gòu)的系統(tǒng)還可以更加緊湊。操作系統(tǒng)經(jīng)常提供更加接近硬件并可提供更多控制的特定機制。然而,這種方法的一個問題就是它受到可用硬件的限制。例如,服務器的硬件群集器具有按照順序的16個服務器。由于這些系統(tǒng)需要某種緊密的硬件耦合,因此對可以包含在群集器中的服務器數(shù)目做出了限制。
另一方面,與專用硬件群集器所處理的群集相比,正好一次結(jié)構(gòu)可處理更多的群集。該結(jié)構(gòu)允許從一個專用群集器中所獲得的服務質(zhì)量的某種杠桿作用,從而允許更大的群集器。不同的服務質(zhì)量可包括例如是否通過諸如點到點連接的可靠協(xié)議來傳送消息,或者通過諸如多點傳送的可靠性稍差但多友好資源的協(xié)議來傳送消息。利用正好一次結(jié)構(gòu)的優(yōu)點是能夠平衡可量測性與容錯性,以便用戶可使該系統(tǒng)適應于特定應用的需要。
諸如硬件群集器機制的現(xiàn)有系統(tǒng)通過具有(將被提供給所述群集器的)由第二機制所支持的單一機制來嘗試高實用性解決方案。如果第一機制失敗,則存在執(zhí)行接管的一個“伙伴”,并且原來運行于第一機制的任何軟件被轉(zhuǎn)移到第二機制。
根據(jù)本發(fā)明的正好一次結(jié)構(gòu)可將主服務器分布給位于這些硬件群集器的一個中的服務器,以便對引導服務器故障進行處理變得比對軟件群集器中的故障進行處理更快。然而,該主服務器將少量的出租分布到服務器,而不管那些服務器是否位于硬件群集器或者軟件群集器中。該配置可使主服務器更快的恢復,雖然允許軟件群集器大于硬件群集器,但是軟件群集器仍包括硬件群集器。
一個這種系統(tǒng)200如圖2所示。硬件群集器218包括其包含有多個服務器220,222,224的單一機構(gòu)。例如為提高效率,該硬件群集器可被用于從該機構(gòu)上的服務器中選擇一主服務器220,。一旦選擇了主服務器220,該主服務器就可以在文件系統(tǒng)212中選擇用于對象214的主機206,該文件系統(tǒng)212可能位于軟件群集器210內(nèi)部或者外部。文件系統(tǒng)214本身可將對象214拷貝為位于文件系統(tǒng)的另一磁盤上的第二對象216,從而提供持久性。新的主機206利用高速緩存在所述主機206上的所述對象的拷貝208從文件系統(tǒng)212中取出該對象214。當經(jīng)過網(wǎng)絡204從瀏覽器或客戶機202接收到諸如服務206、216和220的請求時,如果該服務器需要訪問對象208的高速緩存拷貝,那么該服務器知道要與主服務器206連接。
利用這種系統(tǒng)的一種方法500示于圖5。使用硬件群集器502的算法選擇主服務器。該算法例如可以是硬件群集器設備的專用算法,或者可以是其只要求硬件群集器服務器一致的分布式一致性算法。此后利用主服務器504所具有的諸如Paxos算法這樣的分布式一致性算法來選擇主服務器。此后將所預選擇的主機的標識多點傳送到位于其包括有硬件群集器的軟件群集器中的另一個服務器上。該主服務器接收來自每個服務器的贊同或者不贊同,這些服務器不久將進行操作并且與群集器508相連。如果服務器與所預選擇的主服務器一致,那么將一提交信息多點傳送到群集器服務器以向該服務器通知所預選擇的主機現(xiàn)在接納該對象;否則,如果服務器不贊同新的主機是預選擇的并且再次啟動該處理。
正好一次結(jié)構(gòu)例如用于對事項記錄進行處理或者高速緩存。這種結(jié)構(gòu)例如還可以用于將管理服務器定義為正好一次對象并且出租管理服務器以便該管理服務器決不會停止工作。
圖6給出了根據(jù)本發(fā)明的群集系統(tǒng)600的另一個例子,其中,對象608用作與Java消息服務612(JMS)相關(guān)的消息存儲器。群集器610中的所有服務器606,614,616使用JMS,但是它們必須將消息傳送到消息存儲器608并且通過網(wǎng)絡604而獲得來自該消息存儲器608的任何消息。群集器610中服務器的主服務器606將“擁有”或者“接納”消息存儲器608??蛻艋蛘邽g覽器602可以向網(wǎng)絡604提出直接指向群集器610中服務器616的一個請求。服務器616僅通過經(jīng)網(wǎng)絡604將一消息傳送到位于主服務器606上的消息存儲器608中來訪問JMS。
圖7給出了可用做本發(fā)明部件或者能夠?qū)崿F(xiàn)本發(fā)明方法的計算機系統(tǒng)的方框圖700。圖7的計算機系統(tǒng)包括一處理單元704和主存儲器702。處理單元704包括單一微處理器,或者可包括多個微處理器以將計算機系統(tǒng)配置為多處理器系統(tǒng)。主存儲器702部分的存儲由處理器單元704所執(zhí)行的指令和數(shù)據(jù)。如果本發(fā)明整個或者部分是以軟件實現(xiàn)的,那么當進行操作時主存儲器702可存儲可執(zhí)行的程序代碼。主存儲器702包括動態(tài)隨機存取存儲器組(DRAM)、高速超高速緩存器、以及現(xiàn)有技術(shù)中的所大家所熟知的其它類型的存儲器。
圖7所示的系統(tǒng)進一步包括一大容量存儲器706、一外圍設備708、一用戶輸入裝置712、一便攜式存儲介質(zhì)驅(qū)動器714、一圖形子系統(tǒng)718以及一輸出顯示716。為了簡單起見,圖7所示的部件通過單一總線720相連。然而,對于本領域普通技術(shù)人員來說顯而易見的是,該部件可通過一個或多個數(shù)據(jù)傳送裝置相連。例如,處理器單元704和主存儲器702通過本地微處理器總線而連接,并且大容量存儲器706、外圍設備708、便攜式存儲介質(zhì)驅(qū)動器714、以及圖形子系統(tǒng)718通過一個或多個輸入/輸出(I/O)總線相連。由一磁盤驅(qū)動器、光盤驅(qū)動器、以及本領域所公知的其它驅(qū)動器所實現(xiàn)的大容量存儲器706是一非易失性存儲設備以用于存儲處理器單元704所使用的數(shù)據(jù)和指令。在一個實施例中,大容量存儲器706存儲用于實現(xiàn)本發(fā)明的軟件以便將其裝入主存儲器702中。
便攜式存儲介質(zhì)驅(qū)動器714與諸如軟盤的便攜式非易失性存儲介質(zhì)相連以便向/從圖7所示的計算機系統(tǒng)輸入/輸出數(shù)據(jù)和程序代碼。在一個實施例中,用于實現(xiàn)本發(fā)明的系統(tǒng)軟件被存儲在這種便攜式介質(zhì)上,并經(jīng)過該便攜式存儲介質(zhì)驅(qū)動器714輸入給所述計算機系統(tǒng)。外圍設備708可包括諸如輸入/輸出(I/O)接口的任何一種將輔助功能添加到所述計算機上的計算機支援設備。例如,外圍設備708可包括其可使計算機系統(tǒng)與網(wǎng)絡相連一網(wǎng)絡接口以及諸如調(diào)制解調(diào)器、路由器、或者本領域所公知的其它硬件這樣的其它網(wǎng)絡硬件。
用戶輸入裝置712提供部分用戶接口。用戶輸入裝置712可包括用于輸入阿爾法數(shù)字及其它信息的一阿爾法數(shù)字小鍵盤或者諸如鼠標、跟蹤筆、觸筆、或者光標方向鍵這樣的指示設備。為了顯示文本和圖形信息,圖7的計算機系統(tǒng)包括圖形子系統(tǒng)718以及輸出顯示器716。輸出顯示716包括一陰極射線管(CRT)顯示器、液晶顯示器(LCD)或者其它合適的顯示設備。圖形子系統(tǒng)718接收文本和圖形信息,并且對該信息進行處理以輸出到顯示716器。另外,圖7的系統(tǒng)包括輸出裝置710。合適的輸出裝置的例子包括擴音器、打印機、網(wǎng)絡接口、監(jiān)視器、及本領域所公知的其它輸出裝置。
一般在適用于本發(fā)明某些特定實施例的計算機系統(tǒng)中可找到圖7的計算機系統(tǒng)所包含的部件,并且其表示本領域所公知的一大類這種計算機元件。因此,圖7的計算機系統(tǒng)可以是一個人計算機、工作站、服務器、微型計算機、大型計算機、或者任何其它計算機。計算機系統(tǒng)700還可以采用不同的總線結(jié)構(gòu)、網(wǎng)絡平臺、多處理器平臺等等??梢允褂冒║nix、Linux、Windows、Macintosh OS、Palm OS及其它合適的操作系統(tǒng)的任何操作系統(tǒng)。
為了說明和描述而提出了本發(fā)明的優(yōu)選實施例。這并不是對所公開的精確結(jié)構(gòu)的詳述或者限制。顯然,對于本領域普通技術(shù)人員來說顯而易見的是可做出各種修改和變化。為了更好的說明本發(fā)明的原則以及其實際應用,可選擇并且描述該實施例,從而使本領域普通技術(shù)人員可知道本發(fā)明可用于各種實施例并且可做出其適合于特定使用目的的修改。本發(fā)明的范圍由下述權(quán)利要求以及其等效體所規(guī)定。
權(quán)利要求
1.一種用于管理網(wǎng)上對象的系統(tǒng),包括多個網(wǎng)絡服務器,每個網(wǎng)絡服務器用于與網(wǎng)絡數(shù)據(jù)源通信;以及位于所述多個網(wǎng)絡服務器中的一個引導服務器,該引導服務器包含用于從所述多個網(wǎng)絡服務器中選擇一主服務器的一個分布式一致性算法,該引導服務器包含與網(wǎng)絡數(shù)據(jù)源中的一個數(shù)據(jù)項有關(guān)的一個對象,從而使需要訪問數(shù)據(jù)項的所述多個網(wǎng)絡服務器中的任何一個都可以訪問所述主服務器上的所述對象。
2.根據(jù)權(quán)利要求1的系統(tǒng),其中,所述網(wǎng)絡服務器是從由硬件群集器服務器和軟件群集器服務器組成的一個組中選擇出來的。
3.根據(jù)權(quán)利要求1的系統(tǒng),其中,所述分布式一致性算法包括所述主服務器與所述多個服務器之間的消息循環(huán),該循環(huán)一直繼續(xù),直到所述多個網(wǎng)絡服務器中的大多數(shù)同意所述主服務器為止。
4.根據(jù)權(quán)利要求1的系統(tǒng),其中,所述主服務器包含一數(shù)據(jù)對象,該數(shù)據(jù)對象包含來自所述網(wǎng)絡數(shù)據(jù)源的數(shù)據(jù)的拷貝。
5.根據(jù)權(quán)利要求1的系統(tǒng),其中,所述主服務器包含一數(shù)據(jù)對象,該數(shù)據(jù)對象用作對網(wǎng)絡數(shù)據(jù)源中的數(shù)據(jù)項進行訪問的唯一接入點。
6.根據(jù)權(quán)利要求1的系統(tǒng),其中,所述數(shù)據(jù)項是一事項記錄。
7.根據(jù)權(quán)利要求1的系統(tǒng),其中,所述分布式一致性算法是Paxos算法。
8.一種用于管理網(wǎng)上對象的系統(tǒng),包括多個網(wǎng)絡服務器,每個網(wǎng)絡服務器用于與網(wǎng)絡數(shù)據(jù)源通信;以及位于所述多個網(wǎng)絡服務器中的一引導服務器,該引導服務器包含用于從所述多個網(wǎng)絡服務器中選擇一主服務器的一個分布式一致性算法,該引導服務器包含位于網(wǎng)絡數(shù)據(jù)源中的一個數(shù)據(jù)項的一個拷貝,從而使需要訪問所述數(shù)據(jù)項的所述多個網(wǎng)絡服務器中的任何一個都可以訪問所述主服務器上的所述拷貝。
9.一種用于管理網(wǎng)上對象的系統(tǒng),包括多個網(wǎng)絡服務器,每個網(wǎng)絡服務器用于與網(wǎng)絡數(shù)據(jù)源通信;以及所述多個網(wǎng)絡服務器中的一引導服務器,該引導服務器包含用于從所述多個網(wǎng)絡服務器中選擇一主服務器的一分布式一致性算法,該引導服務器包含對位于網(wǎng)絡數(shù)據(jù)源中的數(shù)據(jù)項進行訪問的唯一接入點,從而使需要訪問該數(shù)據(jù)項的所述多個網(wǎng)絡服務器的任何一個都必須經(jīng)過該主服務器訪問該數(shù)據(jù)項。
10.一種用于管理網(wǎng)上對象的系統(tǒng),包括一文件系統(tǒng),該文件系統(tǒng)包括至少一個數(shù)據(jù)項的拷貝;與該文件系統(tǒng)進行通信的多個服務器;以及位于所述多個服務器中的一引導服務器,該引導服務器包含用于從所述多個服務器中選擇一主服務器的一分布式一致性算法;以及位于所述多個服務器中的一主服務器,所述主服務器包含所述數(shù)據(jù)項的本地拷貝,所述主服務器可使所述多個服務器中的任何一個訪問該本地拷貝,并且在更新本地拷貝的任何時間內(nèi)更新所述文件系統(tǒng)中的所述數(shù)據(jù)項的所述拷貝。
11.根據(jù)權(quán)利要求10的系統(tǒng),其中,所述主服務器進一步用于將本地拷貝存儲在本地超高速緩存器中。
12.根據(jù)權(quán)利要求10的系統(tǒng),其中,所述多個服務器包括一群集器。
13.根據(jù)權(quán)利要求10的系統(tǒng),其中,所述文件系統(tǒng)將數(shù)據(jù)項復制在多個磁盤上。
14.一種用于管理網(wǎng)上對象的系統(tǒng),包括一文件系統(tǒng),該文件系統(tǒng)包括至少一個數(shù)據(jù)項的拷貝;與該文件系統(tǒng)進行通信的多個服務器;一硬件群集器,該硬件群集器包括位于所述多個服務器中的硬件群集器服務器,所述硬件群集器包括用于從所述多個硬件群集器中選擇一主服務器的一分布式一致性算法;位于所述硬件群集器服務器中的一引導服務器,該引導服務器包括用于從所述多個服務器中選擇一主服務器的一算法;以及位于所述多個服務器中的一主服務器,所述主服務器包括數(shù)據(jù)項的本地拷貝,所述主服務器可使所述多個服務器中的任何一個可訪問該本地拷貝并且只要更新了本地拷貝時就更新文件系統(tǒng)中的數(shù)據(jù)項的拷貝。
15.根據(jù)權(quán)利要求14的系統(tǒng),其中所述主服務器位于所述硬件群集器中。
16.一種用于管理網(wǎng)上對象的方法,包括利用分布式一致性算法從多個網(wǎng)絡服務器中選擇一主服務器;將一個數(shù)據(jù)項的拷貝從文件系統(tǒng)傳送給所述主服務器;以及通知其它網(wǎng)絡服務器包含有一個數(shù)據(jù)項拷貝的所述主服務器將被用在對網(wǎng)絡請求的處理中。
17.根據(jù)權(quán)利要求16的方法,進一步包括當主服務器上的拷貝被修改時,更新文件系統(tǒng)中的數(shù)據(jù)項的步驟。
18.根據(jù)權(quán)利要求16的方法,進一步包括限制其它網(wǎng)絡服務器經(jīng)過所述主服務器來訪問文件系統(tǒng)的步驟。
19.根據(jù)權(quán)利要求16的方法,進一步包括保證只有數(shù)據(jù)項的一個拷貝存在于該文件系統(tǒng)的外部的步驟。
20.根據(jù)權(quán)利要求16的方法,進一步包括保證數(shù)據(jù)項的一個拷貝總是存在于該文件系統(tǒng)外部的步驟。
21.根據(jù)權(quán)利要求16的方法,進一步包括如果主服務器不再接納該對象,則利用分布式一致性算法從多個網(wǎng)絡服務器中選擇新的主服務器的步驟。
22.根據(jù)權(quán)利要求16的方法,進一步包括如果主服務器不再接納該對象,則將一個數(shù)據(jù)項的拷貝從所述文件系統(tǒng)傳送給一個新的主服務器的步驟,該新的主服務器是使用所述分布式一致性算法選擇出的主服務器。
23.根據(jù)權(quán)利要求16的方法,進一步包括如果主服務器不再接納該對象,那么通知其它網(wǎng)絡服務器一個包含所述數(shù)據(jù)項的新的主服務器將被用在對網(wǎng)絡請求進行的處理中的步驟。
24.一種用于管理網(wǎng)上對象的結(jié)構(gòu),包括多個服務器,每個服務器都可高速緩存一數(shù)據(jù)對象;一文件系統(tǒng),該文件系統(tǒng)包括數(shù)據(jù)項的至少一個拷貝;一分布式一致性算法,用于從所述多個服務器中選擇一主服務器,該主服務器用于高速緩存數(shù)據(jù)對象的拷貝;以及一分布系統(tǒng),用于通知網(wǎng)絡上的服務器該主計算機包含所述數(shù)據(jù)對象的拷貝。
25.一種用于將對象出租給網(wǎng)絡上服務器的方法,包括利用分布式一致性算法從多個網(wǎng)絡服務器中選擇一主服務器;將數(shù)據(jù)對象指定給所述主服務器,被指定的主服務器在規(guī)定的時間周期內(nèi)可對數(shù)據(jù)項進行單獨的訪問;從文件系統(tǒng)中取出數(shù)據(jù)項的拷貝以送至主服務器;以及向其它網(wǎng)絡服務器通知主服務器包含數(shù)據(jù)項的拷貝以用于對網(wǎng)絡請求進行處理。
26.根據(jù)權(quán)利要求25的方法,進一步包括步驟一旦特定時間段到期了,則將該數(shù)據(jù)對象分布給主服務器另一段時間。
27.根據(jù)權(quán)利要求25的方法,進一步包括步驟一旦主服務器上的特定時間段到期了,則將該數(shù)據(jù)對象分布給新的主服務器特定的一段時間;
28.一種用于將對象出租給網(wǎng)絡上的服務器的方法,包括從硬件群集器中的多個硬件群集器服務器中選擇一主服務器;利用所述主服務器上的分布式一致性算法從多個網(wǎng)絡服務器中選擇一主服務器;將數(shù)據(jù)對象指定給主服務器,被指定的主服務器在一個規(guī)定的時間周期內(nèi)可對數(shù)據(jù)項進行單獨的訪問;從文件系統(tǒng)中取出數(shù)據(jù)項的拷貝以送至主服務器;以及向其它網(wǎng)絡服務器通知主服務器包含數(shù)據(jù)項的拷貝以用于對網(wǎng)絡請求進行處理。
29.一種用于對網(wǎng)絡上的對象的所有權(quán)進行分布的方法,包括從硬件群集器中的多個硬件群集器服務器中選擇一主服務器;利用所述主服務器上的分布式一致性算法從多個網(wǎng)絡服務器中選擇一主服務器;將數(shù)據(jù)對象指定給該主服務器,被指定的主服務器可對網(wǎng)絡上的數(shù)據(jù)對象進行單獨訪問;從文件系統(tǒng)中取出數(shù)據(jù)項的拷貝以送至主服務器;以及向其它網(wǎng)絡服務器通知主服務器包含數(shù)據(jù)項的拷貝以用于對網(wǎng)絡請求進行處理。
30.一種用于接納網(wǎng)絡上Java消息服務(JMS)的方法,包括利用分布式一致性算法來多個網(wǎng)絡服務器從中選擇一主服務器;將JMS對象指定給主服務器,該JMS對象包括一JMS消息存儲器,該JMS消息存儲器提供了唯一接入點以及網(wǎng)絡上的JMS的消息隊列;以及向網(wǎng)絡服務器通知主服務器對唯一的JMS消息存儲器進行接納。
31.根據(jù)權(quán)利要求30的方法,進一步包括在JMS消息存儲器中檢查用于多個網(wǎng)絡服務器之一的消息的步驟。
32.根據(jù)權(quán)利要求30的方法,進一步包括將來自網(wǎng)絡服務器的JMS消息傳送到位于主服務器上的JMS消息存儲器中的步驟。
33.根據(jù)權(quán)利要求30的方法,進一步包括將主服務器上的JMS消息存儲器中的消息傳送到JMS部件的步驟。
34.一種用于確保在群集器中存在對象的方法,包括使用位于多個服務器中的主服務器提供對數(shù)據(jù)對象的訪問;如果所述主服務器不能提供對所述數(shù)據(jù)對象的訪問,那么,利用分布式一致性算法從多個服務器中選擇一新的主服務器;將信息傳送給需要提供對所述數(shù)據(jù)項提供訪問的新服務器,和通知所述多個服務器中的其它服務器新的主服務器可訪問該數(shù)據(jù)對象。
35.一種用于確保群集器中管理服務器可用性的方法,包括從多個服務器中選擇一引導服務器;利用所述引導服務器上的分布式一致性算法從多個服務器中選擇一管理服務器;將管理信息從一數(shù)據(jù)源傳送給所述管理服務器并且更新該數(shù)據(jù)源中的管理信息以便使數(shù)據(jù)源中的信息與管理服務器上的信息相同;以及將所述管理服務器的標識通知給群集器中的其它服務器。
36.根據(jù)權(quán)利要求35的方法,其中,從數(shù)據(jù)源取出所述管理信息的步驟包括從一文件系統(tǒng)中取出管理信息。
37.一種用于在群集器中分布對象的方法,包括利用分布式一致性算法來從多個網(wǎng)絡服務器中選擇一主服務器;將一數(shù)據(jù)對象指定給該主服務器,被指定的該主服務器可對一個數(shù)據(jù)項進行單獨訪問;以及將一通知多點傳送到群集器中的其它服務器以通知包含所述數(shù)據(jù)項的拷貝的所述主服務器將被用在對網(wǎng)絡請求的處理中。
38.一種用于在群集器中分布對象的方法,包括利用分布式一致性算法來從多個網(wǎng)絡服務器中選擇一主服務器;連接群集器中的每個服務器以確定所選擇的主機是否可被那些服務器所接受;以及如果群集器中的所有服務器都同意所選擇的主機是可接受的,那么將一通知多點傳送到群集器中的其它服務器以通知交由所選擇的新主服務器進行負責。
39.一種計算機可讀介質(zhì),包括裝置,用于利用分布式一致性算法來從多個網(wǎng)絡服務器中選擇一主服務器;裝置,用于將一數(shù)據(jù)對象指定給所述主服務器,被指定的該主服務器可提供對一數(shù)據(jù)項的單獨訪問;裝置,用于從一文件系統(tǒng)中取出數(shù)據(jù)項的拷貝以送至主服務器;以及裝置,用于通知其它網(wǎng)絡服務器包含所述數(shù)據(jù)項拷貝的該主服務器將被用在對網(wǎng)絡請求進行的處理中。
40.一種計算機程序產(chǎn)品,該計算機程序產(chǎn)品是由一服務器計算機來執(zhí)行,用于對網(wǎng)上對象進行管理,包括計算機代碼,用于利用分布式一致性算法來從多個網(wǎng)絡服務器中選擇一主服務器;計算機代碼,用于從一文件系統(tǒng)中取出數(shù)據(jù)項的拷貝以送至主服務器;以及計算機代碼,用于通知其它網(wǎng)絡服務器包含所述數(shù)據(jù)項拷貝的該主服務器將被用在對網(wǎng)絡請求進行的處理中。
41.一種用于在群集器中分布對象的系統(tǒng),包括裝置,用于利用分布式一致性算法來從多個網(wǎng)絡服務器中選擇一主服務器;裝置,用于從一文件系統(tǒng)中取出數(shù)據(jù)項的拷貝以送至主服務器;以及裝置,用于通知其它網(wǎng)絡服務器包含該數(shù)據(jù)項拷貝的該主服務器將被用在對網(wǎng)絡請求進行的處理中。
42.一種計算機系統(tǒng),包括一處理器;由所述處理器執(zhí)行的目標碼,結(jié)構(gòu)所述目標碼,以利用分布式一致性算法來從多個網(wǎng)絡服務器中選擇一主機服務器;從一文件系統(tǒng)中取出數(shù)據(jù)項的拷貝以送至該主服務器;以及通知其它網(wǎng)絡服務器包含該數(shù)據(jù)項拷貝的該主服務器將被用在對網(wǎng)絡請求進行的處理中。
43.一種用于管理網(wǎng)上對象的方法,包括利用Paxos算法從軟件群集器中的多個網(wǎng)絡服務器中選擇一主機服務器;以及將數(shù)據(jù)對象指定給所述主服務器,該數(shù)據(jù)對象只存在于網(wǎng)絡上的所述主服務器上。
44.根據(jù)權(quán)利要求43的方法,進一步包括從一文件系統(tǒng)中取出該數(shù)據(jù)對象數(shù)據(jù)的步驟。
45.根據(jù)權(quán)利要求43的方法,進一步包括通知其它網(wǎng)絡服務器包含與所述數(shù)據(jù)項相關(guān)的對象的該主服務器將被用在對網(wǎng)絡請求進行的處理中的步驟。
46.根據(jù)權(quán)利要求43的方法,進一步包括將新主服務器的標識多點傳送至另一個網(wǎng)絡服務器的步驟。
47.根據(jù)權(quán)利要求43的方法,其中利用Paxos算法來從軟件群集器中的多個網(wǎng)絡服務器中選擇一主服務器的所述步驟包括將循環(huán)信息多點傳送到另一個網(wǎng)絡服務器。
48.一種用于接納網(wǎng)絡上Java消息服務的方法,包括利用分布式一致性算法來從多個網(wǎng)絡服務器中選擇出一主機服務器;將一JMS對象指定給所述主服務器,該JMS對象包括一JMS消息存儲器,該JMS消息存儲器提供了唯一接入點以及網(wǎng)絡上的JMS的消息隊列;以及通知網(wǎng)絡服務器該主機服務器只接納所述單獨的JMS消息存儲器。
49.根據(jù)權(quán)利要求48的方法,進一步包括在JMS消息存儲器中檢查用于多個網(wǎng)絡服務器之一的消息的步驟。
50.根據(jù)權(quán)利要求48的方法,進一步包括將來自網(wǎng)絡服務器的JMS消息傳送到位于主服務器上的JMS消息存儲器中的步驟。
51.根據(jù)權(quán)利要求48的方法,進一步包括將位于主服務器上的JMS消息存儲器中的消息傳送到JMS部件的步驟。
52.一種用于確保在群集器中存在JMS對象的方法,包括利用多個服務器中的主服務器而提供對JMS對象進行訪問,該JMS對象包括一JMS消息存儲器,該JMS消息存儲器提供了對網(wǎng)絡上的JMS進行訪問的唯一接入點以及信息隊列;如果該主服務器不能提供對該JMS對象進行訪問,那么利用分布式一致性算法來從多個服務器中選擇一新的主服務器;取出信息以送至其需要提供對該JMS對象進行訪問的新的主服務器;以及通知所述多個服務器中的其它服務器新的主服務器可提供對JMS對象的訪問。
53.一種用于將JMS對象分布給群集器中的服務器的方法,包括利用分布式一致性算法來從多個網(wǎng)絡服務器中選擇一主服務器;連接群集器中的每個服務器以確定所選擇的主機是否可被那些服務器所接受;以及如果群集器中的所有服務器都同意所選擇的主機是可接受的,那么將一通知多點傳送到群集器中的其它服務器以指交由所選擇的新主服務器進行負責。
54.一種計算機可讀介質(zhì),包括裝置,用于利用分布式一致性算法來從多個網(wǎng)絡服務器中選擇一主服務器;裝置,用于將一JMS對象分布給主服務器,所分布的該主服務器是唯一可訪問JMS的;以及裝置,通知其它網(wǎng)絡服務器該新的主服務器提供對JMS的單獨訪問。
55.一種計算機程序產(chǎn)品,該計算機程序產(chǎn)品是由一服務器計算機來執(zhí)行的,用于管理網(wǎng)上對象,包括計算機代碼,用于利用分布式一致性算法來從多個網(wǎng)絡服務器中選擇一主服務器;計算機代碼,用于將一JMS對象分布給主服務器,所分布的該主服務器是唯一可訪問JMS的;以及計算機代碼,用于通知其它網(wǎng)絡服務器該主服務器可提供對JMS的單獨訪問。
56.一種用于對群集器中的對象進行分布的系統(tǒng),包括裝置,用于利用分布式一致性算法來從多個網(wǎng)絡服務器中選擇一主服務器;裝置,用于將一JMS對象分布給主服務器,所分布的該主服務器是唯一可訪問JMS的;以及裝置,用于通知其網(wǎng)絡服務器該主服務器提供對JMS的單獨訪問。
57.一種計算機系統(tǒng),包括一處理器;由所述處理器所執(zhí)行的目標碼,結(jié)構(gòu)所述目標碼,以利用分布式一致性算法來從多個網(wǎng)絡服務器中選擇一主機服務器;將一JMS對象指定給主服務器,被指定的該主服務器提供對JMS的單獨訪問;以及通知其它網(wǎng)絡服務器該主服務器提供對JMS的單獨訪問。
58.一種用于管理網(wǎng)上對象的方法,包括利用Paxos算法從軟件群集器中的多個網(wǎng)絡服務器中選擇一主機服務器;以及將JMS消息指定給主服務器,該JMS消息存儲器僅存在于所述主服務器上。
59.根據(jù)權(quán)利要求58的方法,進一步包括通知其它網(wǎng)絡服務器該主服務器接納所述JMS消息存儲器的步驟。
60.根據(jù)權(quán)利要求58的方法,進一步包括步驟將新主服務器的標識多點傳送至另一個網(wǎng)絡服務器。
61.根據(jù)權(quán)利要求58的方法,其中利用Paxos算法來從軟件群集器中的多個網(wǎng)絡服務器中選擇一主服務器的所述步驟包括將循環(huán)信息多點傳送到另一個網(wǎng)絡服務器。
62.一種用于管理網(wǎng)上JMS對象的系統(tǒng),包括多個網(wǎng)絡服務器;以及所述多個網(wǎng)絡服務器中的一主服務器,該主服務器包括用于從所述多個網(wǎng)絡服務器中選擇主服務器的一分布式一致性算法,該主服務器包括一JMS對象以便其需要訪問JMS的多個網(wǎng)絡服務器的任何一個必須對主服務器上JMS對象進行訪問。
63.根據(jù)權(quán)利要求62的系統(tǒng),其中,所述網(wǎng)絡服務器是從由硬件群集器服務器和軟件群集器服務器所組成的這樣一組中選擇出來的。
64.根據(jù)權(quán)利要求62的系統(tǒng),其中,所述分布式一致性算法包括所述主服務器與所述多個服務器之間的循環(huán)消息,該循環(huán)一直繼續(xù)直到所述多個網(wǎng)絡服務器63的大多數(shù)同意主服務器。
65.根據(jù)權(quán)利要求48的系統(tǒng),其中所述分布式一致性算法是Paxos算法。
66.一種用于管理網(wǎng)上JMS的系統(tǒng),包括一JMS部件;與該JMS部件進行通信的多個服務器;所述多個服務器中的一主服務器,該主服務器包括用于從所述多個服務器中選擇一主服務器的分布式一致性算法;以及所述多個服務器中的一主服務器,所述主服務器包括一JMS消息存儲器,所述主服務器用于提供使所述多個服務器中的任何一個對JMS部件進行訪問。
67.根據(jù)權(quán)利要求66的系統(tǒng),其中所述多個服務器包括一群集器。
68.一種用于管理網(wǎng)上JMS的系統(tǒng),包括一JMS部件;與該JMS部件進行通信的多個服務器;一硬件群集器,該硬件群集器包括其位于所述多個服務器上的硬件群集器服務器,所述硬件群集器包括用于從所述硬件群服務器中選擇主服務器的一算法;所述硬件群集器服務器中的主服務器,該主服務器包括用于從所述多個服務器中選擇主服務器的一分布式一致性算法;以及所述多個服務器中的主服務器,所述主服務器包括一JMS消息存儲器,所述主服務器用于提供使所述多個服務器中的任何一個對JMS進行訪問。
69.根據(jù)權(quán)利要求68的系統(tǒng),其中所述主服務器位于所述硬件群集器中。
70.一種用于對網(wǎng)絡上的JMS進行管理的結(jié)構(gòu),包括多個服務器,每個服務器對JMS消息存儲器進行接納;一分布式一致性算法,用于從所述多個服務器中選擇一主服務器,該主服務器接納JMS消息存儲器;以及一分布系統(tǒng),向網(wǎng)絡上的服務器通知主計算機對JMS消息存儲器進行接納。
71.一種用于將JMS對象出租給網(wǎng)絡上的服務器的方法,包括利用分布式一致性算法來從多個硬件群集器服務器中選擇一主服務器;將JMS對象分布給該主服務器,所分布的主服務器是唯一可訪問JMS特定的一段時間;以及向其它網(wǎng)絡服務器通知該主服務器對該JMS對象進行接納。
72.根據(jù)權(quán)利要求71的方法,進一步包括一旦所述規(guī)定時間周期屆滿,則將該JMS對象指定給主服務器長達另一段時間的步驟。
73.根據(jù)權(quán)利要求72的方法,進一步包括一旦所述主服務器上規(guī)定的時間周期屆滿,則將所述JMS對象指定給新的主服務器長達另一個規(guī)定時間周期的步驟。
74.一種用于將JMS對象出租給網(wǎng)絡上的服務器的方法,包括從硬件群集器中的多個硬件群集器服務器中選擇一引導服務器;利用所述引導服務器上的分布式一致性算法來從多個網(wǎng)絡服務器中選擇一主服務器;將JMS對象指定給該主服務器,被指定的主服務器能夠在規(guī)定的一個時間周期內(nèi)提供對JMS的單獨訪問;以及通知其它網(wǎng)絡服務器該主服務器接納所述JMS對象。
75.一種用于對網(wǎng)絡上的對象進行分布的方法,包括從硬件群集器中的多個硬件群集器服務器中選擇一引導服務器;利用所述引導服務器上的分布式一致性算法來從多個網(wǎng)絡服務器中選擇一主服務器;將JMS對象指定給該主服務器,被指定的主服務器可以提供對JMS的單獨訪問;以及通知其它網(wǎng)絡服務器該主服務器接納所述JMS對象。
全文摘要
一種用于對位于包含一個文件系統(tǒng)的群集網(wǎng)絡中的對象進行管理的系統(tǒng),該文件系統(tǒng)包含至少一個數(shù)據(jù)對象的拷貝(214)。該系統(tǒng)可以包括與文件系統(tǒng)(212)通信的多個群集服務器。選擇一個引導服務器,其包含用于選擇主服務器(206)的分布式一致算法,并在執(zhí)行該算法循環(huán)時利用多點傳送。所選擇的主服務器(206)可以包含諸如本地超高速緩存器中的數(shù)據(jù)對象(214)的拷貝(208),以便將對本地拷貝(208)的訪問提供給群集器中的任一其它服務器。在文件系統(tǒng)(212)中可以更新由主服務器(206)接納的項的變化。如果主服務器(206)變得不能接納對象,可以使用分布式一致算法選擇新主服務器,并利用多點傳送將新主服務器通知給其它的服務器(216、218)。
文檔編號G06F13/00GK1568467SQ02820026
公開日2005年1月19日 申請日期2002年9月5日 優(yōu)先權(quán)日2001年9月6日
發(fā)明者迪安·B·雅各布斯, 埃里克·哈爾彭 申請人:Bea系統(tǒng)公司