專利名稱:具有軟實時響應(yīng)和連續(xù)可用性的分布式計算系統(tǒng)簇模型的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及分布式計算機(jī)處理系統(tǒng),具體地說是關(guān)于多計算單元的簇模型,它利用一個虛擬共享存儲器來提供實時響應(yīng)和連續(xù)可用性。
背景技術(shù):
隨著科學(xué)、工程和商業(yè)應(yīng)用領(lǐng)域日趨復(fù)雜,要求提供大計算能力的系統(tǒng)的呼聲高漲。對于許多這類應(yīng)用而言,大中型計算系統(tǒng)以非常高的速度進(jìn)行大量運算,代表了一種傳統(tǒng)的解決方案。但這類大中型計算機(jī)有著明顯的缺點。主要是它們的價格較高,部分原因是由于它們使用了高費用的定制硬件和為每個特殊應(yīng)用專門研制的軟件;此外,大中型計算機(jī)可擴(kuò)展性較差,不能隨著需求的增長而提供附加功能;大中型計算機(jī)的另一個缺點是,它們在失敗時表現(xiàn)為孤立無助,對于那些對系統(tǒng)可用性要求較高的應(yīng)用程序,例如電信應(yīng)用來說,提供冗余的計算系統(tǒng)是十分必要的,因此也就更增加了這類系統(tǒng)的費用與復(fù)雜性。
作為大中型計算系統(tǒng)的替代,發(fā)展了分布式計算系統(tǒng),多臺計算機(jī)(如PC機(jī)或工作站)聯(lián)成客戶-服務(wù)器網(wǎng)絡(luò)。一個分布式計算系統(tǒng)的總體計算能力由各個計算機(jī)的總和推導(dǎo)而得。這種分布式計算系統(tǒng)的最主要的優(yōu)點是降低了費用和可擴(kuò)展性好,因為每臺計算機(jī)可以使用標(biāo)準(zhǔn)的批量生產(chǎn)的硬件和軟件,而且當(dāng)計算系統(tǒng)需要擴(kuò)大時,只需要簡單地加一些計算機(jī)到網(wǎng)絡(luò)中即可。分布式計算機(jī)的缺點是它很難研制下述軟件應(yīng)用程序,這類程序可以協(xié)調(diào)在各個計算機(jī)上分別運行的完全不同的進(jìn)程,這些進(jìn)程包括,各計算機(jī)間的數(shù)據(jù)共享,多執(zhí)行單元的建立,進(jìn)程的調(diào)度和同步;分布式計算系統(tǒng)的另一個缺點是它提供容錯能力,當(dāng)計算機(jī)執(zhí)行需長時間運行的并行應(yīng)用程序時,一次失敗將導(dǎo)致執(zhí)行時間的增加或計算機(jī)個數(shù)的增加,而一臺計算機(jī)的崩潰可能導(dǎo)致整個運行的失敗。
各種容錯并行程序模型被研制出來著手解決這些問題和分布式計算機(jī)的其它缺點。Linda就是這類模型之一,它是基于虛擬共享存儲器的并行計算模型。在Linda中,應(yīng)用程序中的各個進(jìn)程通過與稱作“元組空間”的共享存儲器的通信互相協(xié)作。在元組空間內(nèi)的每個“元組”包含一系列賦予了類型的數(shù)據(jù)元素,它們可以是任何一種格式的,包括整型、浮點型、字符型、數(shù)組等等。進(jìn)程用四種基本操作來訪問元組空間,這四種基本操作是“out”用來創(chuàng)建元組;“eval”用于創(chuàng)建進(jìn)程;“in”用于破壞性恢復(fù);“ rd”用于非破壞性恢復(fù)。Linda的一個優(yōu)點是經(jīng)由元組空間的通信和同步在某種意義上是匿名的,在交互時進(jìn)程間無需互相識別。Linda的一種變形通稱為PersistentLinda或Plinda,支持容錯,還可以用空閑的計算機(jī)做并行計算。Plinda在Linda基本操作中增加了一組擴(kuò)充操作,它們通過周期性地檢查點操作(也即,保存),將元組空間保存到非易失存儲器中(也即,磁盤)來提供容錯。這樣當(dāng)系統(tǒng)突然出現(xiàn)故障時,用這種方法可以恢復(fù)元組空間。
雖然這些使用虛擬共享存儲器的容錯并行程序模型,對于解決某些類型的數(shù)學(xué)和(或)科學(xué)問題是有利的,但是對于許多其它實時應(yīng)用程序它們卻無能為力。具體地說,有些應(yīng)用程序要求計算精度高,如高能物理數(shù)據(jù)的分析或金融證券價格的計算。對于這些應(yīng)用程序,只要計算的結(jié)果是精確的,為了要周期性地維護(hù)系統(tǒng)、升級或(和)系統(tǒng)失敗而使系統(tǒng)利用率較低也成為可接受的交換條件。Linda或PLinda程序模型很適用于這類應(yīng)用程序。另一方面,有些實時應(yīng)用程序要求較高的系統(tǒng)利用率并因此可以接受稍低一點的計算精度。例如,對于一個電信服務(wù)器來說,偶爾丟失一個數(shù)據(jù)包是可以接受的,只要所有系統(tǒng)時間上的可利用率接近100%。這樣高的可利用率能允許的系統(tǒng)停機(jī)時間很短(例如,每年少于3分鐘)。結(jié)果是,很難對它們安排維護(hù)和(或)系統(tǒng)升級,而且任何一種全局性系統(tǒng)故障都是完全不可接受的。
因此,急需一種具備實時響應(yīng)和連續(xù)工作能力的,帶有容錯并行程序模型的分布式計算系統(tǒng)。
發(fā)明內(nèi)容
本發(fā)明是針對分布式計算系統(tǒng)的,它在克服現(xiàn)有技術(shù)的眾多缺陷的同時提供了實時響應(yīng)和連續(xù)工作的能力。
分布式計算系統(tǒng)的一個實施例包括一個帶有主虛擬共享存儲器的主服務(wù)器和一個帶有備份虛擬共享存儲器的備份服務(wù)器。主服務(wù)器周期地給備份服務(wù)器提供一個狀態(tài)表,以使虛擬共享存儲器與備份虛擬共享存儲器同步。眾多的客戶機(jī)資源通過應(yīng)用網(wǎng)絡(luò)技術(shù)與主服務(wù)器和備份服務(wù)器相連。客戶機(jī)資源又包括多個工作者進(jìn)程,每個工作者進(jìn)程適用于對存放在主虛擬共享存儲器中的一個數(shù)據(jù)對象獨立地執(zhí)行一種操作,而不需要在它與數(shù)據(jù)對象之間進(jìn)行預(yù)分配,當(dāng)主服務(wù)器不能使用時,工作者進(jìn)程會對存放在備份虛擬共享存儲器中的相應(yīng)數(shù)據(jù)對象執(zhí)行操作??蛻魴C(jī)資源還包括多個輸入、輸出(I/O)端口,用它們來接收輸入數(shù)據(jù)包和傳送輸出數(shù)據(jù)包。
工作者進(jìn)程有多種類型,每個工作者進(jìn)程完成不同類型的功能。有一類工作者進(jìn)程又包括一個輸入工作者進(jìn)程,用來從I/O端口檢索輸入數(shù)據(jù)包,并將相應(yīng)的數(shù)據(jù)對象存入主虛擬共享存儲器;另一類工作者進(jìn)程則包括一個輸出工作者進(jìn)程用來從主虛擬共享存儲器中移出數(shù)據(jù)對象和將數(shù)據(jù)包傳遞到I/O端口;其余的工作者進(jìn)程用來從所述的主虛擬共享存儲器中取出一個符合預(yù)定義模式的數(shù)據(jù)對象,并按預(yù)定義的函數(shù)處理該數(shù)據(jù),再將處理過的數(shù)據(jù)對象返回到主虛擬共享存儲器中。
通過對下面的一個優(yōu)選實施例的詳細(xì)說明,本領(lǐng)域的技術(shù)人員將會對分布式計算系統(tǒng)簇模型有一個較完整的了解,對它的另一些優(yōu)點和目標(biāo)更有認(rèn)識。參看附頁中的附圖,首先粗略介紹一下附圖。
圖1是一個框圖,它描述了本發(fā)明分布式計算系統(tǒng)簇模型的一個
具體實施例方式
本發(fā)明滿足了分布式計算系統(tǒng)有一個容錯、并行程序模型,且該模型能提供實時響應(yīng)和連續(xù)工作能力的需要。
首先參看圖1,此框圖是按本發(fā)明的實施例來描述的分布式計算系統(tǒng)簇模型。本分布式計算系統(tǒng)有多個節(jié)點,包括主服務(wù)器22,備份服務(wù)器32和多臺客戶機(jī)(1到N臺)42、44、48,它們通過集線器14、16連成一個局域網(wǎng)。主服務(wù)器22和備份服務(wù)器32互相聯(lián)通,它們還和客戶機(jī)42、44、48連通,后者應(yīng)用數(shù)據(jù)交換協(xié)議實現(xiàn)元組空間的語義操作(在下面說明)。該元組空間應(yīng)用協(xié)議基于下層常規(guī)網(wǎng)絡(luò)協(xié)議,如以太網(wǎng)或令牌環(huán),并與之兼容。主服務(wù)器22,備份服務(wù)器32和客戶機(jī)42、44、48分別是網(wǎng)絡(luò)中的一個通信節(jié)點。
圖1的分布式計算系統(tǒng)中的每個通信節(jié)點可能包括一個獨立的計算機(jī)(如PC、工作站等等),或者在單個計算機(jī)中運行的各個獨立的進(jìn)程給出多個通信節(jié)點。例如,主服務(wù)器22和一個或多個客戶機(jī)42、44、48可能實際上在一臺計算機(jī)中。每臺這種計算機(jī)通常包括一臺處理機(jī)和隨機(jī)存儲器(RAM)。在這里所用的術(shù)語“處理機(jī)”是廣義的,包括了微處理機(jī),數(shù)字信號處理機(jī)(DSP),應(yīng)用程序?qū)S眉呻娐?ASIC),字段可編程門陣列處理機(jī)等等。每個客戶機(jī)42,44,48以及主服務(wù)器22和備份服務(wù)器32又包括多個輸入輸出(I/O)端口。這些端口通過節(jié)點將數(shù)據(jù)和(或)信號傳送給網(wǎng)絡(luò)或從網(wǎng)絡(luò)上獲取得到數(shù)據(jù)和(或)信號,然后這些I/O端口本身還可以連到其它外部系統(tǒng)中,如其它計算機(jī)網(wǎng)絡(luò)或因特網(wǎng)??刂婆_12通過節(jié)點14或16與主、備份服務(wù)器22、32相連,它包括一個在計算機(jī)上運行的進(jìn)程,類似于客戶機(jī)42、44、48。和客戶機(jī)不同的是,控制臺12有它的特殊功能,它允許用戶往網(wǎng)絡(luò)中輸入管理命令和信息,還能監(jiān)控網(wǎng)絡(luò)的運行狀態(tài)??刂婆_還可以連入輸入設(shè)備(例如鍵盤,鼠標(biāo),掃描儀等)和一臺視頻監(jiān)視器或其它可視化顯示設(shè)備,以便為用戶提供一個可視化輸出。
主服務(wù)器22還包括一個非易失存儲器,也即磁盤存儲器26,和一個隨機(jī)存取存儲器(RAM),每臺客戶機(jī)42、44、48以及控制臺12可以用元組空間應(yīng)用協(xié)議來訪問RAM,它提供了一個虛擬共享存儲器(在此稱作元組空間)24。類似地,備份服務(wù)器32還包括一個非易失存儲器,也即磁盤存儲器36,和一個隨機(jī)存取存儲器(RAM),它可以被客戶機(jī)42、44、48以及控制臺12訪問,它提供了一個虛擬共享存儲器(即備份元組空間)34。如下所述,虛擬共享存儲器24和備份虛擬共享存儲器34都提供了一個空間用以存放數(shù)據(jù)對象(即元組)。這些元組是混雜的,意思是不同數(shù)據(jù)類型的數(shù)據(jù)對象可以共享虛擬共享存儲器24。通過通信于主服務(wù)器22和備份服務(wù)器32間的一個狀態(tài)表可以使主服務(wù)器22的虛擬共享存儲器24與備份服務(wù)器32的備份虛擬共享存儲器同步。元組空間可以用作關(guān)系型數(shù)據(jù)庫,簇數(shù)據(jù)庫,數(shù)據(jù)對象庫等等的編程接口,虛擬共享存儲器24,34的分配取決于執(zhí)行的數(shù)據(jù)庫類型。無論何時,只要在主服務(wù)器22上元組空間中元組的狀態(tài)發(fā)生改變,也即增加,改變或刪除一個元組,那么狀態(tài)表就被更新,于是在備份服務(wù)器32中的元組空間也作相應(yīng)的改變。狀態(tài)表也可能還存放在磁盤存儲器26中,以提供一個元組空間的永久存檔,當(dāng)主服務(wù)器22或備份服務(wù)器32或它們兩者同時發(fā)生故障時,可以訪問它。
每臺客戶機(jī)42、44、48都有處理資源用來在元組空間中檢索、存儲和處理數(shù)據(jù)對象(也即元組)。在客戶機(jī)和元組間沒有指定關(guān)系,所以任一客戶機(jī)可以存取任一元組,只要在此客戶機(jī)上運行的工作者進(jìn)程類型與某個元組相匹配(下面還要詳細(xì)說明)。通過簡單地連接附加的客戶機(jī)到集線器14或16上,就可以在網(wǎng)絡(luò)中追加處理資源,而且提供客戶機(jī)42、44、48的計算機(jī)在處理能力和(或)速度上不必相同。
參看圖2,它是一個邏輯示意圖,用來說明在虛擬共享存儲器或稱元組空間104中,涉及數(shù)據(jù)對象的示范操作。元組空間104包括多個元組,其中第一類元組122、124、126、128(用圓圈表示)具有同樣的數(shù)據(jù)格式;第二類元組132、134、136(用正方形表示)也具有相同的數(shù)據(jù)格式,但不同于第一類元組。為敘述的簡化,只列出了兩類元組,但必須指出,對于在元組空間可能出現(xiàn)的元組的類型數(shù)沒有任何限制。每一類元組有著不同的數(shù)據(jù)格式,它們用來表示不同類型的信息。邏輯示意圖還描述了多個工作者進(jìn)程112、114、116、118,它們可能在一個或多個客戶機(jī)上運行(如上所述)。每一個工作者進(jìn)程在元組空間104中的一個元組上執(zhí)行一種類型的操作。例如,工作者進(jìn)程從元組空間104檢索第一類元組122,然后對此元組中的數(shù)據(jù)作某些處理,再返回一個第二類元組132到元組空間104中。在示范的第二類元組132中的數(shù)據(jù)已從第一類變換成第二類。如上所述,在主服務(wù)器22上運行的主進(jìn)程106維護(hù)元組空間104的狀態(tài),并給運行在備份服務(wù)器上的備份進(jìn)程108提供一個狀態(tài)表110。每當(dāng)元組空間104有變化時,狀態(tài)表110的一個拷貝將被傳遞。
某些要求高的數(shù)據(jù)對象,比如系統(tǒng)配置設(shè)置或用戶記賬或票據(jù)信息,它們可能希望在主服務(wù)器和備份服務(wù)器22、32都有故障時仍然可以恢復(fù)原樣。為此目的,工作者進(jìn)程在建元組時,會將它打上“不變的”標(biāo)識。除了將它們拷貝到虛似共享存儲器中外,主和備份服務(wù)器22、23還將這種不變的元組的內(nèi)容存放到非易失存儲器中,如磁盤或閃存中。當(dāng)一臺或二臺服務(wù)器都有故障需要恢復(fù)時,存在非易失存儲器中的數(shù)據(jù)就用來重建虛擬共享存儲器中的不變元組。
元組空間里,在元組上運行的操作可以分組成為事務(wù)。更具體地說,一個事務(wù)包括一組操作,它們具有原子性,隔離性和持久性。原子性指的是在一個事務(wù)中的所有操作必須都起作用(即提交),或一點不執(zhí)行(即失敗)。因此,沒有部分執(zhí)行一個事務(wù)之說。隔離性指的是,即使有多個事務(wù)在同時運行,在一個事務(wù)中的操作運行時就象沒有其它事務(wù)在同時運行。持久性指的是當(dāng)一個事務(wù)提交,它的作用就一直保留,而不管以后可能出現(xiàn)的任何故障。應(yīng)該清楚,只有元組被標(biāo)識為不變的,也即它的內(nèi)容存在磁盤或其它穩(wěn)定介質(zhì)上時,事務(wù)才是持久的。只要應(yīng)用恰當(dāng),即使硬件或軟件發(fā)生不可預(yù)料的故障,事務(wù)保證在元組空間里數(shù)據(jù)一致。這使故障的恢復(fù)比其它系統(tǒng)更有效(在某些情況下,成為可能),并有助于系統(tǒng)的高利用率,下面還要說明。此外,在主服務(wù)器故障恢復(fù)期間,主和備份服務(wù)器22、32,以及客戶機(jī)42、44、48與備份服務(wù)器間的數(shù)據(jù)傳送協(xié)議保證在客戶機(jī)和主服務(wù)器有故障時保留事務(wù)的性能。
圖3描述的是包含一個簡單事務(wù)的示范工作者進(jìn)程300。在302步,工作者進(jìn)程從元組空間104取出一個有用元組。這一步可能執(zhí)行的是Linda“l(fā)n”或“rd”操作,對于一個元組,選擇一種類型的模式作為變量,并用聯(lián)想的方法將元組空間104中匹配該模式的某元組檢索出來。如果執(zhí)行的是“in”操作,這個元組就被破壞,也即從元組空間永遠(yuǎn)消除。相反,如果執(zhí)行的是“rd”操作,此元組的備份保留在這個元組空間。正如前面所指出的,工作者進(jìn)程和元組間沒有分配和映射關(guān)系,任何工作者進(jìn)程可以取出任何有用的元組,只要它匹配在工作者進(jìn)程中定義的模式。在304步,通過運行預(yù)定函數(shù)對該元組中的數(shù)據(jù)進(jìn)行處理。多個工作者進(jìn)程可能運行相同的函數(shù),或者每個工作者進(jìn)程分別運行單獨的函數(shù)。在本發(fā)明的優(yōu)選實施例中,元組空間允許有多個線程,因而一個單獨工作者進(jìn)程可以運行多個函數(shù)。在306步,工作者進(jìn)程有了運行結(jié)果,于是一個新的元組返回到元組空間104。這一步可能運行Linda“out”操作,一個類型表達(dá)式序列作為變量,由該序列構(gòu)成一個新的元組,并將它插入元組空間。此后,工作者進(jìn)程回到開頭,重復(fù)它自己的工作。用這種方式,工作者進(jìn)程不斷地取出可用元組并對它們作相應(yīng)處理。必須說明,較復(fù)雜的事務(wù)可能包括多個“in”、“rd”和“out”操作。
通常,工作者進(jìn)程不維護(hù)任何關(guān)于元組的狀態(tài)數(shù)據(jù),在工作者進(jìn)程失敗時,處理中的任何中間數(shù)據(jù)結(jié)果可能丟失。依據(jù)事務(wù)的特性,元組空間的內(nèi)容將或者是工作者進(jìn)程完整的期望結(jié)果,或者是回到工作者進(jìn)程剛剛開始處理事務(wù)前一刻的情況。后一種情況,另一個(相同類型的)工作者進(jìn)程可用來運行該事務(wù)。
因為分布式計算系統(tǒng)希望在實時處理環(huán)境中工作,故提供了專門的工作者進(jìn)程來執(zhí)行輸入輸出功能。圖4圖示的是一個示范輸入工作者進(jìn)程400,請參看圖1的框圖。就象在技術(shù)上大家所熟知的,在主服務(wù)器22,備份服務(wù)器32或客戶機(jī)42、44、48的任一I/O端口接收到的輸入數(shù)據(jù)包將被寫入提供輸入緩沖區(qū)的存儲空間。通信節(jié)點的操作系統(tǒng)通常包括應(yīng)用程序接口(API),它們用來從輸入緩沖區(qū)中恢復(fù)數(shù)據(jù)包。在402步,輸入工作者進(jìn)程為要接收的數(shù)據(jù)包的出現(xiàn)檢查I/O端口的輸入緩沖區(qū)。下一步,404步,輸入工作者進(jìn)程測定是否出現(xiàn)數(shù)據(jù)包,如果數(shù)據(jù)包沒出現(xiàn),輸入工作者進(jìn)程將等待直至一個數(shù)據(jù)包到達(dá)。當(dāng)一個數(shù)據(jù)包到達(dá)輸入緩沖區(qū),處理接到406步,從輸入緩沖區(qū)中恢復(fù)數(shù)據(jù)包。在408步,數(shù)據(jù)包轉(zhuǎn)換成一個元組,再用Linda“out”操作將它插入元組空間104。此后輸入工作者進(jìn)程返回到開頭,再重復(fù)以上步驟。通過輸入工作者進(jìn)程的工作,任何被分布式計算系統(tǒng)從外部系統(tǒng)接收到的輸入數(shù)據(jù)包都會存入元組空間104以做進(jìn)一步處理。
圖5圖示的是一個示范的輸出工作者進(jìn)程500,請參看圖1的框圖。正如在技術(shù)上大家所熟知的,從主服務(wù)器22,備份服務(wù)器32或客戶機(jī)42、44、48的任一I/O端口發(fā)送的輸出數(shù)據(jù)包將寫入提供輸出緩沖區(qū)的存儲空間。通信節(jié)點的操作系統(tǒng)通常包括設(shè)備驅(qū)動程序,用來將輸出數(shù)據(jù)包加載到輸出緩沖區(qū)。在502步,輸出工作者進(jìn)程用Linda“in”操作從元組空間104取出一個可用的元組,此操作用聯(lián)想的方式從元組空間104檢索出一個匹配某種類型模式的元組來。接著,在504步,輸出工作者進(jìn)程將包含檢索出來的元組的數(shù)據(jù)包加載到輸出緩沖區(qū)。然后輸出工作者進(jìn)程返回到開頭并重復(fù)以上步驟。通過輸出工作者進(jìn)程的工作,任何包含被完整處理過的數(shù)據(jù)的元組都轉(zhuǎn)換成數(shù)據(jù)包,并從分布式計算系統(tǒng)傳送到外部系統(tǒng)。
如上所述,任何節(jié)點與元組空間的通信與已知的網(wǎng)絡(luò)協(xié)議相符,按照這類協(xié)議,在節(jié)點間通信的數(shù)據(jù)幀,在其頭塊規(guī)定了一個目的地地址,再參看圖1,當(dāng)一臺客戶機(jī)傳送一個數(shù)據(jù)幀到主服務(wù)器22,比如寫一個元組到元組空間,其頭塊要確認(rèn)在數(shù)據(jù)幀頭塊中目的地是主服務(wù)器。傳送節(jié)點在傳送數(shù)據(jù)幀時啟動一個計時器,主服務(wù)器22將返回一個確認(rèn)到客戶機(jī)以反映數(shù)據(jù)幀已滿意的接收。在分布式計算機(jī)運行期間,如果主服務(wù)器22出現(xiàn)故障,就沒有確認(rèn)返回到傳送節(jié)點。如果計時器測定在預(yù)定周期里沒有收到確認(rèn),傳送節(jié)點將重新傳送數(shù)據(jù)幀,此數(shù)據(jù)幀的頭塊里規(guī)定了目的地為備份報務(wù)器32。因為備份元組空間34等同于主元組空間24,所以即使主服務(wù)器22發(fā)生故障,分布式計算系統(tǒng)繼續(xù)運行而無影響。當(dāng)主服務(wù)器22回到運行狀態(tài),備份服務(wù)器會傳遞一個狀態(tài)表的拷貝給主服務(wù)器,重新使這二個元組空間24、34同步。
上述的分布式計算系統(tǒng)有著突出的優(yōu)點,由于工作者進(jìn)程和元組間沒有分配關(guān)系,每個工作部件都被當(dāng)作虛似處理線程的一部分。在傳統(tǒng)的計算機(jī)結(jié)構(gòu)中,一個工作部件被當(dāng)作預(yù)定義的指令線程的一部分。傳統(tǒng)的多任務(wù)環(huán)境有多個同時執(zhí)行的線程,它們在同一個程序里,每個線程處理不同的事務(wù)或信息。相反,本分布式計算系統(tǒng)的元組空間提供一個虛擬處理線程,因而一個工作部件可以被視為多個工作者進(jìn)程運行在不同的計算機(jī)上。這種虛擬處理線程比傳統(tǒng)的計算機(jī)結(jié)構(gòu)有著明顯的優(yōu)點,用術(shù)語來說,可靠、可擴(kuò)展和加載平衡性強(qiáng)。
具體地說,本分布式計算系統(tǒng)由于分別在主和備份服務(wù)器上有了重復(fù)的元組空間24、34,從而使該系統(tǒng)具有高可靠性和連續(xù)工作的能力。如果主服務(wù)器22或備份服務(wù)器32不能用了,比如由于故障或日常維護(hù),本分布式計算系統(tǒng)會繼續(xù)運行而不會有顯著的影響。任何客戶機(jī)42、44、48的故障或正在執(zhí)行的工作者進(jìn)程的失敗,只會影響到正在被那臺客戶機(jī)處理的單個元組,而不會影響到整個系統(tǒng)。在最壞的情況下,個別輸入數(shù)據(jù)包可能丟失(例如一個電話呼叫),但這對許多應(yīng)用程序來說是可以接受的。
還有,本分布式計算系統(tǒng)做到自然加載平衡。由于在工作者進(jìn)程和元組間沒有分配關(guān)系,在元組上做的工作變成分布在可用的客戶機(jī)資源間,作為工作者進(jìn)程自身特點的自然產(chǎn)物。類似地,當(dāng)需要時可隨時創(chuàng)建工作者進(jìn)程以適應(yīng)加載中的變化。個別工作者進(jìn)程可提供測定通過系統(tǒng)的數(shù)據(jù)吞吐率的功能,比如測定一個元組在被工作者進(jìn)程取出之前存留在元組空間的總計時。如果總計時超過一個預(yù)定的時間(也即工作太多,工作者不夠),工作者進(jìn)程可以創(chuàng)建一個附加工作者進(jìn)程;相反,如果總計時低于預(yù)定限(也即工作太少,工作者太多),工作者進(jìn)程可終止一個工作者進(jìn)程。用這種方法,可以調(diào)整吞吐率。
客戶機(jī)和服務(wù)器間數(shù)據(jù)傳輸協(xié)議的特性以及服務(wù)器進(jìn)程的結(jié)構(gòu)使“軟”實時處理成為可能。它不象“硬”實時處理那樣在工作部件的處理方面有著嚴(yán)格的時間限,本分布式計算系統(tǒng)努力確保在某I/O端口所需求的數(shù)據(jù)包的接收和從某I/O端口發(fā)送一個相應(yīng)的數(shù)據(jù)包之間的時間延遲,對大多數(shù)事務(wù)來說,低于某可調(diào)的限制。通過調(diào)整在元組空間運行的工作者進(jìn)程數(shù)可以達(dá)到上述目的,如果處理延遲超過預(yù)先規(guī)定的限制,就在那里加上一個附加工作者進(jìn)程?!败洝睂崟r處理可被多類應(yīng)用程序所接受,它們不需要處理在嚴(yán)格的時間限中進(jìn)行,比如電話通信應(yīng)用程序。
分布式計算系統(tǒng)還提供了高可擴(kuò)展性??蛻舳擞嬎銠C(jī)資源可以隨時加入該網(wǎng)絡(luò)以增強(qiáng)系統(tǒng)的能力,其主要限制決定于集線器14,16的交換能力,新的功能可以移植到該網(wǎng)格,只要簡單地加一個新的或不同的工作者進(jìn)程到客戶端計算機(jī)資源中。
必須說明,上述的分布式計算系統(tǒng)特別適合于各種實時應(yīng)用程序。隨便舉個例子,本分布式計算系統(tǒng)可用作電話通信服務(wù)器,交換器或服務(wù)交換點(SSP),后者處理許多中繼線間的電話呼叫的交換。正如在技術(shù)上眾所周知的,在SSP間通信的窄頻交換信號,在中繼線上標(biāo)識有目的地和其它與電話往來有關(guān)的信息。SSP接收交換信號數(shù)據(jù)包并按各種路由算法確定電話往來的路由。按本分布式計算系統(tǒng)的一個實施例構(gòu)成的SSP可包括多個工作者進(jìn)程,它執(zhí)行基于虛擬處理線程的算法。例如,這個SSP可包括一個輸入工作者進(jìn)程,它接收輸入交換信號,并將相應(yīng)的元組寫入元組空間;另一個工作者進(jìn)程可取出元組,執(zhí)行初步處理,并將修改后的元組寫入元組空間,再一個工作者進(jìn)程可取出修改后的元組,做進(jìn)一步處理,并將進(jìn)一步修改后的元組寫入元組空間;最后,一個輸出工作者進(jìn)程取出進(jìn)一步修改后的元組,生成一個輸出交換信號,用來控制有關(guān)電話呼叫的路由。其它許多實時應(yīng)用程序也同樣能獲益于本分布式計算系統(tǒng),比如因特網(wǎng)協(xié)議集線器,路由器,交換器,Web服務(wù)器,語音處理器,電子郵件服務(wù)器等等。本分布式計算系統(tǒng)特別適用于高可利用性電話通信應(yīng)用程序,因為它允許偶爾丟失已提交的事務(wù),有利于當(dāng)部分系統(tǒng)出現(xiàn)故障時迅速恢復(fù)系統(tǒng)(也即維護(hù)服務(wù)可用性好)。
有了這些對一個分布式計算系統(tǒng)簇模型的優(yōu)選實施例的說明,相信本領(lǐng)域的技術(shù)人員能看出本發(fā)明達(dá)到了它的目的。還要說明的是在本發(fā)明的實質(zhì)和范圍內(nèi),可以對實施例做各種修改、改進(jìn)和替代。本發(fā)明由下面的權(quán)利要求書來定義。
權(quán)利要求
1.一個分布式計算系統(tǒng),包括一臺帶主虛擬共享存儲器的主服務(wù)器;一臺帶備份虛擬共享存儲器的備份服務(wù)器,所述的主服務(wù)器周期性的給所述的備份服務(wù)器提供一個狀態(tài)表,以使所述的虛擬共享存儲器與所述的備份虛擬共享存儲器同步;以及至少一臺客戶機(jī),它通過網(wǎng)絡(luò)與所述的主服務(wù)器和所述的備份服務(wù)器相連,所述的至少一臺客戶機(jī)包括至少一個工作者進(jìn)程,該進(jìn)程適用于對至少一個被存放在所述的主虛擬共享存儲器和所述的備份虛擬共享存儲器至少其中之一中的數(shù)據(jù)對象獨立地執(zhí)行一種操作,而無需將所述的至少一個工作者進(jìn)程預(yù)先分配給所述的至少一個數(shù)據(jù)對象;其特征在于,當(dāng)所述的主服務(wù)器和所述的備份服務(wù)器中的一個不能使用時,則所述的至少一個工作者進(jìn)程對在所述的主虛擬共享存儲器和所述的備份虛擬共享存儲器中仍能使用的一個中存放的所述至少一個數(shù)據(jù)對象執(zhí)行所述的操作。
2.根據(jù)權(quán)利要求1的分布式計算系統(tǒng),其特征在于所述的至少一臺客戶機(jī)還包括多個輸入/輸出(I/O)端口,它們適用于接收輸入數(shù)據(jù)包和傳送輸出數(shù)據(jù)包。
3.根據(jù)權(quán)利要求2的分布式計算系統(tǒng),其特征在于所述的至少一個工作者進(jìn)程還包括一個輸入工作者進(jìn)程,它適用于從所述多個I/O端口中的至少一個中檢索一個數(shù)據(jù)包,并將相應(yīng)的數(shù)據(jù)對象存入所述的主虛擬共享存儲器和所述的備份虛擬共享存儲器的至少其中之一中。
4.根據(jù)權(quán)利要求2的分布式計算系統(tǒng),其特征在于所述的至少一個工作者進(jìn)程還包括一個輸出工作者進(jìn)程,它適用于從所述的主虛擬共享存儲器和所述的備份虛擬共享存儲器的至少其中之一中移出一個數(shù)據(jù)對象,并將一個數(shù)據(jù)包傳送到所述的多個I/O端口中的一個中去。
5.根據(jù)權(quán)利要求1的分布式計算系統(tǒng),其特征在于所述的至少一個客戶機(jī)還包括提供所述的至少一個工作者進(jìn)程的可執(zhí)行的軟件指令,該進(jìn)程包括從所述的主虛擬共享存儲器和所述的備份虛擬共享存儲器的至少其中之一中,獲取一個具有預(yù)定義模式的數(shù)據(jù)對象;按預(yù)定義的函數(shù)處理該數(shù)據(jù)對象;以及將處理后的數(shù)據(jù)對象返回到所述的主虛擬共享存儲器和所述的備份虛擬共享存儲器的至少其中之一中。
6.根據(jù)權(quán)利要求1的分布式計算系統(tǒng),其特征在于所述的主服務(wù)器還包括一個持續(xù)存儲設(shè)備,所述的至少一個數(shù)據(jù)對象有選擇地存儲在所述的持續(xù)存儲設(shè)備中。
7.根據(jù)權(quán)利要求1的分布式計算系統(tǒng),其特征在于當(dāng)所述的虛擬共享存儲器中的任何數(shù)據(jù)對象的狀態(tài)改變時,所述的主服務(wù)器將給所述的備份服務(wù)器提供一個狀態(tài)表。
8.根據(jù)權(quán)利要求1的分布式計算系統(tǒng),其特征在于所述的至少一個數(shù)據(jù)對象還包括多種類型的數(shù)據(jù)對象。
9.根據(jù)權(quán)利要求1的分布式計算系統(tǒng),其特征在于所述的至少一個工作者進(jìn)程還包括多種類型的工作者進(jìn)程。
10.一種處理數(shù)據(jù)的方法,包括提供一個其中可以存放多個數(shù)據(jù)對象的主虛擬共享存儲器;提供一個與所述的虛擬共享存儲器同步的備份虛擬共享存儲器;對存放在主虛擬共享存儲器中的所述的多個數(shù)據(jù)對象之一執(zhí)行一個工作者進(jìn)程,而無需將所述的工作者進(jìn)程預(yù)先分配給所述的數(shù)據(jù)對象;以及當(dāng)所述的主虛擬共享存儲器不能使用時,對存放在所述的備份虛擬共享存儲器中的所述數(shù)據(jù)對象自動執(zhí)行所述的工作者進(jìn)程。
11.根據(jù)權(quán)利要求10的方法,還包括從外部網(wǎng)絡(luò)接收輸入數(shù)據(jù)包,并將相應(yīng)的數(shù)據(jù)對象存放到所述的主虛擬共享存儲器中。
12.根據(jù)權(quán)利要求10的方法,還包括從所述的主虛擬共享存儲器中移出一個數(shù)據(jù)對象,并將相應(yīng)的數(shù)據(jù)對象傳送到外部網(wǎng)絡(luò)。
13.根據(jù)權(quán)利要求10的方法,其特征在于所述的運行步驟還包括從所述的主虛擬共享存儲器中取出一個具有預(yù)定義模式的數(shù)據(jù)對象;按預(yù)定義的函數(shù)處理該數(shù)據(jù)對象;將修改后的數(shù)據(jù)對象返回到所述的主虛擬共享存儲器中。
14.根據(jù)權(quán)利要求10的方法,還包括有選擇性地將所述的多個數(shù)據(jù)對象中的至少一個存入一個非易失存儲器中。
15.根據(jù)權(quán)利要求10的方法,還包括在所述的主虛擬共享存儲器和所述的備份虛擬共享存儲器之間傳遞一個狀態(tài)表。
全文摘要
一個分布式計算系統(tǒng)包括一個主服務(wù)器和一個備份服務(wù)器,它們分別帶有一個主虛擬共享存儲器和一個備份虛擬共享存儲器。主服務(wù)器周期地給備份服務(wù)器提供一個狀態(tài)表,以使虛擬共享存儲器與備份虛擬共享存儲器同步。眾多的客戶機(jī)資源通過應(yīng)用網(wǎng)絡(luò)技術(shù)與主服務(wù)器和備份服務(wù)器相連??蛻魴C(jī)資源又包括多個工作者進(jìn)程,每個工作者進(jìn)程適用于對存放在主虛擬共享存儲器中的一個數(shù)據(jù)對象獨立地執(zhí)行一種操作,而不需要在它與數(shù)據(jù)對象之間進(jìn)行預(yù)分配,當(dāng)主服務(wù)器或備份服務(wù)器不能使用時,工作者進(jìn)程會對存放在備份虛擬共享存儲器中的相應(yīng)數(shù)據(jù)對象執(zhí)行操作??蛻魴C(jī)資源還包括多個輸入/輸出(I/O)端口,用它們來接收輸入數(shù)據(jù)包和傳送輸出數(shù)據(jù)包。
文檔編號G06F11/00GK1429365SQ01809485
公開日2003年7月9日 申請日期2001年4月10日 優(yōu)先權(quán)日2000年4月13日
發(fā)明者布魯斯·D·羅斯托福斯凱, 托馬斯·H·巴斯切爾, 安德魯·W·派克, 彼得·G·利特斯凱維切 申請人:Gnp計算機(jī)公司